国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      面向生成器圖形的編程和執(zhí)行的制作方法

      文檔序號:6457045閱讀:310來源:國知局

      專利名稱::面向生成器圖形的編程和執(zhí)行的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明的實(shí)施方式涉及計算機(jī)領(lǐng)域;且更具體地,涉及利用運(yùn)行時(runtime)來編程和執(zhí)行代碼的領(lǐng)域。
      背景技術(shù)
      :面向?qū)ο缶幊堂嫦驅(qū)ο缶幊淌且环N計算機(jī)編程范例。在面向?qū)ο缶幊痰暮竺娴睦砟钍怯嬎銠C(jī)程序可以被視為包括相互作用的單個單元(稱為對象或?qū)嵗?的集合,而不是傳統(tǒng)地將程序視為函數(shù)的集合或簡單視為用于計算機(jī)的指令列表。對象是用于將數(shù)據(jù)與操作該數(shù)據(jù)的方法綁定的語言機(jī)制。每一個對象能夠通過方法被調(diào)用、處理數(shù)據(jù)以及向其他對象提供結(jié)果。每一個對象可以被視為具有獨(dú)特角色或職責(zé)的獨(dú)立機(jī)器或施動者。反射式面向?qū)ο蟮恼Z言是具有特定的特性集合的編程語言(例如,類、對象/實(shí)例、繼承、反射等),但是反射式基于對象的語言有時用于標(biāo)記具有這些特性的一些子集(例如對象)的編程語言。出于本文的需要,短語"面向?qū)ο笤创a"以及"面向?qū)ο蟠a"用于指用具有這些特性的語言編寫的代碼(例如,用反射式面向?qū)ο蟮恼Z言編寫的代碼、用反射式基于對象的語言編寫的代碼)。在過程語言、非發(fā)射式面向?qū)ο蟮恼Z言以及非反射式基于對象的語言是一般不支持這些特性的編程語言的情況下,轉(zhuǎn)換技術(shù)可以用于將這些特性提供給(例如,通過仿真)適合用這些語言編寫的代碼;且由此,這些技術(shù)將這些語言轉(zhuǎn)換成反射式基于對象的語言或反射式面向?qū)ο蟮恼Z言。(這些技術(shù)不需要仿真面向或基于對象的語言的所有特性,而是可以只仿真對本文剩余部分感興趣的這些特性)。出于本文的需要,短語"面向?qū)ο笤创a"和"面向?qū)ο蟠a"還可以用于指這些轉(zhuǎn)換后的過程語言代碼、非反射式面向?qū)ο?、以及非反射式基于對象的語言代碼。通過示例的方式而并非限定,本文主要描述用反射式面向?qū)ο蟮恼Z言編寫面向?qū)ο笤创a。同樣,術(shù)語對象和實(shí)例在這里可以互換使用。在面向?qū)ο缶幊讨兄饕褂玫男g(shù)語方法指專門與類(稱作類方法、靜態(tài)方法或工廠方法(factorymethod))或?qū)ο?稱為實(shí)例方法)相關(guān)聯(lián)的一段代碼。如同過程編程語言中的過程,方法通常包括執(zhí)行動作的語句序列、將這些動作參數(shù)化的輸入?yún)?shù)的集合以及可能還有返回的一些種類的輸出值。當(dāng)程序員使用面向?qū)ο笳Z言寫程序時,產(chǎn)生的代碼從概念上可以視為包括四種基本類型的代碼。第一種類型包括操作輸入的實(shí)例以提供輸出實(shí)例的命令(這里稱為"轉(zhuǎn)換"代碼);一般被寫為方法(這里稱為"轉(zhuǎn)換"方法)。第二種類型包括引起運(yùn)行時以實(shí)例化類實(shí)例的實(shí)例實(shí)例化命令(這里被稱為"實(shí)例實(shí)例化"代碼)。第三種包括調(diào)用以上實(shí)例的屬性方法(存取程序、轉(zhuǎn)變器(mutator)等)的屬性操作命令(這里稱為"數(shù)據(jù)準(zhǔn)備"代碼)。第四種包括命令序列,該命令序列使用合適的實(shí)例(其中合適的實(shí)例包括用作參量(argument)的實(shí)例、實(shí)例方法使用的實(shí)例以及類方法使用的元類實(shí)例)啟動方法調(diào)用排序,以規(guī)定什么實(shí)例的什么轉(zhuǎn)換方法被調(diào)用,以什么順序,以及利用哪些實(shí)例的哪些參數(shù)響應(yīng)于數(shù)據(jù)準(zhǔn)備代碼做出的改變(這里稱為"手動調(diào)用排序"代碼)。手動調(diào)用排序代碼有時被編寫為與轉(zhuǎn)換方法分開的方法,且從而手動調(diào)用排序代碼包括用于轉(zhuǎn)換方法的調(diào)用命令序列。程序一般在數(shù)據(jù)準(zhǔn)備代碼與手動調(diào)用排序代碼(其還可以提取(dipinto)實(shí)例實(shí)例化代碼)之間重復(fù),所述手動調(diào)用排序代碼可以再調(diào)用轉(zhuǎn)換代碼(其也可以提取實(shí)例實(shí)例化代碼和數(shù)據(jù)準(zhǔn)備代碼)。應(yīng)當(dāng)理解這是程序的概念性描述,因此,不應(yīng)當(dāng)認(rèn)為在看待程序上是絕對的。運(yùn)行時術(shù)語運(yùn)行時在這里用于指運(yùn)行用相同和/或不同語言編寫的其他代碼的基本代碼的程序或庫。由此,運(yùn)行時是在程序運(yùn)行時(包括與操作系統(tǒng)一起工作以提供功能諸如數(shù)學(xué)函數(shù)、輸入和輸出)支持程序的效用函數(shù)的集合。這些使程序員沒有必要不斷地重新編寫在編程語言中規(guī)定的或操作系統(tǒng)提供的基本能力。由于運(yùn)行時與操作系統(tǒng)之間的區(qū)分可能模糊,因此術(shù)語運(yùn)行時在這里用于指與操作系統(tǒng)分開的代碼和/或是操作系統(tǒng)一部分的代碼。早期運(yùn)行時,例如FORTRAN的運(yùn)行時,提供諸如數(shù)學(xué)運(yùn)算的特征。其他語言添加了更復(fù)雜的特征——例如存儲器無用信息集合,通常與對象支持相關(guān)聯(lián)。最近的語言傾向于具有相當(dāng)大的具有相當(dāng)多功能的運(yùn)行時。許多面向?qū)ο蟮恼Z言還包括已知為"調(diào)度程序"和"類裝載器"的系統(tǒng)。JavaVirtualMachine(JVM)是這種運(yùn)行時的一個示例其還在運(yùn)行時解譯或匯編可動二進(jìn)制Java程序(字節(jié)代碼)。公共語言運(yùn)行時(CLR)框架是運(yùn)行時的另一個示例。編程和執(zhí)行框架一種框架包括三個基本區(qū)域,在該框架中向終端用戶提供應(yīng)用。第一個區(qū)域包括操作系統(tǒng)和運(yùn)行時的創(chuàng)建。該第一個區(qū)域由具有非常高級編程技能的程序員來執(zhí)行。當(dāng)在該區(qū)域工作時,程序員分別被稱為操作系統(tǒng)程序員和運(yùn)行時程序員。當(dāng)創(chuàng)建面向?qū)ο笳Z言的運(yùn)行時的時候,運(yùn)行時程序員支持執(zhí)行在轉(zhuǎn)換代碼、實(shí)例實(shí)例化代碼、數(shù)據(jù)準(zhǔn)備代碼以及手動調(diào)用排序代碼中使用的各種類型的命令(例如,實(shí)例實(shí)例化命令、數(shù)據(jù)準(zhǔn)備命令以及方法調(diào)用命令)。第二個區(qū)域包括由運(yùn)行時運(yùn)行的面向?qū)ο髴?yīng)用源代碼的創(chuàng)建。第二個區(qū)域再次由具有非常高級編程技能以及能理解應(yīng)用的業(yè)務(wù)目的的程序員來執(zhí)行。當(dāng)在該區(qū)域中工作時,程序員被稱為應(yīng)用程序員。當(dāng)用面向?qū)ο蟮木幊陶Z言創(chuàng)建應(yīng)用時,應(yīng)用程序員為要被創(chuàng)建的特定應(yīng)用編寫特定的轉(zhuǎn)換代碼、實(shí)例實(shí)例化代碼、數(shù)據(jù)準(zhǔn)備代碼以及手動調(diào)用排序代碼。作為這些的一部分,如果應(yīng)用需要圖形用戶界面,則應(yīng)用程序員還為特定應(yīng)用設(shè)計圖形用戶界面并編碼;從而還被稱為應(yīng)用設(shè)計者。第三個區(qū)域包括由運(yùn)行時運(yùn)行的應(yīng)用程序的使用。第三個區(qū)域由不需要具有任何編程技能的終端用戶來執(zhí)行。手動調(diào)用排序代碼與應(yīng)用的創(chuàng)建相關(guān)聯(lián)的最大的開銷一般包括手動調(diào)用排序代碼的調(diào)試和/或優(yōu)化。對于數(shù)據(jù)改變的每次時機(jī),應(yīng)用程序員必須考慮其影響并編寫手動調(diào)用排序代碼以使合適實(shí)例的合適轉(zhuǎn)換方法隨著合適的輸入以合適的順序被調(diào)用。應(yīng)用程序員犯的典型錯誤包括1)以錯誤的順序調(diào)用合適實(shí)例的合適轉(zhuǎn)換方法;2)響應(yīng)于一些改變的數(shù)據(jù)忘記包括使一個或多個所需的實(shí)例轉(zhuǎn)換方法被調(diào)用的命令;3)響應(yīng)于一些改變的數(shù)據(jù)包括使不需要的實(shí)例轉(zhuǎn)換方法被調(diào)用的命令(例如,包括調(diào)用不受數(shù)據(jù)改變影響的實(shí)例轉(zhuǎn)換方法的命令)等。通過舉例的方式,生成手動調(diào)用排序代碼的一種技術(shù)是使用觀察者模式(有時稱為"發(fā)布訂閱")以觀察程序中實(shí)例的狀態(tài)。在該觀察者模式中,一個或多個實(shí)例(稱為觀察者或監(jiān)聽者)被注冊(或自己注冊)以觀察被觀察對象(主體)可能引發(fā)的事件??梢砸l(fā)事件的被觀察實(shí)例通常保留注冊的觀察者的集合。當(dāng)事件被引發(fā)時,每一個觀察者從被觀察實(shí)例接收回調(diào)(被觀察實(shí)例調(diào)用注冊的觀察者中的"通知"方法)。通知功能可以傳遞一些觀察者可以使用的參數(shù)(一般是關(guān)于發(fā)生的事件的信息)。每一個觀察者執(zhí)行通知功能,最后在通知出現(xiàn)時定義其自身的行為。被觀察實(shí)例一般具有用于添加新觀察者的注冊方法和用于在事件被引38發(fā)時從將被通知的實(shí)例列表中移除觀察者的非注冊方法。此外,被觀察實(shí)例還可以具有用于暫時停止然后重新啟動調(diào)用以防止多個相關(guān)更新低效層疊的方法。具體地,響應(yīng)于屬性值的改變而被調(diào)用的回調(diào)還常常改變一些其他屬性的值,觸發(fā)另外的回調(diào)等。當(dāng)使用觀察者模式技術(shù)時,編寫手動調(diào)用排序代碼的應(yīng)用程序員通過將觀察者注冊、注銷、停止以及重新啟動到不同的被觀察實(shí)例以及為每一個實(shí)例編寫通知方法和回調(diào)方法來規(guī)定調(diào)用什么示例、用哪種順序以及通過注冊來利用哪個輸入。更具體地,觀察者與被觀測實(shí)例之間的關(guān)系在觀察者模式內(nèi)被本地管理(僅由被觀測實(shí)例單獨(dú)管理,不需要與其他被觀測實(shí)例同步),從而需要根據(jù)多個被觀察實(shí)例來同步事件的手動調(diào)用排序代碼一般是每一個觀察者的特定回調(diào)方法的一部分。重寫、易失性調(diào)用棧(Overwriting,VolatileCallStack)一般的運(yùn)行時使用重寫、易失性調(diào)用棧來堆積當(dāng)前調(diào)用的未完成的調(diào)用。重寫、易失性調(diào)用棧的重寫在于當(dāng)每一次調(diào)用完成時,該棧出棧并拋棄項,而易失性在于該棧在每一次執(zhí)行都被拋棄并重建。一般的運(yùn)行時使用重寫、易失性調(diào)用棧是因為一般的運(yùn)行時響應(yīng)于手動調(diào)用排序代碼的執(zhí)行來將重寫、易失性調(diào)用棧的建立與具有合適輸入的合適實(shí)例的合適轉(zhuǎn)換方法的實(shí)際調(diào)用相結(jié)合。總之,響應(yīng)于手動調(diào)用排序代碼的執(zhí)行,一般的運(yùn)行時一個調(diào)用一個調(diào)用地(在做出每一個調(diào)用時)確定轉(zhuǎn)換方法/實(shí)例排序并保留重寫,易失性調(diào)用棧以只跟蹤當(dāng)前調(diào)用的未完成的調(diào)用。對象關(guān)系映射對象關(guān)系映射是鏈接關(guān)系數(shù)據(jù)庫與面向?qū)ο笳Z言概念的編程技術(shù),(有效地)創(chuàng)建了"虛擬對象數(shù)據(jù)庫"。一些對象關(guān)系映射程序自動保持存儲器中裝載的實(shí)例與數(shù)據(jù)庫穩(wěn)定同步。具體地,在構(gòu)建了對象到SQL的映射查詢之后,首先返回的數(shù)據(jù)被復(fù)制到正在處理的實(shí)例的字段中,例如任意的對象-SQL映射包。一旦這樣,實(shí)例必須查看這些值是否改變,然后謹(jǐn)慎地使進(jìn)程逆向以將數(shù)據(jù)寫回到數(shù)據(jù)庫外部。Hibernate3.0是用于Java和CLR的對象關(guān)系映射方案(喬治亞州亞特蘭大市的Jboss⑧公司)。從而,Hibernate提供用于將面向?qū)ο笥蚰P陀成涞絺鹘y(tǒng)的關(guān)系數(shù)據(jù)庫的框架。其目標(biāo)是將開發(fā)者從一些公共數(shù)據(jù)持續(xù)性相關(guān)的編程任務(wù)中解脫出來。Hibernate處理從類到數(shù)據(jù)庫表的映射(且從面向?qū)ο髷?shù)據(jù)類型到SQL數(shù)據(jù)類型)以及提供數(shù)據(jù)査詢和獲取功能。Hibernate是以實(shí)例為中心并且建立表示實(shí)例之間關(guān)系的圖形??刂频怪煤鸵蕾嚨怪迷砜刂频怪茫脖环Q為IOC,是可以被用于減少計算機(jī)程序中固有的耦合性(每個程序模塊依賴另一個模塊的程度)的面向?qū)ο缶幊淘?。IOC還被稱為依賴倒置原理。在IOC中,如果以下任意一個適用,則類x依賴類y:l)x具有y并調(diào)用y;2)x是y;或者3)x依賴某個類z,而z依賴y(傳遞性)。值得注意x依賴y并不意味著y依賴x;如果兩種情況為真,則稱為循環(huán)依賴性;那么x在沒有y的情況下不能被使用,反之亦然。實(shí)際上,如果(類x的)對象x調(diào)用(類y的)對象y的方法,則類x依賴y。通過引入第三個類即接口類I來倒置依賴性,該接口類I必須包括x可以在y上調(diào)用的所有方法。此外,y必須被改變從而使得y實(shí)施接口I。x和y現(xiàn)在都依賴接口I以及類x不再依賴y(假定x沒有實(shí)例化y)。通過引入接口I來消除類x對y的依賴性被稱為控制倒置(或依賴倒置)。必須注意y可能依賴其他類。在應(yīng)用轉(zhuǎn)換之間,x依賴y并由此x間接依賴y所依賴的所有類。通過應(yīng)用控制倒置,所有這些間接依賴性也被打破了。新引入的接口I不依賴任何類。SpringFramework是用于使用IOC和依賴倒置的Java平臺的開放資源應(yīng)用框架。具體地,SpringFramework的核心是控制容器的倒置,所述控制容器提供配置并管理Java對象的工具。該容器還被稱為BeanFactory、ApplicationContext或Core容器。該容器操作的示例為創(chuàng)建對象、配置對象、調(diào)用初始化方法并將對象傳遞到注冊的回調(diào)對象。由容器創(chuàng)建的對象還被稱為被管理對象(ManagedObjects)或Bean。通常通過裝載包含Bean定義的XML文件來配置容器。這些提供創(chuàng)建對象所需的所有信息。一旦在沒有產(chǎn)生錯誤的條件下創(chuàng)建并配置對象,則對象可使用。通過依賴性查找或依賴性注入可以得到對象。依賴性査找是調(diào)用程序向容器對象請求具有特定名稱或特定類型的對象的方式。依賴性注入是容器經(jīng)由構(gòu)造器、屬性或工廠(factory)方法按名稱將對象傳遞給其他對象。因此,SpringFramework是以存儲器為中心的,并建立表示實(shí)例之間關(guān)系的圖形。圖形工具JavadocTM是解析一組Java資源文件中的聲明和文件注釋并產(chǎn)生對應(yīng)的一組的HTML頁的工具,該HTML頁表示(默認(rèn)地)公共和受保護(hù)類、套嵌類(不是匿名內(nèi)部類)、接口、構(gòu)造器、方法以及字段(加利福尼亞州,圣克拉拉市的SunMicrosystems公司)。Javadoc可以用于生成API(應(yīng)用編程接口)文件或用于一組源文件的執(zhí)行文件。Javadoc是類和方法為中心的并建立表示類的組合及其方法之間的關(guān)系的圖形。用于設(shè)計軟件應(yīng)用的另一個系統(tǒng)包括由解釋器分析的用于表示并復(fù)制計算機(jī)應(yīng)用的對象的圖形。該系統(tǒng)使用存儲在代碼庫中的預(yù)寫編程類,該類可以被編寫以遵循在以下文檔中描述的設(shè)計模式AddisonWesleyl995年出版的Gamma等人的"DesignPattern"、ComputerPublishing1998年出版的41Grand,Wiley的"PatterninJava"、和/或高級計算機(jī)輔助軟件工程(CASE)工具。更具體地,一些這樣的類基于觀察者行為方式。預(yù)編寫的代碼庫表示應(yīng)用狀態(tài)節(jié)點(diǎn)、處理邏輯以及不同應(yīng)用狀態(tài)間的系統(tǒng)數(shù)據(jù)流(即,預(yù)編寫的應(yīng)用數(shù)據(jù)元素),從而用戶在創(chuàng)建軟件應(yīng)用時不需要編寫、編輯或編譯代碼。而是,用戶通過編輯與當(dāng)前應(yīng)用狀態(tài)節(jié)點(diǎn)相關(guān)聯(lián)的可視對象(例如應(yīng)用狀態(tài)節(jié)點(diǎn)中的數(shù)據(jù)或在應(yīng)用狀態(tài)節(jié)點(diǎn)中執(zhí)行的進(jìn)程)來手動編輯圖形用戶界面中的軟件應(yīng)用。之后,基于用戶對當(dāng)前應(yīng)用狀態(tài)節(jié)點(diǎn)做出的改變,解釋器針對剛被編輯的應(yīng)用狀態(tài)向用戶顯示更新后的應(yīng)用狀態(tài)。系統(tǒng)然后可以沿著用戶定義的過渡邊緣過渡到另一個應(yīng)用狀態(tài),在該另一個應(yīng)用狀態(tài)用戶可以編輯下一個應(yīng)用狀態(tài)或過度邊緣。在軟件應(yīng)用運(yùn)行時可以對解釋器執(zhí)行的圖形實(shí)例做出圖形改變。用于設(shè)計軟件應(yīng)用的系統(tǒng)可以包括運(yùn)行軟件應(yīng)用的可視表示,該運(yùn)行軟件應(yīng)用可以被制定為利用應(yīng)用控制器"可以被用"。當(dāng)用戶改變表示運(yùn)行軟件應(yīng)用的可視對象時,控制器使用輸入來促使解釋器改變圖形。然后控制器等待更多的改變。此外,這種軟件應(yīng)用的可視表示可以作為XML文件被輸入或輸出,該XML文件描述應(yīng)用的可視表示從而描述軟件應(yīng)用。為了以節(jié)點(diǎn)、定向的邊緣以及應(yīng)用狀態(tài)的可視表示的形式編輯和/或創(chuàng)建軟件應(yīng)用,系統(tǒng)還可以包括應(yīng)用程序接口和應(yīng)用編輯器。來自預(yù)編寫的代碼庫中的關(guān)鍵詞和相關(guān)定義使應(yīng)用開發(fā)者能手動定義軟件應(yīng)用、處理步驟,以及通過在編輯器中提供圖形應(yīng)用的圖形表示得到的軟件應(yīng)用的可視表示,所述圖形應(yīng)用與實(shí)際應(yīng)用結(jié)構(gòu)密切相關(guān)。用戶通過"應(yīng)用定義向?qū)?定義新應(yīng)用,該"應(yīng)用定義向?qū)?在完成某些初步事情后將新應(yīng)用顯示為編輯器工作區(qū)中的圖形組件。用戶還通過使用電腦鼠標(biāo)和鍵盤從顯示的預(yù)先創(chuàng)建的可能應(yīng)用組件列表中選擇并將組件拖動并放入工作區(qū)來與應(yīng)用交互。用戶可以選擇組件并在已有的組件上"拖動"組件。當(dāng)新組件"落到"已有組件上,則該新組件成為應(yīng)用圖形中已有組件的子組件。應(yīng)用中的組件的關(guān)系由編輯器中的用戶選擇手動定義。因此用戶建立表示應(yīng)用的樹結(jié)構(gòu)。當(dāng)應(yīng)用被創(chuàng)建,用戶可以選擇應(yīng)用導(dǎo)航視窗來顯示構(gòu)建的應(yīng)用的樹視圖,該樹視圖能夠選擇并編輯應(yīng)用的任何組件。編輯器界面處理用戶輸入和選擇,包括創(chuàng)建或刪除應(yīng)用元素、更新組件屬性以及更新應(yīng)用的顯示屬性。上述的系統(tǒng)在使用軟件應(yīng)用的可視表示時還可以用作定義并更新相關(guān)數(shù)據(jù)庫的可視編程工具。系統(tǒng)使用軟件應(yīng)用的可視表示的XML描述。工具解析并解釋XML描述以產(chǎn)生等價的關(guān)系數(shù)據(jù)庫表圖示以及該圖示的改變。當(dāng)數(shù)據(jù)在軟件應(yīng)用的可視表示內(nèi)發(fā)生改變時,該改變的描述與其他改變一起被存儲在日志文件中且之后被作為分組處理。中間程序(在其自身的線程上操作的java應(yīng)用程序)執(zhí)行軟件應(yīng)用的可視表示與關(guān)系數(shù)據(jù)庫之間的事務(wù)。Java應(yīng)用程序輪詢(即,檢查)可視表示(即數(shù)據(jù)庫中的數(shù)據(jù))的節(jié)點(diǎn)改變的日志,且如果存在改變,就對數(shù)據(jù)庫做出更改。因此,通過更換可視表示中的數(shù)據(jù),系統(tǒng)可以更新數(shù)據(jù)庫。相似的應(yīng)用程序在軟件應(yīng)用程序的可視表示與處理來自數(shù)據(jù)庫的數(shù)據(jù)請求的數(shù)據(jù)庫之間也是有效的。用于分析軟件的另一種系統(tǒng)稱為代碼樹分析器(CTA)。CTA分析用面向?qū)ο缶幊陶Z言編寫的靜態(tài)源代碼。CTA從靜態(tài)源代碼中生成符號表和調(diào)用樹。使用符號表,CTA生成類圖。類似地,使用調(diào)用樹,CTA生成序列圖。類圖闡釋用戶選擇的類和與所述用戶選擇的類相關(guān)的類之間的關(guān)系。序列圖闡釋不同方法被調(diào)用的順序。通過使用類圖和序列圖,CTA生成表示靜態(tài)源代碼的設(shè)計制品。當(dāng)用戶修改所述設(shè)計制品時,CTA使用序列圖來標(biāo)識源代碼的受影響的部分。所述設(shè)計制品用于代碼維護(hù)和/或靜態(tài)源代碼的逆向工程
      發(fā)明內(nèi)容描述了用于面向生成器圖形編程和執(zhí)行的方法和設(shè)備。根據(jù)本發(fā)明的一個方面,提供了為方法解釋生成器依賴性聲明的運(yùn)行時。所述生成器依賴性聲明在運(yùn)行時標(biāo)識一組零個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),包括至少實(shí)例和與實(shí)例相關(guān)的方法。運(yùn)行時響應(yīng)于對要被實(shí)例化的感興趣生成器的命名(designation)的接收而自動生成和執(zhí)行,所述感興趣生成器的方法具有生成器依賴性聲明和生成器圖形。生成器圖形初始包括感興趣生成器,并從感興趣生成器到源生成器,通過基于己經(jīng)在生成器圖形中的生成器的方法的生成器依賴性聲明來實(shí)例化生成器從而生成生成器圖形。通過參照以下描述和附圖可以更好地理解本發(fā)明,附圖用于圖示本發(fā)明的實(shí)施方式,其中圖1A是示出了根據(jù)本發(fā)明一個實(shí)施方式的對面向?qū)ο笤创a中類的方法的生成器依賴性聲明與包括類、該類的給定實(shí)例和該類的方法的生成器的關(guān)系的框圖1B示出了根據(jù)本發(fā)明一個實(shí)施方式的生成器110A與父生成器114A.1之間的示例性關(guān)系;圖1C示出了根據(jù)本發(fā)明一個實(shí)施方式的生成器110A與子生成器112A.1之間的示例性關(guān)系;圖1D示出了根據(jù)本發(fā)明的一個實(shí)施方式的父生成器114和子生成器112到生成器110A的示例性關(guān)系組合;圖1E示出了根據(jù)本發(fā)明的一個實(shí)施方式的相同類的不同實(shí)例可以具有基于相同和/或不同方法的生成器;圖2是示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時的可重復(fù)使用性的框44圖3A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時的框圖3B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有面向生成器圖形的編程支持的運(yùn)行時的框圖,該支持還支持增量執(zhí)行(incrementalexecution)和被覆蓋(override)的生成器的輸出;圖4A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖4B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖4A中生成器圖形的初始執(zhí)行的框圖4C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖4B中的生成器圖形的增量執(zhí)行的框圖4D是示出了根據(jù)本發(fā)明的一個實(shí)施方式的在相關(guān)生成器2被覆蓋后的圖4B中生成器圖形的增量執(zhí)行的框圖4E是示出了根據(jù)本發(fā)明的一個實(shí)施方式的在相關(guān)生成器2被覆蓋且無關(guān)源生成器3被修改后圖4B中生成器圖形的增量執(zhí)行的框圖5A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的包括未解析的依賴性的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖5B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行以及對未解析依賴性的解析的框圖5C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行和/或圖5B中生成器圖形的重新執(zhí)行的框圖5D是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行和/或圖5B或5C中生成器圖形的重新執(zhí)行的框圖6是示出了根據(jù)本發(fā)明的一個實(shí)施方式的運(yùn)行時客戶端的邏輯執(zhí)行流以及其與具有面向生成器圖形編程支持的運(yùn)行時的關(guān)系的流程圖;圖7A示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用快捷被聲明依賴性的方法的生成器依賴性聲明的偽代碼;圖7B是根據(jù)本發(fā)明的一個實(shí)施方式的示例性生成器的框圖7C示出了使用非快捷被聲明依賴性的方法的生成器依賴性聲明的偽代碼,并示出了示例性生成器的框圖7D示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷依賴性的方法的生成器依賴性聲明的偽代碼;圖7E是根據(jù)本發(fā)明的一個實(shí)施方式的示例性生成器的框圖7F是根據(jù)本發(fā)明的一個實(shí)施方式的通過使用具有依賴性確定生成器的向上依賴性的示例性依賴性的框圖7G是根據(jù)本發(fā)明的一個實(shí)施方式的通過使用具有依賴性確定生成器的弱約束依賴性(WeaklyConstrainedDependency)的可能的示例性依賴性的框圖7H示出了根據(jù)本發(fā)明的一個實(shí)施方式的標(biāo)準(zhǔn)生成器的示例性生成器圖形;圖71示出了生成器依賴性以及用于發(fā)現(xiàn)、解析并建立圖7H中的生成器圖形的依賴性確定生成器的一個示例;圖8A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的第一示例性框架的框圖,其中在該框架中應(yīng)用被提供給終端用戶;圖8B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的第二示例性框架的框圖,其中在該框架中應(yīng)用被提供給終端用戶;圖8C示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的自由單元選擇的示例性屏幕截圖以及使用;圖8D示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置的交互式生成器46輸出布局的圖形用戶界面模塊840的自由單元選擇的另一個示例性屏幕截圖以及使用;圖8E示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的表格創(chuàng)建的示例性屏幕截圖以及使用;圖8F示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置的交互式生成器輸出布局的圖形用戶界面模塊840的表格創(chuàng)建的另一個示例性屏幕截圖以及使用;圖9A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時的第一方案的框圖9B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時的第二方案的框圖9C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時的第三方案的框圖IO是根據(jù)本發(fā)明的一個實(shí)施方式的示例性實(shí)施的框圖IIA是根據(jù)本發(fā)明的一個實(shí)施方式的圖IO中類跟蹤結(jié)構(gòu)1092的示例的框圖11B是根據(jù)本發(fā)明的一個實(shí)施方式的圖10中實(shí)例跟蹤結(jié)構(gòu)1065的示例的框圖IIC是根據(jù)本發(fā)明的一個實(shí)施方式的圖10中生成器圖形結(jié)構(gòu)1060的示例的框圖IID是根據(jù)本發(fā)明的一個實(shí)施方式的圖10中方法跟蹤結(jié)構(gòu)1058的示例的框圖12是示出了根據(jù)本發(fā)明的一個實(shí)施方式的支持偶然(contingent)和訂閱類型的動態(tài)生成器依賴性的圖10中另外細(xì)節(jié)的框圖13A示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明、非動態(tài)(非偶然、非訂閱)的依賴性的方法的生成器依賴性聲明的偽代碼;圖13B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性非快捷被聲明、非動態(tài)(非偶然、非訂閱)的生成器依賴性的生成器的框圖13C示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13D是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性非快捷被聲明、偶然、非訂閱的生成器依賴性的生成器的框圖13E示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13F是示出了根據(jù)本發(fā)明的一個實(shí)施方式的非快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、偶然、非訂閱的生成器依賴性的生成器的框圖13G示出根據(jù)本發(fā)明的一個實(shí)施方式的使用快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、非偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13H是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、非偶然、非訂閱的生成器依賴性的生成器的框圖13I示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用快捷被聲明、非動態(tài)(非偶然、非訂閱)的生成器依賴性的方法的生成器依賴性聲明的偽代碼;圖13J是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性快捷被聲明、非動態(tài)的生成器依賴性的生成器框圖14A是根據(jù)本發(fā)明的一個實(shí)施方式的圖12中的訂閱日志1250的示例的框圖;圖14B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的非偶然、吸收訂閱(absorbingsubscription)的生成器依賴性的示例性生成器的框圖14C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的非偶然、粘附訂閱(stickysubscription)的生成器依賴性的示例性生成器的框圖14D示出了根據(jù)本發(fā)明的一個實(shí)施方式的基于由粘附訂閱創(chuàng)建的父依賴性確定生成器的父生成器的選擇;圖14E示出了根據(jù)本發(fā)明的一個實(shí)施方式的基于由子依賴性確定生成器創(chuàng)建的父依賴性確定生成器的父生成器的選擇,所述子依賴性確定生成器通過對依賴性排序而被鏈接;圖15是根據(jù)本發(fā)明的一個實(shí)施方式的實(shí)例化新實(shí)例的流程圖16是根據(jù)本發(fā)明的一個實(shí)施方式的實(shí)例化新生成器且不覆蓋生成器的流程圖17是根據(jù)本發(fā)明的一個實(shí)施方式的圖16中的塊1650的流程圖;圖18是根據(jù)本發(fā)明的一個實(shí)施方式的圖17中的塊1745的流程圖;圖19是根據(jù)本發(fā)明的一個實(shí)施方式的圖16中的塊1630的流程圖;圖20是根據(jù)本發(fā)明的一個實(shí)施方式的圖16中的塊1635和塊1670的流程圖21是根據(jù)本發(fā)明的一個實(shí)施方式的覆蓋生成器的流程圖;圖22A是根據(jù)本發(fā)明的一個實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的一部分;圖22B是根據(jù)本發(fā)明的一個實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的另一部分;圖23是根據(jù)本發(fā)明的一個實(shí)施方式的圖22中的塊2205的流程圖;圖24是根據(jù)本發(fā)明的一個實(shí)施方式的圖22中的塊2225的流程圖;以及圖25是根據(jù)本發(fā)明的一個實(shí)施方式的圖22的塊2260的流程圖。具體實(shí)施例方式在以下的描述中,例如邏輯執(zhí)行、操作碼、規(guī)定操作數(shù)的方法、資源劃分/共享/復(fù)制執(zhí)行、系統(tǒng)組件的類型和相互關(guān)系以及邏輯劃分/集成選擇的多個具體細(xì)節(jié)被提出以為本發(fā)明提供更全面的理解。但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在沒有這些具體細(xì)節(jié)的情況下本發(fā)明也能實(shí)施。在其它的情況,沒有具體示出控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)以及全軟件指令序列以避免使本發(fā)明晦澀。本領(lǐng)域技術(shù)人員在有了這些描述后能夠在沒有不適當(dāng)?shù)膶?shí)驗的情況下能實(shí)現(xiàn)合適的功能。除非另有規(guī)定,否則圖中的虛線(虛分界線除外)用于表示圖中可選項。但是不應(yīng)該認(rèn)為所有的可選項都是使用虛線來顯示的,而是用虛線顯示的這些項由于各種原因被選擇(例如,它們可以很容易地被顯示以提供更好的清晰度等)。說明書中的引用"一個實(shí)施方式"、"實(shí)施方式"、"示例性實(shí)施方式"等表示所述的實(shí)施方式可以包括特定的特征、結(jié)構(gòu)或特性,但是每一個實(shí)施方式不用必須包括所述特定的特征、結(jié)構(gòu)或特性。此外,這些短語不一定是指同一個實(shí)施方式。再者,當(dāng)結(jié)合實(shí)施方式描述特定的特征、結(jié)構(gòu)或特性時,可以理解,無論是否明確描述,改變與實(shí)施方式有關(guān)的這些特征、結(jié)構(gòu)或特性是本領(lǐng)域技術(shù)人員所了解的。在下面的描述和權(quán)利要求中,可能使用了術(shù)語"耦合"和"連接"以及它們的派生詞。應(yīng)當(dāng)理解這些術(shù)語不是彼此的同義詞。而是,在特定實(shí)施方式中,"連接"可以用于表示兩個或多個元件彼此直接接觸。"耦合"可以表示兩個或多個元件直接連接。但是"耦合"還可以表示兩個或多個元件彼此沒有直接連接,但仍然互相合作或相互作用。在一些情況下,參考其他框圖的示例性實(shí)施方式來描述流程圖的操作。然而,應(yīng)當(dāng)理解,流程圖的操作可以被本發(fā)明的實(shí)施方式執(zhí)行而不是被參考其他框圖論述的實(shí)施方式來執(zhí)行,且參考其他框圖論述的本發(fā)明的實(shí)施方式可以執(zhí)行與參考流程圖而論述的操作不同的操作??梢允褂么鎯υ谝粋€或多個計算機(jī)上并在該一個或多個計算機(jī)上執(zhí)行的代碼和數(shù)據(jù)來執(zhí)行圖中所示的技術(shù)。該計算機(jī)使用諸如機(jī)器存儲介質(zhì)(例如,磁盤、光盤、隨機(jī)存取存儲器、只讀存儲器、閃存裝置)的機(jī)器可讀介質(zhì)來存儲代碼和數(shù)據(jù)并使用機(jī)器通信介質(zhì)(例如,電、光、聲或其他形式的傳播信號一例如載波、紅外信號、數(shù)字信號等)傳送(在內(nèi)部和通過網(wǎng)絡(luò)與其他計算機(jī))該代碼和數(shù)據(jù)。此外,該計算機(jī)通常包括一組一個或多個處理器,該處理器與一個或多個其他組件耦合,例如存儲裝置、多個用戶輸入/輸出裝置(例如鍵盤和顯示器)以及網(wǎng)絡(luò)連接。該組處理器與其他組件的耦合一般通過一個或多個總線和橋(也稱為總線控制器)。存儲裝置和網(wǎng)絡(luò)流量分別表示一個或多個機(jī)器存儲介質(zhì)和機(jī)器通信介質(zhì)。因此,給定計算機(jī)系統(tǒng)的存儲裝置一般存儲用于在該計算機(jī)的所述一組一個或多個處理器上執(zhí)行的代碼和數(shù)據(jù)。當(dāng)然,可以使用軟件、固件和/或硬件的不同組合來實(shí)施本發(fā)明的實(shí)施方式的一個或多個部分。概述根據(jù)本發(fā)明的一個方面,生成器是至少一個特定實(shí)例(或?qū)ο?和特定方法,從而如果在運(yùn)行時期間執(zhí)行該生成器,則該特定方法在特定實(shí)例上被執(zhí)行。由此,給定的生成器根據(jù)給定實(shí)例以及與該實(shí)例相關(guān)聯(lián)的給定方法而被實(shí)例化。如類、實(shí)例和方法,生成器是運(yùn)行時處理的基本元素和結(jié)構(gòu)。因此運(yùn)行時解釋并跟蹤生成器的實(shí)例化,且由此運(yùn)行時跟蹤由生成器表示的實(shí)例和方法的組合。換句話說,生成器是由運(yùn)行時跟蹤、執(zhí)行的運(yùn)行時可實(shí)例化的結(jié)構(gòu),且包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,從而運(yùn)行時執(zhí)行生成器使該生成器的方法在生成器的實(shí)例上被執(zhí)行。此外,生成器的方法與其生成器依賴性聲明相關(guān)聯(lián),該聲明為給定生成器標(biāo)識一組零個或多個生成器依賴性、一組零個或多個生成器。具體地,使用生成器依賴性聲明來為方法聲明生成器依賴性,用于給定方法的生成器依賴性聲明可以包括零個或多個生成器依賴性,且每一個生成器依賴性標(biāo)識一組零個或多個生成器。因此,生成器依賴性聲明以及該聲明定義的生成器依賴性由運(yùn)行時來解釋并跟蹤,且由此運(yùn)行時跟蹤生成器依賴性聲明指示的生成器之間的關(guān)系。當(dāng)給定生成器依賴于一組一個或多個其他生成器時,運(yùn)行時將確保在給定生成器之前執(zhí)行所述一組其他生成器。因此,生成器依賴性聲明表示生成器之間的執(zhí)行關(guān)系,而生成器表示將被執(zhí)行的操作(方法)和實(shí)例。當(dāng)在本發(fā)明的一些實(shí)施方式中,允許子生成器上的父生成器的生成器依賴性在與父生成器的方法相關(guān)聯(lián)的生成器依賴性聲明中被聲明(父生成器的生成器依賴性聲明標(biāo)識任意子生成器——這里稱為向下聲明),本發(fā)明的其他實(shí)施方式還允許依賴性在與子生成器的方法相關(guān)聯(lián)的生成器依賴性聲明中被聲明(子生成器的生成器依賴性聲明標(biāo)識一個或多個父生成器一這里稱為向上聲明)。在本發(fā)明的不同實(shí)施方式中,生成器標(biāo)識另外的事情。例如,當(dāng)在本發(fā)明的某些實(shí)施方式中,生成器是至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,在本發(fā)明的其他實(shí)施方式中,生成器是類、類的實(shí)例以及與該實(shí)例相關(guān)聯(lián)的方法(例如,生成器可以直接包括類、實(shí)例以及方法;生成器可以直接包括實(shí)例和方法,而通過引用(例如,實(shí)例中的引用)間接標(biāo)識該實(shí)例的類)。在本發(fā)明可以用于用不同編程語言(例如,用反射式面向?qū)ο蟮恼Z言編寫的面向?qū)ο蟠a;用反射式基于對象的語言編寫的面向?qū)ο蟠a;用過程、非反射式面向?qū)ο?、非反射式基于對象的語言編寫并轉(zhuǎn)換成面向反射對象語言代碼的代碼)編寫的代碼上下文中的同時,參考反射式面向?qū)ο缶幊陶Z言并參考直接包括類、實(shí)例和方法的生成器,以舉例而非限定的方式來描述本發(fā)明的實(shí)施方式。此外,雖然在本發(fā)明的一個實(shí)施方式中生成器的方法是實(shí)例方法(除了作為參量被接收的任何輸入,還可以使用實(shí)例字段的方法),本發(fā)明的可替換實(shí)施方式還可以或可替換地支持為類方法的生成器的方法(接收所有輸入作為參量和/或使用實(shí)例無關(guān)變量的方法)(當(dāng)生成器的方法是實(shí)例方法時,生成器的實(shí)例是類實(shí)例;而當(dāng)生成器的方法是類方法時,該生成器的實(shí)例是表示該類的元類實(shí)例)。圖1A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的對面向?qū)ο笤创a中類的方法與生成器的生成器依賴性聲明的關(guān)系的框圖,所述生成器包括類、該類的給定實(shí)例以及該類的方法。在圖1A中,顯示了面向?qū)ο笤创a100,其包括類102,而類102包括方法104以及用于方法104的生成器依賴性聲明106。當(dāng)然類102—般包括一個或多個字段(未顯示)和另外的方法(未顯示)。另外,面向?qū)ο笤创a100—般包括另外的類。在運(yùn)行時期間,類102的實(shí)例108被實(shí)例化。實(shí)例108包括類102的字段數(shù)據(jù)。另外,生成器110被實(shí)例化,其中生成器110標(biāo)識類102、類102的實(shí)例108(與類102的方法104相關(guān)聯(lián))以及類102的方法104。生成器依賴性聲明106向運(yùn)行時標(biāo)識一組零個或多個生成器112(稱為生成器110的子生成器),該一組零個或多個生成器112在執(zhí)行生成器110之前必須被執(zhí)行。換句話說,生成器110依賴一組零個或多個生成器112。除了或代替使用一組生成器112的輸出,生成器110可以使用實(shí)例108的數(shù)據(jù)。此外,生成器IIO提供至少一個輸出,輸出可以在實(shí)例108的內(nèi)部(從而修改實(shí)例108的數(shù)據(jù))和/或外部;任何一種方式,生成器110的輸出可以被一組零個或多個其他生成器114(稱為生成器110的父生成器)使用。如之前所示和之后所詳細(xì)描述的,在本發(fā)明的一些實(shí)施方式中,生成器依賴性聲明106還可以向運(yùn)行時標(biāo)識零個或多個生成器114。應(yīng)當(dāng)理解生成器的輸入和輸出是基于方法的輸入和輸出,這些生成器基于該方法。這樣,這些輸入和輸出可以表示具有各種數(shù)據(jù)結(jié)構(gòu)的多個參數(shù)。用于給定方法的生成器依賴性聲明在運(yùn)行時標(biāo)識被實(shí)例化并執(zhí)行的一組零個或多個生成器。通過示例的方式,如果用于給定方法(例如方法104)的生成器依賴性聲明(例如生成器依賴性聲明106)在給定生成器(例如該組生成器112中的一個)(該給定生成器標(biāo)識第一類、該類的第一實(shí)例以及該第一類的第一方法)上標(biāo)識生成器依賴性,則給定方法的生成器依賴性聲明向運(yùn)行時標(biāo)識第一實(shí)例將被實(shí)例化(如果還沒有)和第一方法將用于實(shí)例化第一實(shí)例的給定生成器(在這些示例中,第一不是指位置或順序)。在操作中,當(dāng)在運(yùn)行時期間給定的一組一個或多個生成器被指定為感興趣的且具有為它們聲明的生成器依賴性時,則運(yùn)行時1)基于生成器依賴性聲明從指定為感興趣的給定的一組生成器向下至源生成器,自動生成(發(fā)現(xiàn)、建立以及可選地解析)一組一個或多個圖形,該圖形可以是多級和各種形狀(例如,鏈形、樹形);2)順序執(zhí)行所述一組圖形的生成器以生成指定為感興趣的給定的一組生成器的輸出。因此,運(yùn)行時使用生成器依賴性聲明來確定在哪些實(shí)例上執(zhí)行具有哪些參量的哪些方法以及何時用于同步。因而,生成器依賴性向運(yùn)行時表示生成器的執(zhí)行順序。但是,在本發(fā)明的不同實(shí)施方式中,除了指示執(zhí)行順序,生成器依賴性還表示不同的輸入與輸出的關(guān)系。例如,本發(fā)明的不同實(shí)施方式可以支持一個或多個參量生成器依賴性、字段生成器依賴性以及僅排序的(sequencingonly)生成器依賴性(僅排序的生成器依賴性這里稱為速記排序生成器依賴性)。當(dāng)每一個參量生成器依賴性、字段生成器依賴性以及排序生成器依賴性表示生成器之間的執(zhí)行順序關(guān)系時,參量和字段生成器依賴性還表示運(yùn)行時知道的數(shù)據(jù)。具體地,參量生成器依賴性使運(yùn)行時將作為輸入?yún)?shù)的子生成器的輸出映射到父生成器,而字段生成器依賴性指示實(shí)例的字段的使用。不管生成器依賴性表示的輸入與輸出的關(guān)系如何,恰當(dāng)使用生成器依賴性能確保生成器訪問信息在影響該信息的生成器之后被排序。排序依賴性可以用于多種目的,包括確保以運(yùn)行時不知道的方式修改數(shù)據(jù)的生成器與使用該數(shù)據(jù)的生成器之間的執(zhí)行順序(子生成器可以以需要父生成器的方法來包括代碼以訪問輸出的方式來編寫其輸出(例如,通過影響不是常規(guī)生成器輸出且不被運(yùn)行時檢測的輸出來影響環(huán)境的方法,不檢測該方法一例如設(shè)定全局變量的方法、設(shè)定不是生成器輸出的實(shí)例中的字段的方法、影響外部數(shù)據(jù)源的方法等))。因此,排序依賴性在子生成器上反映父生成器的依賴性,但是需要被提供的輸出(如果有),該輸出通過編寫代碼一次又一次產(chǎn)生而被提供(例如,寫入輸出到給定機(jī)制(例如設(shè)定全局變量、影響外部數(shù)據(jù)源、設(shè)定不是生成器輸出的實(shí)例的字段等)的子生成器的方法中的代碼和從給定機(jī)制讀出該輸出的父生成器的方法中的代碼)。以這種方式,排序依賴性允許運(yùn)行時對依賴運(yùn)行時不能檢測的輸出的任意父生成器的執(zhí)行進(jìn)行同步。在本發(fā)明的一個實(shí)施方式中,用于給定方法的生成器依賴性聲明在生成器上只標(biāo)識直接依賴性(例如,直接繼承(子),與間接繼承不一樣(孫子、曾孫子等))。在這樣的實(shí)施方式中,每一個生成器依賴性聲明只提供生成器的一個等級或?qū)?,該生成器的輸出可以被根?jù)給定方法實(shí)例化的生成器直接使用;將生成器圖形的另外層的發(fā)現(xiàn)/建立/解析留給其他生成器依賴性聲明的運(yùn)行時處理。示例性關(guān)鍵字生成器可以被視為一組多個標(biāo)識符,一個標(biāo)識符用于每一個指定粒度(granularity)的另外等級(類、實(shí)例和方法等)。此外,本發(fā)明的一些實(shí)施方式將每一個標(biāo)識符實(shí)施為單獨(dú)的關(guān)鍵字,而其他實(shí)施方式具有共享關(guān)鍵字的某些標(biāo)識符。通過示例的方式,本發(fā)明的一些實(shí)施方式將生成器實(shí)施為類、實(shí)例以及方法三元組并實(shí)施關(guān)鍵字,從而三元組的每一個部分由單獨(dú)的關(guān)鍵字來標(biāo)識(類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字)且生成器由類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字的組合(生成器關(guān)鍵字)來標(biāo)識。使用關(guān)鍵字的本發(fā)明的實(shí)施方式可以改變使用的關(guān)鍵字的唯一性。例如,在本發(fā)明的一個實(shí)施方式中,每一個類關(guān)鍵字是唯一的,每一個實(shí)例關(guān)鍵字在所有類的所有實(shí)例中是唯一的,且每一個方法關(guān)鍵字在所有類的所有方法中是唯一的。作為另一個示例,在本發(fā)明的另一個實(shí)施方式中,每一個類具有唯一的關(guān)鍵字,每一個給定類的實(shí)例具有唯一的關(guān)鍵字(在類實(shí)例中),以及每個類的方法具有唯一的關(guān)鍵字(在類方法中);但是不同類的實(shí)例可以具有相同的實(shí)例關(guān)鍵字,且不同類的方法可以具有相同的方法關(guān)鍵字;后者的方法可以以舉例而非限定的方式用于本文的后面的部分。例如,假定第一類包括方法并具有用于這些方法中每一個的在第一類中是唯一的關(guān)鍵字,則該類的實(shí)例(每一個實(shí)例具有的關(guān)鍵字相較于另一個是唯一的)具有與其相關(guān)聯(lián)的相同的方法關(guān)鍵字。作為另一個示例,假定不同的第二類包括方法(與第一類的方法有一些、全部或沒有相同),該方法具有與用于第一類的關(guān)鍵字相同的關(guān)鍵字;這樣,該不同類的實(shí)例可以與和第一類的實(shí)例相關(guān)聯(lián)的相同的方法相關(guān)聯(lián)。關(guān)鍵字的使用允許多個特征,包括1)生成器標(biāo)識符標(biāo)識的每一個實(shí)體的跟蹤(例如,每一個類、實(shí)例和方法的跟蹤);2)基于父生成器的生成器依賴性聲明(該聲明使用生成器關(guān)鍵字規(guī)定生成器依賴性)連接到相同子生成器的一些父生成器(不知道相互的存在);等等。在本發(fā)明的一個實(shí)施方式中,實(shí)例關(guān)鍵字是擁有兩個元素的類的實(shí)例(實(shí)例關(guān)鍵字)實(shí)例關(guān)鍵字性質(zhì),指示關(guān)鍵字指示符是否是對實(shí)例或?qū)α硪粋€對象(例如,字符串)的引用;以及關(guān)鍵字指示符,該關(guān)鍵字指示符可以是實(shí)例或另一個對象(例如,字符串)的引用。在實(shí)例關(guān)鍵字中存儲實(shí)例引用可以讓程序員不用為標(biāo)識這些實(shí)例而起名字。示例性關(guān)系在關(guān)于生成器被視為一組多個標(biāo)識符(一個標(biāo)識符用于所規(guī)定粒度的每一個另外層)的上述上下文中,在本發(fā)明的一個實(shí)施方式中,生成器及其子生成器和父生成器之間的各種支持的關(guān)系是至少一個所述標(biāo)識符在生成器和其一組零個或多個父生成器之間不同,且至少一個所述標(biāo)識符在生成器和其一組零個或多個子生成器的每一個之間不同。通過提供一些示例性關(guān)系,假定第一生成器被實(shí)例化,如果第一生成器是第一類的第一實(shí)例和第一類的第一方法,并假定用于該第一方法的生成器依賴性聲明在運(yùn)行時將第二生成器標(biāo)識為子生成器,那么第二生成器可以是1)第一類的第一實(shí)例和該第一類的第二方法;2)第一類的第二實(shí)例和該第一類的第二方法;3)第一類的第二實(shí)例和該第一類的第一方法;或4)第二類的實(shí)例和該第二類的方法。這種情況,第一生成器依賴于第二生成器一由此,在第二生成器上表示第一生成器的輸入與輸出的關(guān)系。以下對使用面向?qū)ο笳Z言的本發(fā)明的一個實(shí)施方式描述各種關(guān)系和這些關(guān)系的組合,且其中生成器標(biāo)識至少一個類、實(shí)例和方法。圖1B-1D示出了根據(jù)本發(fā)明的一個實(shí)施方式的給定生成器、其一組父生成器以及其一組子生成器之間的示例性關(guān)系。圖1B-1D每一個示出了1)類定義102A,包括方法104A-C和分別用于這些方法的每一個的生成器依賴性聲明106A-C;2)類定義102B,包括方法104D-E和分別用于這些方法的每一個的生成器依賴性聲明106D-E;3)類定義102C,包括方法104F和用于該方法的生成器依賴性聲明106F;4)類102A的實(shí)例108A;5)生成器110A,該生成器112A標(biāo)識類102A、實(shí)例108A以及方法104A;以及6)生成器112A.1和生成器114A.1,分別表示一組生成器112和一組生成器114中的一個。圖1B-1D中在其上具有帶框的字母的虛線用于表示示例性關(guān)系。因此,在其上具有帶框的A的虛線的集合表示一種關(guān)系。圖1B中的關(guān)系可以與圖1C中的關(guān)系結(jié)合;這樣,這些結(jié)合表示父生成器114A和子生成器112A到生成器110A之間的關(guān)系的組合。此外,圖1D示出了父生成器114A和子生成器112A到生成器110A之間的關(guān)系的一些另外的示例性組合。圖1B示出了根據(jù)本發(fā)明的一個實(shí)施方式的生成器110A與父生成器114A.1之間的示例性關(guān)系。圖1B還包括實(shí)例108B。一組生成器114由相同類的不同方法、相同類的不同實(shí)例和/或不同類的方法的其他生成器依賴性聲明來標(biāo)識;且由此,一組生成器114的每一個可以是1)與生成器110A相同的實(shí)例(類102A的實(shí)例108A)和與該實(shí)例相關(guān)的不同方法(由從實(shí)例108A到生成器114A.1以及從方法104B到生成器114A.1的虛線上的帶框的A示出);2)類102A的不同實(shí)例和與該實(shí)例相關(guān)的不同方法(由從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1以及從方法104B到生成器114A.1的虛線上的帶框的B示出);3)不同類的實(shí)例和與該實(shí)例相關(guān)的方法(由從類102B到實(shí)例108B,從實(shí)例108B到生成器114A.1以及從方法104D到生成器114A.1的虛線上的帶框的C示出);或4)類102A的不同實(shí)例(不是實(shí)例108A)和該實(shí)例的相同方法(方法104A)(例如,具有偶然依賴性——在后面描述)(由從類102A到實(shí)例108B,從實(shí)例108B到生成器114A.1以及從方法104A到生成器114A.1的虛線上的帶框的D示出);此外,如果一組生成器114中有多個生成器,則生成器本身可以是類102A的相同實(shí)例、類102A的不同實(shí)例、不同類的實(shí)例和/或以上的混合中的一部分。圖1C示出了根據(jù)本發(fā)明的一個實(shí)施方式的生成器110A與子生成器112A.1之間的示例性關(guān)系。圖1C還包括實(shí)例108C。一組生成器112A的每一個可以是1)與生成器IIOA相同的實(shí)例(類102A的實(shí)例108A)和與該實(shí)例相關(guān)的不同方法(由從實(shí)例108A到生成器112A.1和從方法104C到生成器112A.1的虛線上帶框的E示出);2)類102A的不同實(shí)例和與該實(shí)例相關(guān)的不同方法(由從類102A到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104C到生成器112A.1的虛線上帶框的F示出);3)不同類的實(shí)例和與該實(shí)例相關(guān)的方法(由從類102C到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104F到生成器112A.1的虛線上的帶框的G示出);或類102A的不同實(shí)例(不是實(shí)例108)和該實(shí)例的相同方法(例如,具有后面描述的偶然依賴性)(由從類102A到實(shí)例108C,從實(shí)例108C到生成器112A.1以及從方法104A到生成器112A.1的虛線上的帶框的H示出)。因此,一組生成器112A的每一個可以是與生成器IIOA相同的實(shí)例、與類102A不同的實(shí)例或不同類的實(shí)例;此外,如果在一組生成器112A中存在多個生成器,則生成器112A本身可以是類102A的相同實(shí)例、類102A的不同實(shí)例、不同類的相同實(shí)例、不同類的不同實(shí)例和/或以上的混合中的一部分。圖1D示出了根據(jù)本發(fā)明的一個實(shí)施方式的父生成器114和子生成器112到生成器IIOA的關(guān)系的一些另外的示例性組合。圖1D還包括實(shí)例108B和實(shí)例108C。圖1D的組合如以下表1中所示表1<table>tableseeoriginaldocumentpage59</column></row><table><table>tableseeoriginaldocumentpage60</column></row><table>圖IE示出了根據(jù)本發(fā)明的一個實(shí)施方式的相同類的不同實(shí)例可以具有基于相同和/或不同方法的生成器。圖1E顯示1)類定義102A,包括方法104A-C和分別用于所述方法的每一個的生成器依賴性聲明106A-C;2)類102A的實(shí)例108A和實(shí)例108B;3)生成器IIOA是類102A的實(shí)例108A的方法104A;4)生成器110B是是類102A的實(shí)例108A的方法104B;5)生成器110C是類102A的實(shí)例108B的方法104A;6)生成器110D是類102A的實(shí)例108B的方法104C。此外,圖1D顯示1)用于方法104A的生成器依賴性聲明106A在運(yùn)行時標(biāo)識生成器IIOA和生成器110C的子生成器;2)用于方法104B的生成器依賴性聲明106B在運(yùn)行時標(biāo)識生成器110B的子生成器;以及3)用于方法104C的生成器依賴性聲明106C在運(yùn)行時標(biāo)識生成器110D的子生成器。示例性運(yùn)行時圖2是示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時的可重復(fù)使用性的框圖。在圖2中,多個面向?qū)ο髴?yīng)用程序(具有生成器依賴性聲明210A-I的面向?qū)ο髴?yīng)用代碼)由具有面向生成器圖形編程支持的相同運(yùn)行時220運(yùn)行。圖3A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時的框圖。在圖3A中,具有面向生成器圖形編程支持的運(yùn)行時335包括自動生成器圖形生成模塊340和生成器圖形執(zhí)行模塊345。另外,運(yùn)行時335用于執(zhí)行面向?qū)ο笤创a,以及從而包括未顯示的另外的模塊。此外,圖3A顯示了用于面向?qū)ο笤创a中的方法的生成器依賴性聲明320、當(dāng)前組一個或多個其輸出是感興趣輸出的生成器325(這里也稱為當(dāng)前選擇的感興趣生成器)以及源生成器的輸出330(在后面描述)。自動生成器圖形生成模塊340接收生成器依賴性聲明320和當(dāng)前組的感興趣生成器325。自動生成器圖形生成模塊340嘗試基于生成器依賴性聲明發(fā)現(xiàn)具有直接或間接促成(contribute)當(dāng)前選擇的感興趣生成器的輸入的輸出的子生成器(在支持向上聲明依賴性的本發(fā)明的一些示例中,是父生成器),并建立一組一個或多個當(dāng)前的生成器圖形,該圖形表示從當(dāng)前選擇的感興趣生成器,通過任意所發(fā)現(xiàn)的為非源(non-source)生成器的生成器,到為源生成器的所發(fā)現(xiàn)的生成器的這些生成器對彼此的依賴性。當(dāng)前的生成器圖形被存儲在生成器圖形結(jié)構(gòu)380中。而本發(fā)明的實(shí)施方式可以將生成器圖形作為圖形的集合來存儲和處理,本發(fā)明的其他實(shí)施方式將生成器圖形作為彼此鏈接起來以形成圖形的生成器的集合(與圖形的集合不同)來存儲和處理,從而便于生成器圖形的合并和拆分。以示例而非限制的方式,在這里描述了將生成器圖形作為生成器的集合來存儲和處理的本發(fā)明的實(shí)施方式。生成器圖形執(zhí)行模塊345從自動生成器圖形生成模塊340和源生成器330的輸出接收當(dāng)前生成器圖形,并執(zhí)行當(dāng)前生成器圖形的生成器以確定當(dāng)前選擇的感興趣生成器的當(dāng)前輸出。生成器圖形執(zhí)行模塊345緩存生成器輸出緩存384示出的生成器圖形結(jié)構(gòu)380中的當(dāng)前生成器輸出。在執(zhí)行期間對生成器圖形的生成器輸出的緩存允許同步。例如,執(zhí)行依賴于多個子生成器的父生成器的合適時間是在所有多個子生成器己經(jīng)被執(zhí)行之后;換句話說,每一次執(zhí)行完它的子生成器后執(zhí)行父生成器是很浪費(fèi)的(并且,在一些情況下是不可能的)。對生成器輸出的緩存不但允許推遲父生成器的執(zhí)行直到其所有的子生成器被執(zhí)行完,而且允許當(dāng)所有的子生成器被執(zhí)行完且它們的輸出被緩存時,確定用于執(zhí)行父生成器的合適時間。因此,運(yùn)行時通過檢査其子生成器的執(zhí)行狀態(tài)來為程序員做出這種同步?jīng)Q定;換句話說,這種同步是自動的(程序員不需要包括用于確定標(biāo)識實(shí)例和在該實(shí)例上執(zhí)行與該實(shí)例相關(guān)的給定方法的合適時間的單獨(dú)源代碼)。通過另一個示例,如果某些父生成器依賴于相同的子生成器以及其他不同子生成器,則執(zhí)行所述某些父體生成器的每一個的合適時間通常是不同的;運(yùn)行時依據(jù)父生成器的一組子生成器的輸出的可用性來自動確定執(zhí)行所述某些父生成器的每一個的合適時間。如在后面詳細(xì)描述的,因為生成器圖形的一些部分由于動態(tài)生成器依賴性而可能不是當(dāng)前可發(fā)現(xiàn)的,因此自動生成器圖形生成模塊340"嘗試"發(fā)現(xiàn)并建立整個生成器圖形,但是初始可能不能完成整個生成器圖形直到一些生成器被執(zhí)行。這樣,生成器圖形執(zhí)行模塊345可以在當(dāng)前生成器圖形執(zhí)行期間調(diào)用具有所需生成器輸出的自動生成器圖形生成模塊340以完成當(dāng)前生成器圖形中任何未解析的余項(這在圖3A中由從生成器圖形執(zhí)行模塊345到自動生成器圖形生成模塊340的虛箭頭線示出;使用虛箭頭線是因為這種支持是可選的)。圖4A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖。圖4A顯示了當(dāng)前組的感興趣生成器包括生成器1。基于生成器l及其生成器依賴性聲明,生成器2和生成器3被發(fā)現(xiàn)。換句話說,生成器1的生成器依賴性聲明標(biāo)識生成器1的輸入需要生成器2和生成器3的執(zhí)行。這樣,生成器l是相關(guān)的生成器(具有一個或多個生成器依賴性的生成器)。圖4A還顯示了當(dāng)生成器3是無關(guān)生成器(不具有生成器依賴性的生成器,且因此是源生成器),生成器2是相關(guān)生成器。因此,基于生成器2的生成器依賴性聲明,生成器4和生成器5被發(fā)現(xiàn)。在圖2A中,生成器4和生成器5是無關(guān)生成器(因此,是源生成器)。圖4B示出了是根據(jù)本發(fā)明的一個實(shí)施方式的圖4A中生成器圖形的初始執(zhí)行的框圖。在圖4B中,彎曲的箭頭線示出執(zhí)行一個生成器以生成被提供作為另一個生成器輸入的輸出。如圖3A中所示,源生成器330的輸出被提供給生成器圖形執(zhí)行模塊345;相反,如圖4B所示相關(guān)生成器1-2的輸出通過執(zhí)行這些生成器來被確定。因此,在圖4B中,發(fā)生1)源生成器4和源生成器5的輸出被提供給相關(guān)生成器2;2)相關(guān)生成器2被執(zhí)行;3)相關(guān)生成器2和源生成器3的輸出被提供給生成器1;以及4)生成器1被執(zhí)行且其輸出被提供作為當(dāng)前感興趣輸出。值得注意,圖4B的生成器圖形是在數(shù)據(jù)在圖形上從一個生成器流向另一個生成器的情況上被驅(qū)動的數(shù)據(jù)。因此,生成器依賴性聲明320限制(bound)可能被生成的可能的生成器圖形;而當(dāng)前選擇的一組感興趣生成器325標(biāo)識要生成的當(dāng)前生成器圖形的起始節(jié)點(diǎn)。根據(jù)這兩點(diǎn),自動生成器圖形生成模塊340發(fā)現(xiàn)并建立生成器圖形。發(fā)現(xiàn)和建立的自動化在于自動生成器圖形生成模塊340沒有被提供生成器圖形(例如,其不需要由程序員手動標(biāo)識)或甚至在生成器圖形中的生成器列表。而是,自動生成器圖形生成模塊340解析當(dāng)前選擇的一組感興趣生成器的生成器依賴性聲明以發(fā)現(xiàn)它們的子生成器(在支持向上聲明依賴性的本發(fā)明的一些實(shí)施方式中,是父生成器),然后向下解析這些所發(fā)現(xiàn)的生成器的生成器依賴性聲明等直到源生成器(在后面描述的本發(fā)明的一些實(shí)施方式中,這可以借助生成器圖形執(zhí)行模塊345來完成)。在生成器圖形是樹的情況下,當(dāng)前選擇的感興趣生成器通常是根節(jié)點(diǎn),且生成器依賴性聲明被解析直到發(fā)現(xiàn)葉節(jié)點(diǎn)(源生成器)。被覆蓋的生成器和增量執(zhí)行圖3B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有面向生成器圖形編程支持的運(yùn)行時的框圖,該支持還支持增量執(zhí)行和被覆蓋的生成器輸出。應(yīng)當(dāng)理解,增量執(zhí)行和被覆蓋的生成器輸出是各自無關(guān)的可選特征,且因此本發(fā)明的不同實(shí)施方式可以實(shí)施一者或兩者。在圖3B中,具有面向生成器圖形的編程支持的運(yùn)行時360包括自動生成器圖形生成模塊365、生成器圖形執(zhí)行模塊370以及覆蓋生成器輸出模塊390。運(yùn)行時360用于執(zhí)行面向?qū)ο笤创a,且從而包括未顯示的另外的模塊。此外,圖3B顯示用于面向?qū)ο笤创a320中的方法的生成器依賴性聲明、當(dāng)前組的一個或多個具有感興趣輸出的生成器325(這里也稱為當(dāng)前選擇的感興趣生成器)和源生成器的輸出350。源生成器的輸出350包括源代碼中的無關(guān)生成器組的輸出352(例如,常數(shù)、默認(rèn)值等)和當(dāng)前替換的生成器輸出354(無關(guān)生成器的輸出和/或其輸出當(dāng)前被覆蓋的相關(guān)生成器的輸出)。在本發(fā)明的一些實(shí)施方式中,可以用當(dāng)前提供的值顯式(explicitly)覆蓋生成器的輸出(即,不是執(zhí)行生成器以基于其當(dāng)前輸入來確定其輸出,用于生成器的輸出值被顯示提供)。除了生成器圖形的任意無關(guān)生成器,生成器圖形的源生成器包括任意當(dāng)前被覆蓋的生成器。覆蓋生成器輸出模塊3卯接收被覆蓋的生成器輸出354(標(biāo)識哪些生成器被覆蓋且用什么輸出值來覆蓋)。在本發(fā)明的一個實(shí)施方式中,生成器可以被分類為屬性生成器或方法生成器。屬性生成器是基于屬性方法(例如,獲得和設(shè)定)。方法生成器是基于非屬性方法。覆蓋生成器輸出模塊390包括用于被覆蓋的屬性生成器的覆蓋屬性生成器輸出模塊392和用于被覆蓋的方法生成器的覆蓋方法生成器輸出模塊394。覆蓋屬性生成器輸出模塊392促使被覆蓋的值被存儲在生成器輸出緩存384和實(shí)例的數(shù)據(jù)中,而覆蓋方法生成器輸出模塊394促使被覆蓋的值被存儲在生成器輸出緩存384中。根據(jù)本發(fā)明的實(shí)施方式,這種促使可以是直接或間接的。圖3B示出了通過使用覆蓋日志396的間接促使,該覆蓋日志396收集覆蓋生成器輸出模塊390的輸出且由生成器圖形執(zhí)行模塊370來使用。為了優(yōu)化,覆蓋日志396允許覆蓋的延遲以為批處理收集多個覆蓋。與自動生成器圖形生成模塊340類似,自動生成器圖形生成模塊365:1)接收生成器依賴性聲明320和當(dāng)前組感興趣生成器325;以及2)嘗試基于6生成器依賴性聲明發(fā)現(xiàn)具有直接或間接促成當(dāng)前選擇的感興趣生成器的輸入的輸出的子生成器(在支持向上聲明依賴性的本發(fā)明的一些實(shí)施方式中,是父生成器),并建立一組一個或多個當(dāng)前生成器圖形,該當(dāng)前生成器圖形表示從當(dāng)前選擇的感興趣生成器通過任何所發(fā)現(xiàn)的無源生成器到為源生成器的所發(fā)現(xiàn)的生成器(無關(guān)生成器和當(dāng)前被覆蓋的生成器)的這些生成器彼此的輸入依賴性。生成器圖形被存儲在生成器圖形結(jié)構(gòu)380中。與生成器圖形執(zhí)行模塊345類似,生成器圖形執(zhí)行模塊370從自動圖形模塊365和源生成器350的輸出接收當(dāng)前生成器圖形,并執(zhí)行當(dāng)前生成器圖形的生成器以確定當(dāng)前所選擇的感興趣生成器的當(dāng)前輸出。生成器圖形執(zhí)行模塊370緩存如生成器輸出緩存384示出的生成器圖形結(jié)構(gòu)380中的生成器的當(dāng)前輸出。如之前所述,在執(zhí)行期間對生成器輸出的緩存允許同步(例如,不需要編寫單獨(dú)的源代碼以確定何時圖4B中的生成器2應(yīng)當(dāng)被執(zhí)行,但是運(yùn)行時通過檢查生成器輸出緩存384中所需輸出的可用性來為程序員做出同步?jīng)Q定;換句話說,該同步是自動的)。此外,該生成器輸出緩存384用于增量執(zhí)行。更具體地,在生成器圖形被初始生成和執(zhí)行后,當(dāng)前生成器圖形中的生成器的覆蓋需要某種層次的再執(zhí)行。雖然本發(fā)明的一些實(shí)施方式簡單地再執(zhí)行整個圖形,但本發(fā)明的可替換實(shí)施方式支持增量執(zhí)行(只再執(zhí)行生成器圖形的被覆蓋所影響的這些部分)。支持增量執(zhí)行的一些示例性實(shí)施方式使用生成器圖形結(jié)構(gòu)380中的增量執(zhí)行標(biāo)記382來幫助確定哪些生成器需要再執(zhí)行。因此,維持生成器圖形是指需要時在多個執(zhí)行中修改生成器圖形的鏈接從而使生成器圖形保持為當(dāng)前的(最新的),而增量執(zhí)行是指維持生成器圖形并使用當(dāng)前的(最新的)生成器圖形來只再執(zhí)行生成器圖形中被覆蓋所影響的這些部分。與圖3A類似,存在從生成器圖形執(zhí)行模塊370到自動生成器圖形執(zhí)行模塊365的虛箭頭線,用于表示對動態(tài)依賴性的可選支持。應(yīng)當(dāng)注意動態(tài)依賴性可以在生成器圖形的再執(zhí)行期間改變。圖4C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖4B的生成器圖形的增量執(zhí)行的框圖。在圖4C中,生成器5的輸出被顯式修改,但是生成器3和生成器4的輸出沒有被顯式修改?;诟櫳善鲌D形中輸出到輸入的依賴性和只有生成器5的輸出被顯式修改,可以確定該修改只影響生成器2和生成器l。因此,更新后的生成器1的輸出的確定只需要用生成器5的新的輸出和生成器4以及生成器3的之前輸出來再執(zhí)行生成器2和生成器1。在圖4C生成器圖形的部分再執(zhí)行可以由從生成器5到生成器2以及從生成器2到生成器1(而不是從生成器4到生成器2或從生成器3到生成器1)的彎曲的箭頭線示出。缺少從生成器4到生成器2以及從生成器3到生成器1的彎曲的箭頭線不是表明生成器3和生成器4的輸出不需要,而是表明如果它們之前的輸出可用(例如從生成器圖形的先前執(zhí)行中緩存)則不需要再執(zhí)行生成器3和生成器4。圖4C的相對簡單的示例示出了在增量執(zhí)行產(chǎn)生的處理資源中存在節(jié)約。該節(jié)約依賴多個因素(例如,不需要被再執(zhí)行的生成器的數(shù)量、這些生成器需要的處理量等)。雖然本發(fā)朋的一個實(shí)施方式示出執(zhí)行增量執(zhí)行,但可替換實(shí)施方式可以以不同的方式被實(shí)現(xiàn)(例如,可替換實(shí)施方式可以響應(yīng)于修改而再執(zhí)行所有的生成器)。圖4D是示出了根據(jù)本發(fā)明的一個實(shí)施方式的在相關(guān)生成器2被覆蓋后圖4B的生成器圖形的增量執(zhí)行的框圖。在圖4D中,生成器2的輸出被顯式修改,但是生成器3的輸出則沒有?;谏善鲌D形和只有生成器2的輸出被顯式修改,可以確定只有生成器1受該修改影響。結(jié)果,確定生成器l的更新后的輸出僅需要用生成器2的被覆蓋的輸出和生成器3的之前輸出來再執(zhí)行生成器1。該生成器圖形的部分再執(zhí)行可以在圖4D中由從生成器267到生成器1(而不是從生成器4和5到生成器2或從生成器3到生成器1)的彎曲的箭頭線示出。圖4E是示出了根據(jù)本發(fā)明的一個實(shí)施方式的在相關(guān)生成器2被覆蓋且無關(guān)源生成器3被修改之后圖4B中的生成器圖形的增量執(zhí)行的框圖?;谏善鲌D形和只有生成器2和生成器3的輸出被修改,可以確定只有生成器l受該修改的影響。因此,生成器l的更新后的輸出的確定僅需要用生成器2的被覆蓋的輸出和生成器3的修改后的輸出來再執(zhí)行生成器1。生成器圖形的該部分再執(zhí)行可以在圖4E中由從生成器2和3到生成器1(不是從生成器4和5到生成器2)的彎曲的箭頭線示出。雖然支持覆蓋的生成器輸出的本發(fā)明的一個實(shí)施方式還支持不BEI覆蓋的生成器輸出,但是本發(fā)明的可替換實(shí)施方式可以不支持。雖然支持不覆蓋的生成器的本發(fā)明的一個實(shí)施方式在生成器明確地不被覆蓋之前覆蓋掉被覆蓋的生成器,但是本發(fā)明的可替換實(shí)施方式可以以不同方式實(shí)施(例如,當(dāng)替換的生成器的繼承中的一個被覆蓋時不覆蓋該被覆蓋的生成器)。生成器圖形建立和執(zhí)行本發(fā)明的不同實(shí)施方式可以被實(shí)施以在不同程度發(fā)現(xiàn)并擴(kuò)建生成器圖形(例如,建立生成器圖形直到來自根節(jié)點(diǎn)的所有圖形在無關(guān)生成器處結(jié)束(在這種情況下,生成器圖形的端節(jié)點(diǎn)是無關(guān)生成器,可能任何替換的生成器是中間節(jié)點(diǎn));擴(kuò)建生成器圖形直到來自根節(jié)點(diǎn)的每一個路徑在被替換的生成器或無關(guān)生成器中終止,無論哪條首先到達(dá)(這種情況,生成器圖形的每一個端節(jié)點(diǎn)是無關(guān)生成器或被覆蓋的生成器))。"執(zhí)行開始生成器"是指生成器圖形的給定執(zhí)行從其開始的生成器圖形的生成器。為了生成器圖形的初始執(zhí)行,不同的實(shí)施方式可以從不同的生成器開始(例如,在本發(fā)明的實(shí)施方式中,建立生成器圖形直到來自根節(jié)點(diǎn)的所有路徑在無關(guān)生成器處終止,執(zhí)行可以從端節(jié)點(diǎn)處(該端節(jié)點(diǎn)為無關(guān)生成器)開始、從源生成器處(該源生成器包括無關(guān)生成器節(jié)點(diǎn)和任意被覆蓋的生成器節(jié)點(diǎn))開始、從源生成器的子集開始(該子集包括在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意無關(guān)生成器與任意被覆蓋的生成器的組合),或從源生成器的子集開始(該子集包括任意沒有任何被覆蓋的繼承的被覆蓋的生成器與在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意無關(guān)生成器的組合);在本發(fā)明的實(shí)施方式中,如果且直到生成器沒有被覆蓋,則被覆蓋的生成器下的生成器圖形沒有被建立,執(zhí)行可以從端節(jié)點(diǎn)處開始(端節(jié)點(diǎn)可以是無關(guān)生成器和/或被覆蓋的生成器)等)。為了生成器圖形的后續(xù)執(zhí)行,不同的實(shí)施方式可以從不同的生成器開始(例如,從生成器圖形的無關(guān)生成器(例如,在不支持增量執(zhí)行的本發(fā)明的實(shí)施方式中);從生成器圖形的源生成器(例如,在不支持增量執(zhí)行的本發(fā)明的實(shí)施方式中);從源生成器的子集,該子集包括自從上一次執(zhí)行開始被覆蓋的和/或添加的源生成器(例如,在支持增量執(zhí)行的本發(fā)明的實(shí)施方式中);是自從上一次執(zhí)行開始被覆蓋的和/或添加的源生成器,從不具有被覆蓋的繼承的任意這種被覆蓋的生成器與在其間具有至少一條路徑和不包括被覆蓋的生成器的根生成器的任意這種被添加的生成器的組合(例如,在支持增量執(zhí)行的本發(fā)明的實(shí)施方式中)等)。以示例而非限制的方式,在下面會描述執(zhí)行以下動作的本發(fā)明的實(shí)施方式1)如果且直到生成器沒有被覆蓋,則被覆蓋的生成器下的生成器圖形沒有被建立;2)對于生成器圖形的初始執(zhí)行,從端節(jié)點(diǎn)處開始執(zhí)行(端節(jié)點(diǎn)可以是無關(guān)生成器和/或被覆蓋的生成器);3)實(shí)時增量執(zhí)行;4)對于生成器圖形的后續(xù)執(zhí)行,從包括再從上次執(zhí)行后被覆蓋和/或添加的那些源生成器的源生成器子集開始執(zhí)行。關(guān)于以上執(zhí)行開始生成器的概念,生成器圖形的執(zhí)行的處理流在不同的實(shí)施方式之間也可以不同。例如,在本發(fā)明的一個實(shí)施方式中,執(zhí)行開始生成器的前身(ancestry)被確定并被放置在集合中,執(zhí)行開始生成器被執(zhí)行,且針對生成器(對于該生成器所有的依賴性被執(zhí)行)該集合被反復(fù)掃描——最后達(dá)到根節(jié)點(diǎn)。作為另一個示例,在本發(fā)明的一個實(shí)施方式中,執(zhí)行開始生成器被執(zhí)行,執(zhí)行開始生成器的父體(parents)被標(biāo)識,這些父體被執(zhí)行,且該父體的父體被標(biāo)識并執(zhí)行等。以下以舉例而非限定的方式使用后面的本發(fā)明的實(shí)施方式。示例性類型的依賴性示例性動態(tài)生成器依賴性動態(tài)生成器依賴性是在運(yùn)行時期間可以改變的生成器依賴性。應(yīng)當(dāng)理解用于解析生成器依賴性的準(zhǔn)則在源代碼中,且由此生成器依賴性可以被解析的生成器是有限的。參考圖3A,從生成器圖形執(zhí)行模塊345到自動生成器圖形生成模塊340的虛箭頭線表示支持當(dāng)前生成器圖形中一個或多個生成器的執(zhí)行,該生成器對發(fā)現(xiàn)并建立整個當(dāng)前生成器圖形是必須的。換句話說,支持動態(tài)生成器依賴性的本發(fā)明的實(shí)施方式可以在自動生成器圖形生成模塊340和生成器圖形執(zhí)行模塊345之間重復(fù)直到整個生成器圖形被發(fā)現(xiàn)、建立、解析并執(zhí)行(即,在以下之間重復(fù)1)調(diào)用自動生成器圖形生成模塊以發(fā)現(xiàn)并建立在此時能被解析的當(dāng)前生成器圖形的這些部分;以及2)調(diào)用生成器圖形執(zhí)行模塊以執(zhí)行當(dāng)前生成器圖形的生成器)。在這個意義上,發(fā)現(xiàn)是指訪問生成器依賴性聲明并確定該生成器依賴性聲明所標(biāo)識的生成器;建立是指對生成器進(jìn)行實(shí)例化并將它們添加到生成器圖形;以及解析是指確定當(dāng)前未解析的動態(tài)生成器依賴性。圖5A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的包括未解析的依賴性的示例性生成器圖形的發(fā)現(xiàn)和建立的框圖。圖5A示出包括生成器1的當(dāng)前組的感興趣生成器?;谏善?及其生成器依賴性聲明,生成器2和生成器3被發(fā)現(xiàn)。換句話說,用于生成器1的依賴性聲明標(biāo)識生成器1需要生成器2和生成器3的輸出作為輸入。圖5A還示出生成器3是無關(guān)生成器(因此,是源生成器)而生成器2不是。由此,基于生成器2的依賴性聲明,生成器4和生成器5被發(fā)現(xiàn)。此外,圖5A示出生成器4是無關(guān)生成器(因此,是源生成器)而生成器5不是。由此,基于生成器5的依賴性聲明,生成器6和當(dāng)前未解析的依賴性被發(fā)現(xiàn)。圖5A還示出當(dāng)前未解析的依賴性可以用于生成器7A和/或生成器7B。圖5B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖5A中的生成器圖形的初始執(zhí)行和對未解析依賴性的解析的框圖。圖5B用彎曲的箭頭線示出圖5A的生成器圖形,該彎曲的箭頭線顯示了生成器的執(zhí)行和提供生成器的輸出給相關(guān)父生成器。此外,圖5B示出生成器5的未解析的依賴性被解析為生成器7A的依賴性,且生成器7A是無關(guān)生成器。圖5C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖5A中生成器圖形的初始執(zhí)行和/或圖5B中生成器圖形的再執(zhí)行。圖5C示出圖5A中的生成器圖形,彎曲的箭頭線示出生成器的執(zhí)行和提供該生成器的輸出給相關(guān)父生成器。此外,圖5C示出生成器5的未解析依賴性被解析為生成器7B的依賴性,且生成器7B是相關(guān)生成器。由此,基于生成器7B的依賴性聲明,生成器8被發(fā)現(xiàn)。生成器8是無關(guān)生成器(因此,是源生成器)。假定圖5C表示圖5A中生成器圖形的初始執(zhí)行,圖5C中所有的彎曲的箭頭線可以被使用。但是,假定圖5C表示圖5B中生成器圖形的再執(zhí)行,則該再執(zhí)行導(dǎo)致動態(tài)依賴性以不同方式被解析(從生成器5依賴于生成器7A轉(zhuǎn)換到生成器7B)。此外,如果再執(zhí)行在沒有增量執(zhí)行的情況下被執(zhí)行,則圖5C中所有的彎曲的箭頭線可以被使用;但是,如果使用了增量執(zhí)行,則只有不是虛線的彎曲的箭頭線可以被使用(生成器8到生成器7B、生成器7B到生成器5、生成器5到生成器2、以及生成器2到生成器1)。還應(yīng)當(dāng)理解,圖5C中所示的依賴性中的動態(tài)改變是示例性的,且由此任意數(shù)量的不同情況可以出現(xiàn)(例如,動態(tài)改變可以永遠(yuǎn)不發(fā)生;生成器5首先依賴于生成器7B然后改變到生成器7A;生成器5可以首先依賴于生成器7B且曾經(jīng)沒有動態(tài)改變發(fā)生;生成器5可以被發(fā)現(xiàn)依賴于生成器7A和生成器7B兩者,如圖5D中所示,等等),而不同的實(shí)施方式可以以不同方式解析動態(tài)生成器依賴性,一些示例會在后面被提供。因此,生成器圖形的自動再執(zhí)行不能限定為生成器被修改以及其直接的父體被再執(zhí)行;而是改變通過生成器圖形由運(yùn)行時自動使其波動(ripple),影響任意合適的生成器和依賴性,因為生成器圖形被保持(在支持的情況下使用增量執(zhí)行)。這樣,改變導(dǎo)致任何必須的另外的發(fā)現(xiàn)、建立、解析以及執(zhí)行。因此,在用戶/程序員不需要確定生成器圖形的哪一個生成器受影響且可能手動校正圖形的情況下,生成器圖形的再執(zhí)行被自動執(zhí)行。靜態(tài)生成器依賴性靜態(tài)依賴性是在運(yùn)行時期間不能改變的依賴性。因此,在支持偶然和訂閱動態(tài)依賴性(在后面描述)的本發(fā)明的實(shí)施方式中,非偶然、非訂閱依賴性是靜態(tài)依賴性。圖4A中的示例性生成器圖形示出了靜態(tài)依賴性的生成器圖形。生成器圖形形狀由于生成器至少是實(shí)例以及與該實(shí)例相關(guān)的方法,因此生成器圖形表示實(shí)例和與這些實(shí)例相關(guān)的方法的圖形,因而,生成器圖形至少是以實(shí)例和方法為中心的。在生成器至少是類、方法和實(shí)例的本發(fā)明的事實(shí)方式中,生成器圖形至少是以類、方法和實(shí)例為中心的。應(yīng)當(dāng)理解,生成器圖形可以采取各種不同形狀(例如,生成器的單鏈、72樹等)。圖5B的示例性生成器圖形是具有生成器1的根節(jié)點(diǎn)的樹,從根節(jié)點(diǎn)開始具有兩個分支一一個分支到達(dá)生成器2和生成器3的每一個。其中生成器3是葉節(jié)點(diǎn),生成器2具有從其延伸的兩個分支一一個到達(dá)生成器4和生成器5的每一個。生成器5具有從其延伸的兩個分支一一個到達(dá)生成器6和生成器7A的每一個。圖5B中的示例性生成器圖形為多級,等級1包括根節(jié)點(diǎn)生成器l,等級2包括生成器2和生成器3,等級3包括生成器4和生成器5,等級4包括生成器6生成器7A(在圖5C中,等級4包括生成器7B,等級5包括生成器8)。在圖5B中,當(dāng)考慮具有生成器2的從生成器1開始的分支時,該分支上的一個生成器是生成器2且該分支的最后一個生成器是生成器4、生成器6以及生成器7A。雖然圖5B示出了生成器圖形,其中當(dāng)前組的感興趣生成器包括單個生成器,但支持多于一個的當(dāng)前感興趣生成器的本發(fā)明的實(shí)施方式可以為每一個生成器發(fā)現(xiàn)并建立生成器圖形。應(yīng)當(dāng)理解如果同時存在多個感興趣生成器,則產(chǎn)生的生成器圖形可以是無關(guān)的或可以交叉。如果生成器圖形交叉,則本發(fā)明的實(shí)施方式可以被實(shí)施以1)復(fù)制生成器以保持獨(dú)自的生成器圖形;或2)避免這種復(fù)制并保持交叉的生成器圖形。還應(yīng)當(dāng)理解這種交叉的生成器圖形可以包括是另一個生成器圖形的子集的生成器圖形。例如,如果生成器5和生成器1被包括在當(dāng)前組的感興趣生成器中,則存在具有生成器5的根節(jié)點(diǎn)的第一生成器圖形和具有生成器1的根節(jié)點(diǎn)的第二生成器圖形,其中該第二生成器圖形包括第一生成器圖形。例如,如果生成器7B和生成器1以及生成器5被包括在當(dāng)前組的感興趣生成器中,則存在與第一和第二生成器圖形分開的具有圖5B中的生成器7B的根節(jié)點(diǎn)的第三生成器圖形。進(jìn)一步地,如果生成器5的動態(tài)依賴性從生成器7A變到生成器7B(圖5C),則該改變使第三生成器圖形成為保留的第二生成器圖形的子集,并且第二生成器圖形成為第一生成器圖形的子集。如之前所述,雖然本發(fā)明的實(shí)施方式可以把生成器圖形作為圖形的集合來存儲和處理,但本發(fā)明的其他實(shí)施方式可以把生成器圖形作為彼此鏈接起來以形成圖形的生成器的集合(與圖形的集合不同)來存儲和處理,從而便于生成器圖形的合并和拆分。以示例而非限制的方式,在這里描述了將生成器圖形作為生成器的集合來存儲和處理的本發(fā)明的實(shí)施方式。示例性執(zhí)行流圖6是根據(jù)本發(fā)明的一個實(shí)施方式的運(yùn)行時客戶端的邏輯執(zhí)行流以及其與具有面向生成器圖形編程支持的運(yùn)行時的關(guān)系的流程圖。在圖6中,虛分界線600將運(yùn)行時客戶端610的邏輯執(zhí)行流與具有面向生成器圖形編程支持的運(yùn)行時640分開。運(yùn)行時客戶端610的邏輯執(zhí)行流包括塊615,620,625以及630,而具有面向生成器圖形編程支持的運(yùn)行時640包括塊645,650,660以及可選的655。實(shí)箭頭線表示從塊630到塊660的直接因果關(guān)系。相比之下,點(diǎn)狀箭頭線表示分別從運(yùn)行時客戶端610的邏輯執(zhí)行流中的塊615和625到具有面向生成器圖形支持的運(yùn)行時640中的塊645和650的因果關(guān)系;根據(jù)本發(fā)明的實(shí)施方式,該因果關(guān)系可以是直接的或間接的。例如,圖6通過使用在虛線600具有面向生成器圖形支持的運(yùn)行時640側(cè)的虛線橢圓中的命令日志665示出可選間接原因。命令日志665收集由運(yùn)行時客戶端610的邏輯執(zhí)行流的塊615和625產(chǎn)生的命令;且命令日志665響應(yīng)于塊630而被處理塊660使用。因此,為了優(yōu)化,命令日志665允許延遲命令以將多個命令收集在一起并對其進(jìn)行批處理。因此,命令日志665與圖3B的覆蓋日志396類似,且在本發(fā)明的一些實(shí)施方式中實(shí)際上可以包括覆蓋日志396。在塊615中,一組一個或多個感興趣生成器可以被確定為當(dāng)前組的感興趣生成器并且控制傳到塊620。響應(yīng)于塊615和645之間的因果關(guān)系,塊645顯示當(dāng)前組的感興趣生成器被實(shí)例化并嘗試為每一個生成器發(fā)現(xiàn)、建立以及解析(如果動態(tài)依賴性被支持且在生成器圖形中發(fā)現(xiàn)一個或多個)生成器圖形,包括基于運(yùn)行時客戶端610中的生成器依賴性聲明,在需要時實(shí)例化任意的實(shí)例以及實(shí)例的生成器。參考圖3A和3B,自動生成器圖形生成模塊340和365分別被調(diào)用。在塊620中,確定是否存在任意生成器輸出覆蓋。如果存在,則控制傳到塊625;否則,控制傳到塊630。在塊625中,為一組一個或多個生成器接收一個或多個生成器輸出覆蓋并且控制傳到塊630。響應(yīng)于塊625和塊650之間的因果關(guān)系,塊650顯示當(dāng)前組的被替換的生成器被實(shí)例化(如果在塊645中沒有被實(shí)例化),其輸出被修改并被跟蹤。因為被覆蓋的生成器已經(jīng)被發(fā)現(xiàn)是塊645中的生成器圖形的一部分,因此該被覆蓋的生成器可以己經(jīng)被實(shí)例化。但是,由于未解析的動態(tài)依賴性,被覆蓋的生成器可以在塊645中沒有被發(fā)現(xiàn)。這樣,該被覆蓋的生成器被實(shí)例化并被覆蓋,除了當(dāng)動態(tài)依賴性被解析時該被覆蓋的生成器可以被添加到生成器圖形。此外,如前所示,圖3B的覆蓋日志396如果被實(shí)施,則會存在于塊625與塊650之間并成為命令日志665的一部分。再者,所述一組被覆蓋的生成器在支持增量執(zhí)行的本發(fā)明的一些實(shí)施方式中被跟蹤。而在支持覆蓋日志396/命令日志665的本發(fā)明的實(shí)施方式中,跟蹤是日志的一部分,在本發(fā)明的可替換實(shí)施方式中,使用不同的機(jī)制在塊650中單獨(dú)執(zhí)行跟蹤。在塊630中,生成器圖形執(zhí)行模塊被調(diào)用并可選地控制返回到塊615和/或塊625。響應(yīng)于塊630與塊660之間的因果關(guān)系,塊660顯示了當(dāng)前生成器圖形被巡視(walk)以及基于跟蹤執(zhí)行需要執(zhí)行的任意生成器。之前已經(jīng)論述了用于執(zhí)行生成器圖形的生成器并在這里適用的各種技術(shù)。參考圖3A和3B,生成器圖形執(zhí)行模塊345和370分別被調(diào)用。此外,在本發(fā)明的實(shí)施方式中,命令日志665被實(shí)施,因果關(guān)系包括使用命令日志665并在塊660之前執(zhí)行處理塊645和650。此外,在支持未解析依賴性的可能性的本發(fā)明的實(shí)施方式中,當(dāng)需要時控制從塊660流到塊655。在塊655中,嘗試解析未解析的依賴性并發(fā)現(xiàn)和建立生成器圖形中的余項,包括實(shí)例化任意實(shí)例及其生成器。從塊655控制流回到塊660。生成器依賴性聲明的示例性形式圖7A-圖7F示出了根據(jù)本發(fā)明的實(shí)施方式的生成器依賴性聲明的一些示例性形式。雖然圖7A-圖7F示出了支持參量、字段以及排序依賴性的實(shí)施方式,但是應(yīng)當(dāng)理解不同的實(shí)施方式可以支持三種依賴性形式中的僅一種或兩種。在本圖7A-圖7F中示出的本發(fā)明的實(shí)施方式中,生成器依賴性聲明由生成器依賴性聲明陳述和可選的顯式生成器依賴性聲明代碼組成。非快捷被聲明生成器依賴性是在其中使用顯式生成器依賴性聲明代碼的生成器依賴性,而快捷被聲明生成器依賴性是在其中沒有使用顯式生成器依賴性聲明代碼的生成器依賴性(而是,運(yùn)行時沒有使用生成器依賴性聲明代碼和/或基于生成器依賴性聲明陳述中的信息即時地(onthefly)執(zhí)行該代碼)。本發(fā)明的不同實(shí)施方式可以使用不同的語法來聲明生成器依賴性。例如,本發(fā)明的不同實(shí)施方式可以包括在生成器依賴性聲明陳述中使用的不同語法,該語法強(qiáng)約束、弱約束和/或不約束可以被創(chuàng)建的生成器依賴性的類型。強(qiáng)約束的生成器依賴性是為其在生成器依賴性聲明陳述中使用基本限定可以被創(chuàng)建的生成器依賴性的類型的語法的生成器依賴性;弱約束生成器依賴性是為其在生成器依賴性聲明陳述中使用不完全限定可以被創(chuàng)建的生成器依賴性的類型的語法的生成器依賴性;而未約束的生成器依賴性是為其在生成器依賴性聲明陳述中使用不限定可以被創(chuàng)建的生成器依賴性的類型的語法的生成器依賴性。通過舉例而非限定的方式,下面描述的本發(fā)明的實(shí)施方式包括以下1)用于參量的強(qiáng)約束生成器依賴性的語法(參量依賴性(ArgumentDependency)=強(qiáng)約束向下聲明的參量[靜態(tài)或動態(tài),且如果是動態(tài)、偶然和/或吸收訂閱]依賴性);2)用于字段的強(qiáng)約束生成器依賴性的語法(字段依賴性(FieldDepencency)=強(qiáng)約束向下聲明的字段[靜態(tài)或動態(tài),且如果是動態(tài)、偶然和/或吸收訂閱]依賴性);3)用于排序依賴性的強(qiáng)約束生成器依賴性的語法(排序依賴性(SequencingDependency)=強(qiáng)約束向下聲明的排序[靜態(tài)或動態(tài),且如果是動態(tài)、偶然和/或粘附訂閱]依賴性);4)用于參量、字段或排序依賴性的弱約束向上聲明的生成器依賴性的語法(向上依賴性(UpwardDependency)-弱約束的向上聲明的字段、參量或排序[靜態(tài)或動態(tài),且如果是動態(tài)、偶然]依賴性);以及5)弱約束生成器依賴性的語法(弱約束依賴性="僅向下聲明的排序(靜態(tài)或動態(tài),且如果是動態(tài)、偶然和/或粘附訂閱)依賴性;或b)向上聲明[參量、字段或排序][靜態(tài)或動態(tài),且如果是動態(tài)、偶然]依賴性)。應(yīng)當(dāng)理解雖然本發(fā)明的一些實(shí)施方式支持生成器依賴性聲明陳述的語法,所述語法區(qū)分向下聲明參量依賴性、向下聲明字段依賴性、向上聲明依賴性(可以返回向上聲明參量、字段或排序依賴性),和弱約束依賴性(可以返回向下聲明排序依賴性、向上聲明參量、字段或排序依賴性),本發(fā)明的可替換實(shí)施方式可以采用不同的語法(例如,具有語法,該語法使所有依賴性是具有可以返回任意支持的依賴性(向下和向上聲明的參量、字段以及排序依賴性)的確定生成器的未限制的依賴性;具有區(qū)分所有支持的依賴性的語法;具有區(qū)分向下和向上聲明的參量和字段依賴性和區(qū)分僅返回向上和向下聲明的排序依賴性的語法;區(qū)分向下聲明的參量和字段依賴性并區(qū)分僅返回向上聲明的排序依賴性的向上聲明的依賴性的語法;區(qū)分向下聲明的參量、字段和排序依賴性(不支持粘附訂閱和向上聲明的依賴性)的語法等等)。應(yīng)當(dāng)理解生成器依賴性聲明陳述的語法不必等于在生成器圖形中創(chuàng)建的生成器依賴性(例如,鏈接)(例如,ArgumentDependency創(chuàng)建參量依賴性;而UpwardDependency可以創(chuàng)建參量、字段或排序依賴性)。這樣,如果理解適當(dāng),限定詞(例如,參量、字段或排序)和詞"依賴性"之間的空間可以用于指由運(yùn)行時創(chuàng)建的依賴性,而缺少該空間可以用于指語法。圖7A示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用快捷被聲明依賴性的方法的生成器依賴性聲明的偽代碼;而圖7B是根據(jù)本發(fā)明的一個實(shí)施方式的示例性生成器的框圖。圖7A顯示1)生成器依賴性聲明陳述705,包括參量依賴性l-N、字段依賴性l-M、排序依賴性l-L、向上依賴性l-P以及弱約束依賴性1-Q;和2)方法a(alpha)710,具有來自生成器依賴性聲明陳述705的參量l-N。在本發(fā)明的一個實(shí)施方式中,生成器依賴性聲明陳述的參量被計數(shù)以為每一個參量提供參量ID,以用于跟蹤。圖7B顯示生成器720,具有以下的子依賴性1)參量ID1的生成器725;2)參量IDN的生成器730;3)字段依賴性l-M的生成器740-745;4)排序依賴性l-L的生成器746-747;以及5)向上依賴性l-P的生成器748-749(注意,弱約束依賴性l...Q未顯示,但將參考圖7G更詳細(xì)地描述)。因此生成器依賴性聲明陳述705的參量對應(yīng)于方法a710的參量,且生成器依賴性聲明陳述705中的參量的參量ID關(guān)于其標(biāo)識的子生成器而被跟蹤。圖7C示出了根據(jù)本發(fā)明的一個實(shí)施方式使用非快捷被聲明依賴性的方法的生成器依賴性聲明的偽代碼,并示出了示例性生成器的框圖。圖7C顯示了圖7A的生成器依賴性聲明陳述705和方法a710以及圖7B的生成器720和725。此外,圖7C包括與參量依賴性1相關(guān)聯(lián)的生成器依賴性聲明代碼715。在運(yùn)行時期間,運(yùn)行時響應(yīng)于生成器依賴性聲明陳述705的參量依賴性1來訪問并執(zhí)行生成器依賴性聲明代碼715。生成器依賴性聲明代碼715的執(zhí)行返回生成器725作為參量依賴性1的生成器依賴性。因此,圖7C示78出了本發(fā)明的實(shí)施方式,其中生成器依賴性聲明代碼715可以是方法的一部分(不是方法a710)而不是生成器的一部分。圖7D示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明依賴性的方法的生成器依賴性聲明的偽代碼;而圖7E是根據(jù)本發(fā)明的一個實(shí)施方式的示例性生成器的框圖。圖7D顯示了圖7A的生成器依賴性聲明陳述705和方法a710,而圖7E顯示了圖7B的生成器720和725。此外,圖7D包括1)生成器依賴性聲明代碼750;以及2)方法P(beta)755包括生成器依賴性聲明代碼760。圖7D還顯示了生成器依賴性聲明陳述705的參量依賴性1基于將返回參量依賴性1的依賴性的方法P755來標(biāo)識生成器(圖7E中顯示為生成器765)。在運(yùn)行時期間,運(yùn)行時響應(yīng)于生成器依賴性聲明陳述705的參量依賴性1,執(zhí)行生成器765以返回參量依賴性1的生成器依賴性是生成器725的標(biāo)識。這樣,生成器765被稱為依賴性確定生成器(其輸出是生成器依賴性-因此由具有面向生成器圖形編程支持的運(yùn)行時使用為特殊處理(生成器圖形的處理)而被監(jiān)控的類/實(shí)例來返回該輸出),而生成器725稱為標(biāo)準(zhǔn)生成器(其輸出,如果有的話,不由處理生成器圖形的運(yùn)行時直接處理;但是其輸出,如果有的話,可以由父生成器(可以是依賴性確定生成器或其他標(biāo)準(zhǔn)生成器)使用和/或被提供作為生成器圖形的輸出(如果標(biāo)準(zhǔn)生成器是感興趣生成器,由此是根節(jié)點(diǎn)))。因此,圖7D-圖7E示出了本發(fā)明的實(shí)施方式,其中生成器依賴性聲明代碼715是被稱為依賴性確定生成器的另一個生成器的一部分。雖然在圖7D-圖7E中面向?qū)ο笤创a包括方法中顯式的生成器依賴性聲明代碼,根據(jù)所述方法依賴性確定生成器在運(yùn)行時被非快捷被聲明依賴性的運(yùn)行時實(shí)例化,本發(fā)明的可替換實(shí)施方式另外或替代地執(zhí)行運(yùn)行時以包括通用生成器依賴性聲明代碼,該代碼為快捷被聲明依賴性即時地(onthefly)調(diào)用作為一個或多個通用依賴性確定生成器。另外,雖然圖7C-圖7E參考參量依賴性79被示出,但是示出的技術(shù)適用于其他類型的向下聲明的依賴性。此外,圖7F-圖7G示出了為向上依賴性和弱約束依賴性使用依賴性確定生成器。圖7F是根據(jù)本發(fā)明的一個實(shí)施方式的通過使用具有依賴性確定生成器的向上依賴性的示例性依賴性的框圖。圖7F顯示了具有排序生成器依賴性的生成器720到依賴性確定生成器772。依賴性確定生成器可以在生成器720上返回父生成器748的非訂閱向上聲明的參量、字段或排序依賴性。此外,該依賴性確定生成器可以執(zhí)行動態(tài)依賴性(即,根據(jù)數(shù)據(jù)值在以上之間選擇的偶然依賴性,包括在不同的參量ID之間,如后面所述)。雖然本發(fā)明的一些實(shí)施方式支持所有的這些可能性,但是本發(fā)明的可替換實(shí)施方式可以僅支持子集(例如,僅非訂閱向上聲明的排序依賴性)。圖7G是根據(jù)本發(fā)明的一個實(shí)施方式的通過使用具有依賴性確定生成器的弱約束依賴性的可能的示例性依賴性的框圖。圖7G顯示了具有排序生成器依賴性的生成器720到依賴性確定生成器775。在本發(fā)明的一些實(shí)施方式中,依賴性確定生成器可以返回任意以下各項1)在子生成器780上的非訂閱向下聲明的排序依賴性;2)在生成器720上的父生成器785的非訂閱向上聲明的參量、字段或排序依賴性;以及3)粘附訂閱(在后面描述)。此外,該依賴性確定生成器可以執(zhí)行動態(tài)依賴性(例如,根據(jù)數(shù)據(jù)值在以上之間選擇的偶然依賴性,包括在不同的參量ID之間,如后面所述)。雖然本發(fā)明的一些實(shí)施方式支持所有的這種可能性,但是本發(fā)明的可替換實(shí)施方式僅支持子集(例如,僅非訂閱向上聲明的排序依賴性)。如之前所示,排序依賴性可以用于不同的目的,包括確保修改數(shù)據(jù)的生成器與使用數(shù)據(jù)的生成器之間的執(zhí)行順序,該修改數(shù)據(jù)的生成器以運(yùn)行時不知道的方式修改數(shù)據(jù)(子生成器可以以需要父生成器的方法來包括訪問該輸出的代碼的方式來編寫子生成器的輸出(例如,通過影響不是常規(guī)生成器輸出這樣不被運(yùn)行時檢測的輸出來影響環(huán)境的方法一例如設(shè)定全局變量的方法、設(shè)定不是生成器輸出的實(shí)例中的字段的方法、影響外部數(shù)據(jù)源的方法,等))。不同的實(shí)施方式可以支持一種或多種關(guān)于屬性生成器來聲明生成器依賴性的方式。具體地,在本發(fā)明的一些實(shí)施方式中,讀取字段的生成器依賴于獲取屬性生成器,而獲取屬性生成器應(yīng)當(dāng)依賴于設(shè)定獲取屬性方法所負(fù)責(zé)的字段的任何生成器。處理這種情況的一種技術(shù)可以在支持排序生成器依賴性的本發(fā)明的實(shí)施方式中使用,用于為獲取屬性方法提供依賴性聲明陳述,該陳述在設(shè)定獲取屬性方法負(fù)責(zé)的字段的每一個方法上創(chuàng)建排序生成器依賴性(例如,關(guān)于圖7G,生成器780是設(shè)定字段的生成器而生成器720是負(fù)責(zé)該字段的獲取屬性生成器,依賴性確定生成器775被寫入以在生成器780上返回生成器720的向下聲明的排序依賴性)。處理該情況的第二種技術(shù)可以在支持排序生成器依賴性和向上聲明的生成器依賴性的本發(fā)明的實(shí)施方式中使用,該技術(shù)在用于設(shè)定字段的任何方法的生成器依賴性聲明陳述/代碼中包括在負(fù)責(zé)該字段的獲取方法上的向上聲明排序生成器依賴性(例如,使用向上依賴性或限制依賴性)(例如,關(guān)于圖7G,生成器720是設(shè)定字段的生成器而生成器785是負(fù)責(zé)該字段的獲取屬性生成器,依賴性確定生成器775被寫入以在生成器720上返回父生成器785的向上聲明的排序依賴性)。該第二種技術(shù)允許設(shè)定字段方法的程序員負(fù)責(zé)提供生成器依賴性給合適的獲取方法,而不需要程序員進(jìn)入獲取方法并修改其生成器依賴性聲明陳述/代碼。在使用排序依賴性的情況下,當(dāng)給定的生成器依賴給定的變量時,該變量應(yīng)當(dāng)在生成器圖形的給定執(zhí)行中被多于一個生成器的繼承生成器修改(應(yīng)當(dāng)注意通過偶然依賴性(在后面描述),不同的繼承生成器可以在當(dāng)前生成器圖形的不同執(zhí)行期間修改變量)。例如,在當(dāng)前生成器圖形的給定執(zhí)行中,獲取屬性生成器可以僅依據(jù)設(shè)定該獲取屬性生成器負(fù)責(zé)的字段的另一個生成器。應(yīng)當(dāng)理解,本發(fā)明的不同實(shí)施方式可以實(shí)施圖7A-圖7F中所示的一個或多個本發(fā)明的實(shí)施方式。例如,本發(fā)明的一個實(shí)施方式支持快捷和非快捷被聲明依賴性,這兩種都使用依賴性確定生成器;具體地,在本發(fā)明的該實(shí)施方式中1)面向?qū)ο笤创a包括方法中的顯式生成器依賴性聲明代碼,根據(jù)該方法運(yùn)行時為非快捷被聲明依賴性在運(yùn)行時實(shí)例化依賴性確定生成器;2)運(yùn)行時包括通用生成器依賴性聲明代碼,該代碼為快捷聲明即時地調(diào)用偶然依賴性(在后面描述)作為一個或多個通用依賴性確定生成器;以及3)運(yùn)行時包括直接鏈接到快捷聲明、非偶然的生成器依賴性的支持(在后面描述)。作為另一個示例,本發(fā)明的一個實(shí)施方式支持使用依賴性確定生成器的非快捷和快捷被聲明生成器依賴性;具體地,在該本發(fā)明的實(shí)施方式中1)面向?qū)ο笤创a包括方法中的顯式生成器依賴性聲明代碼,根據(jù)該方法運(yùn)行時為非快捷被聲明依賴性在運(yùn)行時實(shí)例化依賴性確定生成器;2)運(yùn)行時包括通用生成器依賴性聲明代碼,該代碼為快捷被聲明依賴性(不管類型)調(diào)用作為一個或多個通用依賴性確定生成器。該后一個實(shí)施方式允許一致處理生成器依賴性,因此可以簡化運(yùn)行時。此外,雖然在本發(fā)明的一個實(shí)施方式中用于方法的生成器依賴性聲明陳述只位于面向?qū)ο笤创a中的方法的上面,但是在在本發(fā)明可替換實(shí)施方式中,該陳述可以位于任何位置(例如,用于類的所有方法的生成器依賴性聲明陳述在該類中組合到一起,用于所有類中的所有方法的生成器依賴性聲明陳述組合一起作為單獨(dú)的數(shù)據(jù)表,等等)。另外,雖然在本發(fā)明的一個實(shí)施方式中,生成器依賴性聲明代碼與生成器依賴性聲明陳述分開,但是在本發(fā)明的可替換實(shí)施方式中,它們可以結(jié)合起來(例如,生成器依賴性聲明代碼在生成器依賴性聲明陳述的插入語中,生成器依賴性聲明代碼直接置于生成器依賴性聲明陳述下面并由運(yùn)行時當(dāng)做單個單元來處理,等)。圖7H-圖71示出了由于依賴性確定生成器導(dǎo)致的存在于生成器圖形中的不同子圖形之間的區(qū)別。圖7H示出了根據(jù)本發(fā)明的一個實(shí)施方式的標(biāo)準(zhǔn)生成器的示例性生成器圖形。具體地,圖7H顯示了具有根節(jié)點(diǎn)Sl的生成器圖形、具有根節(jié)點(diǎn)S5的生成器圖形、以及具有根節(jié)點(diǎn)Sll的生成器圖形。標(biāo)準(zhǔn)生成器Sl具有作為子體的標(biāo)準(zhǔn)生成器S2、S3以及S4;標(biāo)準(zhǔn)生成器S2和S3具有作為子體的標(biāo)準(zhǔn)生成器S7和S8;標(biāo)準(zhǔn)生成器S5具有作為子體的標(biāo)準(zhǔn)生成器S4和S6;以及標(biāo)準(zhǔn)生成器Sll具有作為子體的標(biāo)準(zhǔn)生成器S6和S10。圖7H的示例性生成器圖形可以通過使用任意數(shù)量的生成器依賴性和依賴性確定生成器而被發(fā)現(xiàn)、建立以及解析。圖71示出了用于發(fā)現(xiàn)、解析以及建立圖7H中的生成器圖形的生成器依賴性和依賴性確定生成器的一個示例。具體地,圖7I顯示圖7H中的圖形是一大組的成器圖形的子圖形。換句話說,圖71的生成器圖形包括圖7H中的圖形(稱為"目標(biāo)子圖形"并使用實(shí)箭頭線和實(shí)橢圓示出)和輔助發(fā)現(xiàn)、解析以及建立目標(biāo)子圖形的圖形(稱為"決定子圖形"并用虛箭頭線和虛橢圓示出)。圖7H中的決定子圖形包括依賴性確定生成器(DDP)1-11和標(biāo)準(zhǔn)生成器S9-10。在圖7H中,Sl被顯示為益來與DDP1-3,DDPl-3分別在S2、S3和S4上返回Sl的向下聲明的生成器依賴性;S4被顯示為依賴于DDP4依賴性,該DDP4在S4上返回S5的向上聲明的生成器依賴性;S5被顯示為依賴于DDP5,DDP5在S6上返回S5的向下聲明的生成器依賴性;S3被顯示為依賴于DDP6,而DDP6依賴于DDP8,DDP8在S9和S10上返回DDP6的向下聲明的生成器依賴性,這使DDP6在S7上返回S3的向下聲明的依賴性;S3被顯示為依賴于DDP7,DDP7在S8上返回S3的向下聲明的生成器依賴性;S8被顯示為依賴于DDP9,DDP9返回粘附訂閱,對于該粘附訂閱S6是觸發(fā)生成器而S11是被創(chuàng)建的父體(由此,在S6上的Sll的生成器依賴性);S2被顯示為依賴于DDP10,DDP10在S7和S8上返回S2的向下聲明的生成器依賴性的集合;以及Sll被顯示為依賴于DDPll,DDP11在S10上返回S11的向下聲明的生成器依賴性。應(yīng)當(dāng)理解標(biāo)準(zhǔn)生成器可以既是目標(biāo)子圖形的部分也是決定子圖形的部分(例如,見SIO)。值得注意的是在圖形上數(shù)據(jù)從一個標(biāo)準(zhǔn)生成器流到另一個標(biāo)準(zhǔn)生成器的情況下,目標(biāo)子圖形是被驅(qū)動的數(shù)據(jù)。示例性編程和執(zhí)行框架圖8A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的第一示例性框架的框圖,在該框架中應(yīng)用被提供給終端用戶。圖8A所示的框架包括三個基本分區(qū),第一個分區(qū)包括具有面向生成器圖形編程支持810的運(yùn)行時的創(chuàng)建。該第一個分區(qū)由具有高級編程技能的程序員執(zhí)行。當(dāng)在該分區(qū)中工作時,程序員稱為運(yùn)行時程序員。當(dāng)創(chuàng)建具有面向生成器圖形編程支持時,運(yùn)行時程序員包括生成器圖形支持和執(zhí)行各種類型的在轉(zhuǎn)換代碼、實(shí)例化代碼以及數(shù)據(jù)準(zhǔn)備代碼中使用的命令的支持。第二個分區(qū)包括運(yùn)行時執(zhí)行的面向?qū)ο髴?yīng)用源代碼820的創(chuàng)建。面向?qū)ο髴?yīng)用源代碼820包括兩個基本分區(qū)1)類定義,包括具有生成器依賴性聲明822的在方法中表達(dá)的業(yè)務(wù)邏輯(這可以可選地包括其他功能,例如圖形用戶界面一在該情況下,使用生成器和生成器依賴性聲明來編寫圖形用戶界面);以及2)類定義,包括在方法824中表達(dá)的客戶端代碼,包括實(shí)例化代碼824A(類、實(shí)例以及感興趣生成器,以促使生成器圖形的生成)、數(shù)據(jù)準(zhǔn)備代碼824B(例如,設(shè)定命令,例如觸發(fā)生成器輸出的覆蓋的設(shè)定命令)、導(dǎo)致生成器圖形的執(zhí)行的總的執(zhí)行命令824C(例如執(zhí)行并獲取命令)以及任何所需的圖形用戶界面824D(未包括在822中)。生成器依賴性聲明用于在定義包括業(yè)務(wù)邏輯的類期間(而不是在創(chuàng)建這些類的實(shí)例之后)定義生成器之間的聯(lián)系。面向?qū)ο笤创a820是被編譯和執(zhí)行的硬編碼的類、實(shí)例以及方法。雖然在本發(fā)明的一個實(shí)施方式中執(zhí)行全局執(zhí)行命令,所述命令的執(zhí)行促使嘗試執(zhí)行當(dāng)前在生成器圖形結(jié)構(gòu)380中的所有生成器圖形,但是本發(fā)明可替換實(shí)施方式可替換地或還能執(zhí)行圖形特定執(zhí)行命令,該圖形特定執(zhí)行命令需要當(dāng)前被執(zhí)行的生成器圖形的給定圖形的標(biāo)識。此外,全局執(zhí)行命令根據(jù)運(yùn)行時的執(zhí)行可以是顯式的(例如,設(shè)定、設(shè)定、設(shè)定、執(zhí)行、獲取、獲取)或隱式的。例如,隱式全局執(zhí)行命令可以1)被感興趣生成器上的第一獲取命令觸發(fā)(例如,設(shè)定、設(shè)定、設(shè)定、獲取(隱式執(zhí)行)、獲取);2)被每一個數(shù)據(jù)處理觸發(fā)(設(shè)定(隱式執(zhí)行)、設(shè)定(隱式執(zhí)行)、設(shè)定(隱式執(zhí)行)、獲取、獲取);等等。第二分區(qū)也由具有高級編程技能且了解應(yīng)用的商業(yè)目的的程序員執(zhí)行。當(dāng)在該分區(qū)中工作時,程序員稱為應(yīng)用程序員。作為該分區(qū)的一部分,如果應(yīng)用需要圖形用戶界面,則應(yīng)用程序員還為該特定應(yīng)用設(shè)計并編碼該圖形用戶界面;且由此也稱為應(yīng)用設(shè)計者。第三個分區(qū)包括使用由運(yùn)行時運(yùn)行的應(yīng)用程序。該第三個分區(qū)由不需要具有任何編程技能的終端用戶執(zhí)行。應(yīng)用程序可以以各種方式被分配(例如,作為源代碼;源代碼的轉(zhuǎn)換,例如字節(jié)代碼;二進(jìn)制等)。此外,應(yīng)用程序可以被分配用于獨(dú)立使用(standaloneuse)830(在該情況下,全部應(yīng)用程序(以及運(yùn)行程序(和運(yùn)行時(如果還沒有))被提供給計算機(jī)系統(tǒng))和/或客戶端/服務(wù)器使用。在本發(fā)明的一個實(shí)施方式中,客戶端/服務(wù)器分配包括為服務(wù)器使用832分配類定義,該類定義包括在具有生成器依賴性聲明822的方法(和運(yùn)行時(如果還沒有))中表達(dá)的業(yè)務(wù)邏輯;以及分配類定義,該類定義包括在方法824(和運(yùn)行時(如果還沒有))中表達(dá)的客戶端代碼,其中計算機(jī)系統(tǒng)上的客戶端使用834促使與服務(wù)器系統(tǒng)上的服務(wù)器使用832的通信。85圖8A還示出了為獨(dú)立使用830和客戶端使用834而提供的可選可配置交互生成器輸出布局圖形用戶界面模塊840。面向?qū)ο笤创a820可以由運(yùn)行時來運(yùn)行以生成生成器圖形,且可配置交互生成器輸出布局圖形用戶界面模塊840允許以圖形方式顯示來自生成器圖形的輸出并與生成器圖形交互。具體地,可配置交互生成器輸出布局圖形用戶界面模塊840包括1)配置和映射圖形用戶界面模塊844,用于允許選擇的生成器輸出的布局和映射的配置(例如,使用的屏幕的區(qū)域,怎樣顯示數(shù)據(jù)等);以及2)顯現(xiàn)和交互圖形用戶界面模塊846,用于顯現(xiàn)配置的布局并允許生成器輸出的覆蓋(導(dǎo)致通過全局執(zhí)行命令更新生成器圖形)。應(yīng)當(dāng)理解可配置交互生成器輸出布局圖形用戶界面模塊840可以或不可以由編寫運(yùn)行時810的同一個實(shí)體來創(chuàng)建。圖8B是示出可根據(jù)本發(fā)明的一個實(shí)施方式的第二示例性框架的框圖,在該框架中應(yīng)用被提供給終端用戶。圖8B與圖8A—樣,除了以下不同1)獨(dú)立使用830不存在;2)面向?qū)ο笤创a820被提供給服務(wù)器使用832,而客戶端代碼824沒有提供給客戶端使用834;3)可配置交互生成器輸出布局圖形用戶界面模塊840被提供給服務(wù)器使用832而沒有提供給客戶端使用834;以及4)通用可配置交互生成器輸出布局客戶端界面885被提供給客戶端使用834??膳渲媒换ド善鬏敵霾季挚蛻舳私缑?85用于與可配置交互生成器輸出布局圖形用戶界面模塊840接口。不管是否使用框架,在本發(fā)明的一個實(shí)施方式中,面向生成器圖形編程框架提供與未寫入生成器依賴性聲明的程序進(jìn)行接口的能力。該與未寫入生成器依賴性聲明的程序進(jìn)行接口的能力包括1)調(diào)用器部分(例如,沒有根據(jù)面向生成器圖形編程而編寫的圖形用戶界面);以及2)調(diào)用的部分(例如沒有根據(jù)面向生成器圖形編程而編寫的外部數(shù)據(jù)源)。調(diào)用器部分可以通過客戶端代碼發(fā)布面向生成器圖形編程命令。調(diào)用的部分可以被執(zhí)行作為封包(wrap)被調(diào)用的部分的生成器的一部分(稱為"封包生成器(wrappingproducer)")。執(zhí)行調(diào)用的部分(例如從數(shù)據(jù)源讀取數(shù)據(jù)或訂閱外部數(shù)據(jù)源中的數(shù)據(jù)改變)可以一次觸發(fā)實(shí)例的修改。這種改變可以通過調(diào)用封包生成器的代碼中的屬性設(shè)定方法來發(fā)生。獲取屬性生成器(獲得者)被促使在這些封包生成器上具有依賴性,以確保在外部數(shù)據(jù)源中發(fā)生的由改變觸發(fā)的實(shí)例修改通過生成器圖形被合適地傳播。如之前所述,不同的實(shí)施方式可以支持一個或多個聲明關(guān)于屬性生成器的生成器依賴性的方式。例如,在支持排序生成器依賴性的本發(fā)明的一些實(shí)施方式中,排序依賴性可以用于聲明封包生成器上非訂閱向下聲明的排序生成器依賴性。作為另一個示例,在支持排序生成器依賴性和非訂閱向上聲明的生成器依賴性的本發(fā)明的一些實(shí)施方式中,向上依賴性和/或弱約束依賴性可以位于封包生成器的生成器依賴性聲明中,從而為屬性生成器創(chuàng)建非訂閱向上聲明的排序生成器依賴性。圖8C-圖8F示出了根據(jù)本發(fā)明的一個實(shí)施方式的可配置交互生成器輸出布局圖形用戶界面模塊840的示例性截屏和使用。雖然將參考可配置交互生成器輸出布局圖形用戶界面模塊840來描述本發(fā)明的實(shí)施方式,所述可配置交互生成器輸出布局圖形用戶界面模塊840提供配置、映射以及以電子表格的形式與選擇的當(dāng)前生成器圖形的輸出的交互,但是本發(fā)明的可替換實(shí)施方式可以被執(zhí)行以另外或可替換地提供另一種形式的支持。此外,雖然根據(jù)一些實(shí)施方式描述了執(zhí)行配置、映射以及電子表格形式的交互的示例方式,但是本發(fā)明的其他實(shí)施方式可以以其他方式執(zhí)行這些操作,具有不同的界面和/或不同的屏幕布局。此外,電子表格可以支持任意已知的與電子表格相關(guān)聯(lián)的功能(例如,色彩選擇、字體選擇、條形/餅形/線形圖、數(shù)據(jù)透視表、保存布局、裝載布局,等)。圖8C-圖8D示出了根據(jù)本發(fā)明的一個實(shí)施方式的自由單元選擇的示例性截屏和使用,而圖8E-圖8F示出了根據(jù)本發(fā)明的一個實(shí)施方式的表格創(chuàng)建87的示例性截屏和使用。圖8C-圖8F中的每一個包括屏幕上方的菜單條850、當(dāng)前生成器圖形中的生成器的類列表852和其在屏幕左下側(cè)的輸出、以及用電子表格似的布局填充屏幕的剩余部分的配置和映射視窗854。另外,圖8C-圖8F還顯示具有列表852中類的獲取屬性方法的類的示例性列表,如下1)類PERSON(人);2)類PERSON的獲取屬性方法,包括FIRSTNAME(名)(例如,字符串)、LASTNAME(姓)(例如,字符串)、GENDER(性別)(例如,字符串)、HOMEADDRESS(家庭住址)(類地址的實(shí)例)、PROFESSIONALADDRESS(工作地址)(類地址的實(shí)例)、DATEOFBIRTH(出生日期)(例如,日期)以及AGE(年齡)(例如,整數(shù));3)類地址;4)類ADDRESS的獲取屬性方法,包括CITY(城市)(例如,字符串)、STATE(州)(例如,字符串)、ZIPCODE(郵編)(例如,字符串)。這樣,當(dāng)前生成器圖形包括類PERSON和類ADDRESS的生成器以及其輸出是類PERSON和ADDRESS的生成器。還值得注意,獲取屬性方法AGE基于獲取屬性方法DATEOFBIRTH的輸出而計算年齡;這樣,根據(jù)獲取屬性方法AGE實(shí)例化的生成器與根據(jù)獲取屬性方法DATEOFBIRTH實(shí)例化的生成器相關(guān)。圖8C-圖8D示出了輸入到視窗的第一列的連續(xù)單元的自由文本,如下顧客、名、姓、出生日期以及年齡;而圖8E-圖8F顯示如下1)輸入到視窗的第一行的自由文本——顧客列表;以及2)輸入到視窗的第二行的連續(xù)單元的自由文本名、姓、出生日期以及年齡。圖8C示出了根據(jù)本發(fā)明的一個實(shí)施方式具有可配置交互生成器輸出布局圖形用戶界面模塊840的自由單元選擇的示例性截屏和使用。圖8C顯示了類PERSON和選擇的類PERSON的獲取屬性方法到視窗不同單元的一組映射。具體地,類PERSON映射到自由文本"顧客"右邊的單元。作為該動作的一部分,本發(fā)明的一些實(shí)施方式提示用戶從多個支持的過濾器中的一個中做出選擇(顯示為過濾器選擇858)(例如,下拉列表,形成滾動箭頭等)。這些過濾器能夠選擇的被選擇的類的生成器的一個或多個實(shí)例關(guān)鍵字,或選擇其輸出類是被選擇的類的生成器的一個或多個實(shí)例關(guān)鍵字。雖然本發(fā)明的一些實(shí)施方式支持多個過濾器,但是本發(fā)明的其他實(shí)施方式默認(rèn)為一個(且允許用戶選擇是否選擇其他不同的)或僅支持一個且不需要執(zhí)行過濾器選擇858。映射856還顯示類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE分別被映射到與具有對應(yīng)自由文本的單元鄰近的單元。這種映射可以用任意數(shù)量的公知技術(shù)來執(zhí)行,包括在GUI領(lǐng)域拖放、鍵入等。圖8D示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的自由單元選擇的另一個示例性截屏和使用。圖8D顯示了類PERSON所映射到的單元允許實(shí)例選擇854。具體地,基于用于該單元的過濾器,給用戶機(jī)會從包括類PERSON的生成器的實(shí)例關(guān)鍵字和產(chǎn)生類PERSON的生成器的實(shí)例關(guān)鍵字的列表中選擇類PERSON的實(shí)例。類PERSON的實(shí)例的選擇(或單個實(shí)例的存在)致使用該實(shí)例的對應(yīng)的獲取屬性方法的輸出自動填充類PERSON的獲取屬性方法被映射到的單元?;陬怭ERSON的實(shí)例的表格填充被標(biāo)記為858。在圖8D中的示例中,類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE被映射到的單元分別被填充JOHN、SMITH、7/20/1990以及16。圖8D還顯示了獲取屬性方法已經(jīng)被映射到的視窗的單元可以被覆蓋。通過舉例的方式,圖8D顯示如果獲取屬性方法DATEOFBIRTH被映射到的單元被覆蓋,則該單元使其輸出當(dāng)前正填充該單元的生成器的輸出的覆蓋、全局執(zhí)行命令的調(diào)用(這導(dǎo)致其輸出當(dāng)前正填充該單元的生成器的再執(zhí)行,獲取屬性方法AGE被映射到該單元)以及任意顯示的所需更新。'圖8E示出了根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的表格創(chuàng)建的示例性截屏和使用。圖8E顯示了區(qū)域和方向選擇864被執(zhí)行以標(biāo)識具有自由文本——名、姓、出生日期以及年齡——的單元正下方的三行垂直的表格(用圍繞這些單元的粗虛線示出)。本發(fā)明的不同實(shí)施方式可以以各種方式支持用戶執(zhí)行該操作,(包括l)用如鼠標(biāo)的輸入裝置來選擇區(qū)域;以及2)用如彈出式菜單的界面在豎直表格、水平表格或數(shù)據(jù)透視表之間選擇——假定支持多個方向)。圖8E還顯示被選擇的類PERSON的獲取屬性方法到視窗的不同單元的一組映射866。具體地,映射866顯示類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE分別被映射到具有對應(yīng)自由文本的單元的正下方的單元。圖8F示出列入根據(jù)本發(fā)明的一個實(shí)施方式的具有可配置交互生成器輸出布局圖形用戶界面模塊840的表格創(chuàng)建的另一個示例性截屏和使用。映射866導(dǎo)致類的實(shí)例的相應(yīng)的獲取屬性方法的輸出自動填充表格的列,類PERSON的獲取屬性方法被映射到該列?;陬怭ERSON的實(shí)例的表格填充被標(biāo)記為868。在圖8D的示例中,類PERSON的獲取屬性方法FIRSTNAME、LASTNAME、DATEOFBIRTH以及AGE被映射到的列用以下行的數(shù)據(jù)來填入1)史蒂夫,柯林斯,7/20/19卯以及16;2)珍妮弗,亞當(dāng)斯,7/20/1990和16;以及3)約翰,史密斯,7/20A985,和21。如圖8D中一樣,圖8F顯示了獲取屬性方法已經(jīng)映射到的視窗的單元可以被覆蓋。通過舉例的方式,圖8F顯示如果獲取屬性方法DATEOFBIRTH被被映射到的列的第二行的單元被覆蓋,則該覆蓋導(dǎo)致其輸出當(dāng)前填充該單元的生成器的輸出的覆蓋、全局執(zhí)行命令的調(diào)用(這導(dǎo)致其輸出當(dāng)前正填充該單元的生成器的再執(zhí)行,獲取屬性方法AGE被映射到該單元)以及任何顯示的所需更新。圖8C-圖8F示出了由配置和映射圖形用戶界面模塊842生成的示例性屏幕。通過顯現(xiàn)和交互圖形用戶界面模塊846生成的屏幕是相同的,不同在于通過類列表(具有其獲取屬性方法)852,配置和映射視窗854被顯現(xiàn)和交互視窗(未顯示)替代,該顯現(xiàn)和交互視窗包括與顯示的配置和映射視窗854相同的圖像(不同的是映射特性不再可用)。示例性運(yùn)行時分配方案圖9A-圖9C示出了分配具有面向生成器圖形編程支持的運(yùn)行時的各種方案。應(yīng)當(dāng)理解這些分配方案是示例性的,因此其他方案也在本發(fā)明的范圍中。圖9A是示出了根據(jù)本發(fā)明的一個實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時的第一方案的框圖。在圖9A中,面向?qū)ο笤创a905(其包括生成器依賴性聲明)被顯示在具有面向生成器圖形編程支持的運(yùn)行時910的上面,該運(yùn)行時910在具有類裝載、動態(tài)類實(shí)例化、動態(tài)單方法調(diào)用以及類/方法自省(introspection)的運(yùn)行時915的上面,運(yùn)行時915在操作系統(tǒng)920的上面。在圖9A中,運(yùn)行時910與運(yùn)行時915—起工作。盡管任意數(shù)量的機(jī)制可以用于允許運(yùn)行時910與運(yùn)行時915—起工作,但元數(shù)據(jù)功能以舉例的方式被描述。元數(shù)據(jù)功能允許附加信息被添加到源代碼,所述信息被開發(fā)工具使用。例如,用于Java的元數(shù)據(jù)功能規(guī)范將用于注釋字段、方法以及類的API定義為具有特定屬性,該特定屬性指示它們應(yīng)當(dāng)以特殊方式由開發(fā)工具、部署工具或運(yùn)行時庫來處理(Java規(guī)范請求175)。在該示例中,對面向?qū)ο笤创a卯5進(jìn)行編程的程序員可以將注釋以生成器依賴性聲明的形式添加到方法。由于這些注釋由運(yùn)行時915切換到運(yùn)行時910,因此運(yùn)行時910指示生成器依賴性聲明的語法。在圖9A中,運(yùn)行時910和運(yùn)行時915可以由不同的機(jī)構(gòu)開發(fā)和/或分配。圖9B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時的第二方案的框圖。在圖9B中,面向?qū)ο笤创a925(其包括生成器依賴性聲明)被顯示在運(yùn)行時930(具有類裝載、動態(tài)類實(shí)例化、動態(tài)單方法調(diào)用和類/方法自省,以及面向生成器圖形編程支持)的上面,運(yùn)行時930在操作系統(tǒng)935的上面。與圖9A比較,運(yùn)行時910和915被合并成單個運(yùn)行時930。這種合并的結(jié)果是,運(yùn)行時930指示生成器依賴性聲明的語法。因此,對面向?qū)ο笤创a925進(jìn)行編程的程序員可以將生成器依賴性聲明添加到所需語法中。圖9c是示出了根據(jù)本發(fā)明的一個實(shí)施方式的用于分配具有面向生成器圖形編程支持的運(yùn)行時的第三方案的框圖。在圖9C中,面向?qū)ο笤创a940(其包括生成器依賴性聲明)被顯示在運(yùn)行時945(具有類裝載、動態(tài)類實(shí)例化、動態(tài)單方法調(diào)用和類/方法自省,以及面向生成器圖形編程支持)的上面。與圖9B比較,運(yùn)行時920和935被合并成單個實(shí)體。這種合并的結(jié)果是,操作系統(tǒng)945指示生成器依賴性聲明的語法。因此,對面向?qū)ο笤创a940進(jìn)行編程的程序員可以將生成器依賴性聲明添加到所需語法中。雖然描述了實(shí)施方式,其中運(yùn)行時具有類裝載、動態(tài)類實(shí)例化、動態(tài)單方法調(diào)用以及類/方法自省,但是可替換實(shí)施方式可以包括更多或更少的特征(例如,實(shí)例克隆、動態(tài)代理、原始類型轉(zhuǎn)換等)。示例性優(yōu)點(diǎn)在本發(fā)明的一個實(shí)施方式中,為方法聲明生成器依賴性,作為指定使用合適實(shí)例而不是用手動調(diào)用排序代碼的方法調(diào)用排序(其中合適的實(shí)例包括作為參量使用的實(shí)例、實(shí)例方法使用的實(shí)例以及類方法使用的元類實(shí)例)的方式。有效地,生成一些或所有手動調(diào)用排序代碼的工作被替換為1)應(yīng)用程序員為編寫生成器依賴性聲明所完成的工作;以及2)運(yùn)行時為發(fā)現(xiàn)并建立生成器圖形以及執(zhí)行這些生成器圖形的生成器所完成的工作。換句話92說,之前包含在手動調(diào)用排序代碼中的邏輯基于生成器依賴性聲明在運(yùn)行時期間是可被運(yùn)行時發(fā)現(xiàn)的。因此,生成器依賴性聲明告知運(yùn)行時具有什么樣的參量的什么實(shí)例的什么方法被執(zhí)行以及為了同步何時執(zhí)行。盡管編寫運(yùn)行時的工作相對較大,但是只需要編寫一次就能用于執(zhí)行為運(yùn)行時編寫的任何面向?qū)ο髴?yīng)用;相反,為了典型應(yīng)用,編寫生成器依賴性聲明的工作與編寫手動調(diào)用排序代碼相比相對較少。減少編程錯誤面向生成器圖形編程一般降低與手動調(diào)用排序代碼的調(diào)試和/或性能調(diào)節(jié)相關(guān)的耗費(fèi)。這至少因為應(yīng)用程序的基礎(chǔ)結(jié)構(gòu)從概念上是操作特定輸入的對象的轉(zhuǎn)換方法(與對象相關(guān)的一個方法的輸出是另一個的輸入,等)的一組非格式化圖形的原因是真實(shí)的。生成器依賴性聲明和具有面向生成器圖形編程支持的運(yùn)行時將這些圖形格式化為生成器圖形。因此,對于每一次改變數(shù)據(jù)的機(jī)會,應(yīng)用程序員不需要考慮其影響,并編寫手動調(diào)用排序代碼以利用合適的輸入使合適的實(shí)例的合適的轉(zhuǎn)換方法以合適的順序被調(diào)用。換句話說,對于每一次改變數(shù)據(jù)的機(jī)會,應(yīng)用程序員不需要考慮哪些圖形受影響,和在這些圖形內(nèi)的實(shí)例的哪些轉(zhuǎn)換方法受影響。而是,自動生成器圖形生成模塊發(fā)現(xiàn)并建立生成器圖形且生成器圖形執(zhí)行模塊再執(zhí)行需要反映數(shù)據(jù)改變的生成器圖形。該自動化幫助應(yīng)用程序員避免如下錯誤,例如1)以錯誤順序調(diào)用合適實(shí)例的合適轉(zhuǎn)換方法;2)忘記包括使圖形中實(shí)例的一個或多個所需的轉(zhuǎn)換方法響應(yīng)于一些改變的數(shù)據(jù)而被調(diào)用的命令;3)包括使實(shí)例的不必要的轉(zhuǎn)換方法響應(yīng)于一些改變的數(shù)據(jù)而被調(diào)用的命令(例如,包括用于調(diào)用不是受數(shù)據(jù)改變的影響的圖形一部分的實(shí)例的轉(zhuǎn)換方法的命令;包括用于調(diào)用是受數(shù)據(jù)改變的影響但自身沒有被影響的圖形一部分的實(shí)例的轉(zhuǎn)換方法的命令,等等)。同步化如之前所述,在執(zhí)行期間的生成器輸出的緩存允許同步化。因此,根據(jù)與觀察者模式的比較,生成器依賴性聲明向具有面向生成器圖形編程支持的運(yùn)行時通知依賴性,且該運(yùn)行時確定何時回調(diào)哪個生成器。完全解釋任意結(jié)果的能力在本發(fā)明的一個實(shí)施方式中,操練(drilling)/查看模塊(未顯示)被包括作為運(yùn)行時的一部分。操練/查看模塊提供圖形用戶界面,該圖形用戶界面通過終端用戶的交互允許向下操練生成器圖形(從根節(jié)點(diǎn)下行到生成器圖形)以査看生成器圖形的各種生成器的輸出。這允許終端用戶觀察分配到感興趣生成器的輸出的各種輸出,包括數(shù)據(jù)值和依賴性(由依賴性確定生成器返回)。此外,在本發(fā)明的一個實(shí)施方式中,操練/查看模塊給終端用戶提供查看生成器的方法內(nèi)的代碼、生成器的實(shí)例的值和/或生成器的類的內(nèi)容的能力。因此,操練/查看模塊提供多種后置處理活動,包括調(diào)試、輸出解釋等。示例性實(shí)際應(yīng)用/技術(shù)效果/工業(yè)適用性存在不同方面的多種示例性實(shí)際應(yīng)用和本發(fā)明的實(shí)施方式。例如,運(yùn)行時作為執(zhí)行應(yīng)用程序的一部分,促使從機(jī)器存儲介質(zhì)中取得信息(例如,訪問面向?qū)ο笤创a,包括生成器依賴性聲明)、將信息存儲到機(jī)器存儲介質(zhì)(例如,存儲像生成器圖形結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)等)、硬件處理資源的操作、提供感興趣生成器的輸出(例如,通過圖形用戶界面、存儲到機(jī)器存儲介質(zhì)、傳輸?shù)?等。在某個意義上,預(yù)處理行為包括編寫這樣的應(yīng)用程序和/或提供數(shù)據(jù)(數(shù)據(jù)可以表示任意數(shù)量的物理和/或?qū)嶋H項,例如金融值、地理值、氣象值、保險統(tǒng)計值、統(tǒng)計值、物理測量、機(jī)器狀態(tài)值等),而后置處理行為包括結(jié)果的提供(所述結(jié)果可以表示任意數(shù)量的物理和/或?qū)嶋H項,例如金融值、地理值、氣象值、保險統(tǒng)計值、統(tǒng)計值、工業(yè)測量、機(jī)器控制信息等)。通過具體示例的方式,后置處理行為可以由以下來提供1)圖10的生成器圖形視窗模塊1062,用于以圖形方式顯示顯示運(yùn)行時生成的當(dāng)前生成器圖形的表示;和/或2)可配置交互生成器輸出布局圖形用戶界面模塊840(同樣見圖10的可配置交互生成器輸出布局圖形用戶界面模塊1085),用于以圖形方式顯示來自生成器圖形的輸出并與該生成器圖形交互。作為另一個示例,自身具有生成器依賴性聲明的應(yīng)用程序在被運(yùn)行時執(zhí)行時表示物理/實(shí)際項并促使上述操作。通過具體示例的方式,這些生成器依賴性聲明響應(yīng)于運(yùn)行時對它們的執(zhí)行而促使數(shù)據(jù)結(jié)構(gòu)在機(jī)器存儲介質(zhì)中被形成。而且,生成器依賴性聲明和應(yīng)用程序一起被存儲并從機(jī)器存儲介質(zhì)中和應(yīng)用程序一起被取得。此外,這些生成器依賴性聲明表示生成器之間的關(guān)系,而生成器表示執(zhí)行的操作(方法)和實(shí)例。面向?qū)ο缶幊讨械膶?shí)例可以用于表示物理和/或?qū)嶋H項,而生成器表示在這些描述上被執(zhí)行的操作。通過另一個示例,一組一個或多個應(yīng)用程序和運(yùn)行時實(shí)施交叉資產(chǎn)風(fēng)險管理軟件,包括外幣兌換、資產(chǎn)凈值、利率、信貸、膨脹、商品以及交叉資產(chǎn)復(fù)合產(chǎn)品。這些產(chǎn)品范圍從現(xiàn)金和實(shí)際普通產(chǎn)品到特殊且復(fù)雜的衍生產(chǎn)品。還包括的是一組用于這些產(chǎn)品的數(shù)學(xué)估價模型,以及它們相關(guān)的市場數(shù)據(jù)、支付和記賬項生成例程和它們的相關(guān)可觀察的標(biāo)定模型以及它們相關(guān)的原始輸入。通過另一個示例,一組一個或多個應(yīng)用程序和運(yùn)行時可以實(shí)施文字處理器、電子數(shù)據(jù)表、通信/電子郵件軟件、照片查看軟件、病毒掃描軟件、媒體播放器、數(shù)據(jù)庫服務(wù)器、游戲、工業(yè)應(yīng)用、計算機(jī)輔助設(shè)計工具應(yīng)用和/或操作系統(tǒng)。當(dāng)然,應(yīng)用程序可以被實(shí)施以執(zhí)行各種其他任務(wù)。示例性實(shí)施通過圖示的方式,本發(fā)明的示例性實(shí)施方式將被描述,其支持依賴性、動態(tài)依賴性(包括偶然依賴性和訂閱依賴性)、用于快捷被聲明依賴性和非快捷被聲明依賴性的顯式依賴性確定生成器、用于快捷被聲明依賴性、類關(guān)鍵字、實(shí)例關(guān)鍵字、方法關(guān)鍵字、生成器覆蓋/不覆蓋命令(其是設(shè)定命令類型)以及全局執(zhí)行命令的即時依賴性確定生成器。此外,示例性實(shí)施方式可選地支持生成器圖形交互視窗模塊和增量執(zhí)行。當(dāng)然,本發(fā)明的可替換實(shí)施方式可以實(shí)施更多、更少和/或不同的特征。圖IO是根據(jù)本發(fā)明的一個實(shí)施方式的示例性實(shí)施的框圖。在圖10中,虛分界線1000將運(yùn)行時客戶端1002與具有面向生成器圖形編程支持的運(yùn)行時間1004隔開。運(yùn)行時客戶端1002的邏輯執(zhí)行流包括塊1010、1020、1025、1030以及1035,且具有面向生成器圖形支持的運(yùn)行時間1004分別包括對應(yīng)的塊1095、1098、1040、1045以及1070;實(shí)箭頭線表示從運(yùn)行時客戶端1002的邏輯執(zhí)行流的塊1035到具有面向生成器圖形編程支持的運(yùn)行時間1004的塊1070的直接因果關(guān)系,而點(diǎn)箭頭線示出了從運(yùn)行時客戶端1002的塊1010、1020、1025和1030到具有面向生成器圖形編程支持的運(yùn)行時間1004的塊1095、1098、1040和1045的因果關(guān)系。根據(jù)本發(fā)明的實(shí)施方式,這些后來的因果關(guān)系可以是直接或間接的。例如,與圖6類似,通過使用命令日志(未顯示)和/或覆蓋日志1047可選間接因果關(guān)系可以被使用。此外,塊1095和1098是虛線,因為根據(jù)本發(fā)明的實(shí)施方式它們可選地可以是不同塊的一部分(例如,塊1095可以是塊1098的一部分;塊1098可以是塊1040的一部分;塊1095和1098可以是塊1040的一部分)。類似的,塊1045是虛線,是因為根據(jù)本發(fā)明的實(shí)施方式它可選地可以是不同塊的一部分(例如,塊1045可以是塊1070的一部分)。在圖10中,運(yùn)行時1002包括類定義IOIO,該類定義包括具有數(shù)據(jù)1012、方法1014、生成器依賴性聲明1016以及可選的類關(guān)鍵字1090的業(yè)務(wù)邏輯。類定義1010是面向?qū)ο缶幊陶Z言的類,因此包括用于數(shù)據(jù)1012和方法1014的定義。此外,這些類定義1010包括如前所述的用于方法1014的生成器依賴性聲明1016。此外,在本發(fā)明的一個實(shí)施方式中,每一個類具有用于跟蹤的類關(guān)鍵字1090。運(yùn)行時1004的新的類模塊1095裝載并自省類定義1010(例如,響應(yīng)于新的類命令)。該裝載和自省可以使用任意數(shù)量的公知或?qū)黹_發(fā)的技術(shù)來完成,包括為了優(yōu)化而選擇性地裝載類的技術(shù)。新的類模塊1095裝載類通過運(yùn)行時1004的類1054來示出。作為裝載和自省類1054的一部分,新的類模塊1095還裝載并自省生成器依賴性聲明1016,如通過類1054中的方法和生成器依賴性聲明1056所示的。新的類模塊1095還保持類跟蹤結(jié)構(gòu)1092,該類跟蹤結(jié)構(gòu)1092用于使用類關(guān)鍵字來跟蹤類。因此,類跟蹤結(jié)構(gòu)1092保持類關(guān)鍵字與類1054的引用之間的對應(yīng)。而且,新的類模塊1095還保持用于使用方法關(guān)鍵字跟蹤方法的方法跟蹤結(jié)構(gòu)1058。因此,方法跟蹤結(jié)構(gòu)1058保持方法關(guān)鍵字與方法的引用以及關(guān)于生成器依賴性聲明的信息之間的對應(yīng)。運(yùn)行時客戶端1002還包括具有實(shí)例關(guān)鍵字1020的實(shí)例實(shí)例化命令。運(yùn)行時1004新的實(shí)例模塊1098對由具有實(shí)例關(guān)鍵字1020的實(shí)例實(shí)例化命令指定的實(shí)例(例如,響應(yīng)于新的實(shí)例命令)進(jìn)行實(shí)例化。該實(shí)例的實(shí)例化可以使用任意數(shù)量的公知或?qū)黹_發(fā)的技術(shù)來完成,包括為了優(yōu)化而選擇性地對實(shí)例的技術(shù)進(jìn)行實(shí)例化。作為該實(shí)例實(shí)例化的一部分,新的實(shí)例模塊1098使用類關(guān)鍵字訪問類跟蹤結(jié)構(gòu)1092從而訪問來自類1054的合適的類。新的實(shí)例模塊1098對實(shí)例進(jìn)行實(shí)例化可以通過運(yùn)行時1004的實(shí)例1052來示出。新的實(shí)例模塊1095還保持用于使用實(shí)例關(guān)鍵字來跟蹤實(shí)例的實(shí)例跟蹤結(jié)構(gòu)1065。因此,實(shí)例跟蹤結(jié)構(gòu)1065保持實(shí)例關(guān)鍵字與實(shí)例1052的引用之間的對應(yīng)。如之前所示,新的類模塊1095可以是新的實(shí)例模塊1098的一部分,其中類1054可以響應(yīng)于實(shí)例實(shí)例化命令1020(而不是單獨(dú)的新的類命令)97被實(shí)例化。運(yùn)行時客戶端1002還包括具有生成器關(guān)鍵字1025的生成器實(shí)例化命令。運(yùn)行時1004的自動生成器圖形生成模塊1040對由具有生成器關(guān)鍵字1025的生成器實(shí)例化命令指定的生成器(例如,響應(yīng)于指定當(dāng)前組的感興趣生成器的新的生成器命令)進(jìn)行實(shí)例化。此外,自動生成器圖形生成模塊1040還響應(yīng)于之前所述的當(dāng)前組的感興趣生成器發(fā)現(xiàn)、建立并可選地解析生成器圖形。在本發(fā)明的一個實(shí)施方式中,生成器關(guān)鍵字包括類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字。作為該生成器實(shí)例化的一部分,自動生成器圖形生成模塊1040:1)使用類關(guān)鍵字來訪問類跟蹤結(jié)構(gòu)1092以訪問來自類1054中的合適的類;2)使用實(shí)例關(guān)鍵字來訪問實(shí)例跟蹤結(jié)構(gòu)1065以訪問來自實(shí)例1052中的合適實(shí)例;3)使用方法關(guān)鍵字訪問方法跟蹤結(jié)構(gòu)以訪問合適的生成器依賴性聲明陳述。具有生成器關(guān)鍵字1025的生成器實(shí)例化命令指定的生成器的實(shí)例化和任意被發(fā)現(xiàn)的生成器和建立生成器圖形的實(shí)例化通過運(yùn)行時1004的生成器圖形結(jié)構(gòu)1060來示出。因此,在本發(fā)明的一個實(shí)施方式中,由具有生成器關(guān)鍵字1025的生成器實(shí)例化命令標(biāo)識的生成器關(guān)鍵字和通過生成器圖形生成而被發(fā)現(xiàn)的關(guān)鍵字與表示當(dāng)前生成器圖形的附加信息一起被存儲在生成器圖形結(jié)構(gòu)1060中。如之前所述,塊1095和1098可以是塊1040的一部分,因此,關(guān)于裝載/實(shí)例化哪些類、實(shí)例以及生成器的決定由當(dāng)前生成器圖形中有什么生成器來驅(qū)動。在該本發(fā)明的實(shí)施方式中,類、實(shí)例以及生成器的裝載/實(shí)例化可以被優(yōu)化且是以生成器為中心的。運(yùn)行時客戶端1002還包括數(shù)據(jù)準(zhǔn)備命令,包括生成器輸出覆蓋/不覆蓋命令1030。覆蓋/不覆蓋命令包括被覆蓋/不被覆蓋的生成器的生成器關(guān)鍵字,以及被覆蓋時的覆蓋值。運(yùn)行時1004的覆蓋生成器輸出模塊1045使由生成器覆蓋/不覆蓋命令指定的生成器被覆蓋/不被覆蓋。該因果關(guān)系可以間接或直接的。在間接因果關(guān)系的情況,覆蓋生成器輸出模塊1045填充覆蓋日志1047以用于生成器圖形執(zhí)行模塊1070的使用。在直接因果關(guān)系的情況,覆蓋生成器輸出模塊1045訪問生成器圖形結(jié)構(gòu)1060的生成器輸出緩存1097和實(shí)例1052。具體地,如參考覆蓋生成器輸出模塊390所描述的,在一個實(shí)施方式中,生成器可以被分類為屬性生成器或方法生成器;因此,覆蓋生成器輸出模塊1045可以包括用于被覆蓋的屬性生成器的覆蓋屬性生成器輸出模塊(未顯示)和用于被覆蓋的方法生成器的覆蓋方法生成器輸出模塊(未顯示);屬性方法的覆蓋使覆蓋值被存儲在生成器圖形結(jié)構(gòu)1060的生成器輸出緩存1097中且被存儲在實(shí)例1052的合適實(shí)例的數(shù)據(jù)中,而方法生成器的覆蓋使覆蓋值被存儲在生成器輸出緩存1097中。在本發(fā)明的一個實(shí)施方式中,生成器在生成器圖形初始被執(zhí)行前可以不被覆蓋,其中生成器將是該生成器圖形的一部分(因此,生成器已經(jīng)被實(shí)例化,從而被自動生成器圖形生成模塊1040指定為感興趣生成器或被發(fā)現(xiàn))。但是,在圖IO所示的實(shí)施方式中,生成器可以通過使用生成器覆蓋命令來實(shí)例化并覆蓋而在初始執(zhí)行之前被覆蓋。該被覆蓋的生成器一般通過發(fā)現(xiàn)進(jìn)程來最后成為生成器圖形的一部分(例如,當(dāng)動態(tài)依賴性被解析時)。在本發(fā)明的一些實(shí)施方式中,該數(shù)據(jù)準(zhǔn)備還可以包括其他類型的設(shè)定命令。覆蓋生成器輸出模塊1045被顯示為虛線框,這是因為該覆蓋生成器輸出模塊1045在本發(fā)明的可替換實(shí)施方式中可以不出現(xiàn)。生成器圖形結(jié)構(gòu)1060還可選地包括用于支持增量執(zhí)行的本發(fā)明的一些實(shí)施方式的增量執(zhí)行標(biāo)記1080。如之前參考圖3B的增量執(zhí)行標(biāo)記382所述,增量執(zhí)行標(biāo)記1080用于輔助在初始執(zhí)行之外的執(zhí)行上的生成器圖形的增量執(zhí)行。本發(fā)明的不同實(shí)施方式以不同的方式使用增量執(zhí)行標(biāo)記382。例如,在具有命令日志的本發(fā)明的一個實(shí)施方式中,日志用于跟蹤被添加和/或被修改的生成器,而增量執(zhí)行標(biāo)記382用于標(biāo)記受影響的生成器(被修改或添加的生成器的前身(ancestor),以由此依賴于所述前身)。作為另一個示例,在不具有命令日志的本發(fā)明的一個實(shí)施方式中,增量執(zhí)行標(biāo)記382用于標(biāo)記被添加或修改的生成器和被修改或添加的生成器的前身(由此與該生成器相關(guān))。作為另一個示例,在不具有命令日志的本發(fā)明的一個實(shí)施方式中,生成器的修改和添加立即被完成且增量執(zhí)行標(biāo)記382用于標(biāo)記為是修改或添加的生成器的前身(因此依賴于所述前身)的生成器。雖然本發(fā)明的實(shí)施方式己經(jīng)被描述支持增量執(zhí)行并使用增量執(zhí)行標(biāo)記,但是本發(fā)明的其他實(shí)施方式支持不適用增量執(zhí)行標(biāo)記的增量執(zhí)行(例如,命令日志用于跟蹤被添加或修改的生成器,且執(zhí)行開始生成器的列表被保留在執(zhí)行開始日志中;其中生成器圖形執(zhí)行模塊1070從執(zhí)行開始生成器開始,且以生成器圖形的前身向上到頂部的方式工作;通過舉例而非限定的方式,本發(fā)明的該實(shí)施方式在后面參考圖15-25被描述)。運(yùn)行時客戶端1002還包括全局執(zhí)行命令1035。運(yùn)行時1004的生成器圖形執(zhí)行模塊1070執(zhí)行生成器圖形。這樣,生成器圖形執(zhí)行模塊1070修改生成器輸出緩存1097(在屬性生成器和方法生成器的情況)、使用增量執(zhí)行標(biāo)記1080(如果存在)以及修改實(shí)例1052的數(shù)據(jù)(在屬性方法的情況)。之前已經(jīng)論述過用于執(zhí)行生成器圖形的生成器并這里可適用的各種技術(shù)。例如,在實(shí)施命令日志的實(shí)施方式中,命令日志被使用然后生成器圖形被執(zhí)行。此外,在支持未解析依賴性的可能性的本發(fā)明的實(shí)施方式中,生成器圖形執(zhí)行模塊1070包括動態(tài)依賴性模塊1075,該動態(tài)依賴性模塊1075可以調(diào)用自動生成器圖形生成模塊1040。圖IO還示出了提供機(jī)制(例如圖形用戶界面)的可選生成器圖形視窗模塊1062,通過該模塊1062程序員/用戶可以査看生成器圖形和生成器圖形結(jié)構(gòu)的生成器輸出。此外,圖10示出了可選的可配置交互生成器輸出布局100圖形用戶界面模塊1085,用于提供圖形用戶界面(包括塊1030和1035的動態(tài)調(diào)用),該圖形用戶界面表示可配置交互生成器輸出布局圖形用戶界面模塊840。在使用命令日志的本發(fā)明的實(shí)施方式中,不同的觸發(fā)用于觸發(fā)不同的動作。例如,響應(yīng)于顯式命令(開始記錄和結(jié)束記錄)、顯式全局執(zhí)行命令(記錄在啟動且在每個顯式總執(zhí)行命令后自動開始,且響應(yīng)于接下來的顯式總執(zhí)行命令處理每一個日志)、顯式數(shù)據(jù)準(zhǔn)備命令等,生成器實(shí)例化命令可以被記錄并批處理。類似地,響應(yīng)于顯式全局執(zhí)行命令、第一獲取命令、每一個獲取命令等,數(shù)據(jù)準(zhǔn)備命令可以被記錄并批處理。示例性跟蹤結(jié)構(gòu)圖11A-圖IID是示出了根據(jù)本發(fā)明的一個實(shí)施方式的圖IO中的數(shù)據(jù)結(jié)構(gòu)的示例性內(nèi)容的框圖。雖然圖11A-圖IID將這些數(shù)據(jù)結(jié)構(gòu)作為表格示出,但是應(yīng)當(dāng)理解可以使用合適的數(shù)據(jù)結(jié)構(gòu)(例如,哈希映射表(hashmap)、集合、列表)。圖IIA是根據(jù)本發(fā)明的一個實(shí)施方式的圖10中的類跟蹤結(jié)構(gòu)1092的示例的框圖。在圖11A中,類關(guān)鍵字列1110和類引用列1115被顯示為分別用于存儲類關(guān)鍵字和裝載的類的對應(yīng)的引用。圖IIB是根據(jù)本發(fā)明的一個實(shí)施方式的圖IO中的實(shí)例跟蹤結(jié)構(gòu)1065的示例的框圖。在圖11B中,實(shí)例關(guān)鍵字列1120和實(shí)例引用列1125被顯示用于分別存儲實(shí)例關(guān)鍵字和對應(yīng)的實(shí)例引用。在本發(fā)明的實(shí)施方式中,其中實(shí)例關(guān)鍵字在所有的類之間不需要是唯一的,實(shí)例跟蹤結(jié)構(gòu)還包括類關(guān)鍵字或?qū)嵗念惖囊?。圖11C是根據(jù)本發(fā)明的一個實(shí)施方式的圖10中的生成器圖形結(jié)構(gòu)1060的示例的框圖。在圖11C中,類引用列1135、實(shí)例引用列1140以及方法引用列1145被顯示為分別用于存儲組成當(dāng)前生成器圖形的當(dāng)前生成器的引用。這些引用可以采用各種形式。例如,這些列可以分別存儲類1054(或可替換的1092)的引用、實(shí)例1052(或可替換的1065)的引用和方法1056(或可替換的1058)的引用。雖然在本發(fā)明的一個實(shí)施方式中,這些列存儲引用,但在本發(fā)明的可替換實(shí)施方式中,這些列中的一個或多個可以存儲關(guān)鍵字。另外,圖11C包括父生成器鏈接列1150(對每一條鏈接包括父生成器引用和依賴性確定生成器引用)和子生成器鏈接列1160(對每一條鏈接包括子生成器引用、依賴性確定生成器引用、鏈接模式以及粘附鏈接指示符)。每一個生成器在列1160中可以具有O個或多個子生成器鏈接。列1160中的每一個子生成器鏈接包括1)子生成器引用,該子生成器引用是生成器圖形結(jié)構(gòu)的其他行的引用,用于根據(jù)生成器依賴性聲明表示生成器依賴性;2)依賴性確定生成器引用,其是生成器圖形結(jié)構(gòu)的另一行的引用,并表示已經(jīng)創(chuàng)建子鏈接的依賴性確定生成器;以及3)具有生成器依賴性類型的鏈接模式,用于標(biāo)識生成器依賴性是否是參量、字段或排序依賴性的結(jié)果(見關(guān)于圖7A-圖7F的論述),且如果是參量,則為生成器依賴性的參量ID;和4)粘附指示符,用于指示鏈接模式是向上聲明依賴性的結(jié)果(在支持向上聲明依賴性的本發(fā)明的實(shí)施方式中)或粘附訂閱的結(jié)果(在支持粘附訂閱的本發(fā)明的實(shí)施方式中)且不能通過該生成器的生成器參量依賴性聲明被修改(即,生成器存儲在包含粘附指示符的列的行中)。每一個生成器在列1150中具有O個或多個父生成器鏈接。列1150中每一個父生成器鏈接包括1)父生成器引用,該父生成器引用依照另一個生成器的子生成器引用存儲回引用(即,生成器圖形結(jié)構(gòu)的另一行的引用,用于表示依賴于該生成器的父生成器);以及2)依賴性確定生成器引用,其是生成器圖形結(jié)構(gòu)的另一行的引用并表示己經(jīng)創(chuàng)建父體鏈接的的依賴性確定生成器。因此,當(dāng)鏈接被創(chuàng)建時,子生成器行的父生成器鏈接列和父生成器行的子生成器鏈接列被修改以表示鏈接(且依賴性確定生成器引用在這兩者中相同)。在本發(fā)明的實(shí)施方式中,由于一個生成器圖形中或不同的生成器圖形中的多條路徑可以包括給定的生成器,因此對于給定生成器可以有多條父生成器鏈接。此外,圖11C包括生成器輸出緩存和覆蓋生成器輸出修改列1170,用于存儲當(dāng)前生成器輸出和生成器是被覆蓋的還是不被覆蓋的輸出值的指示。另外,圖IIC包括增量執(zhí)行標(biāo)記1180用于存儲增量執(zhí)行標(biāo)記,如之前所述。圖IID是根據(jù)本發(fā)明的一個實(shí)施方式的圖10中方法跟蹤結(jié)構(gòu)1058的示例的框圖。在圖IID中,方法關(guān)鍵字列1190和方法引用列1192被顯示用于分別存儲方法關(guān)鍵字和被裝載類的方法的對應(yīng)引用。此外,圖IID還包括參量依賴性列1194、字段依賴性列1196、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199、輸出類列1197和可選的附加注釋列1198。參量依賴性列1194、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199和字段依賴性列1196存儲從方法的生成器依賴性聲明陳述中解析的生成器依賴性信息(例如,見圖7A的705),而輸出類列1197存儲關(guān)于方法的輸出的輸出類的信息(通過方法的簽名可確定-例如,見圖7A的710)。在本發(fā)明的一些實(shí)施方式中使用的參量依賴性列1194、字段依賴性列1196、排序依賴性列1195、向上依賴性列1193、弱約束依賴性列1199的示例性內(nèi)容在后面提供。動態(tài)生成器依賴性如之前所述,本發(fā)明的一個實(shí)施方式支持非動態(tài)和動態(tài)生成器依賴性。在不同的實(shí)施方式可以支持不同類型的動態(tài)生成器依賴性的情況下,本發(fā)明的一個實(shí)施方式支持偶然和訂閱類型的動態(tài)生成器依賴性。因此,非偶然、非訂閱依賴性是非動態(tài)(靜態(tài))依賴性。圖12是示出了根據(jù)本發(fā)明的一個實(shí)施方式的支持偶然和訂閱類型的動態(tài)生成器依賴性的圖IO的另外的細(xì)節(jié)的框圖。圖12包括來自圖IO的虛分界線1000;類定義,該類定義包括業(yè)務(wù)邏輯1010(包括數(shù)據(jù)1012、方法1014以及生成器依賴性聲明1016);新的類模塊1095;類1054(包括方法和生成器依賴性聲明1056);新的實(shí)例模塊1098;實(shí)例1052、實(shí)例跟蹤結(jié)構(gòu)1065、自動生成器圖形生成模塊1040、生成器圖形結(jié)構(gòu)1060、以及生成器圖形執(zhí)行模塊1070(包括動態(tài)依賴性模塊1075)。圖12顯示生成器依賴性聲明1016可選地包括偶然依賴性1210、訂閱依賴性1220和多個生成器1215。這里,多個生成器1215是指返回生成器集合的生成器依賴性的能力。另外,圖12包括自動生成器圖形生成模塊1040中的訂閱模塊1240和偶然性模塊1230,用于處理偶然依賴性1210和訂閱依賴性1220。圖12還顯示訂閱模塊1240訪問訂閱日志1250。此外,動態(tài)依賴性模塊1075包括偶然性模塊1260和訂閱模塊1265,用于處理偶然依賴性1210和訂閱依賴性1220。訂閱模塊1265訪問訂閱日志1250。偶然和訂閱依賴性的以下描述在使用類DEP(依賴性的簡寫)的本發(fā)明的實(shí)施方式的上下文中完成,實(shí)例從所述類DEP被依賴性確定生成器返回并被具由面向生成器圖形編程支持的運(yùn)行時分析。類DEP包括以下字段1)TYPE,可以被設(shè)定成訂閱、非訂閱向下聲明(不是訂閱的子生成器)或非訂閱向上聲明(不是訂閱的父生成器);2)PROD,用于非訂閱向下聲明的依賴性并是子生成器的集合(這樣,其可以存儲0個或多個生成器);3)SUBTYPE,用于訂閱依賴性且被設(shè)定成指示訂閱依賴性的類型(用于支持多種類型的訂閱的本發(fā)明的實(shí)施方式;而這里描述的本發(fā)明的實(shí)施方式支持兩種類型一粘附和吸收,可替換實(shí)施方式可以支持更多、更少和/或不同的訂閱類型);4)SUBCRIT,用于訂閱依賴性并被設(shè)定成指示訂閱標(biāo)準(zhǔn);5)PARLINKMODE,用于粘附訂閱依賴性和非訂閱向上聲明依賴性并被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么鏈路模式;6)PARCLASS,用于粘附訂閱依賴性和非訂104閱向上聲明依賴性并被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么類(例如,類關(guān)鍵字);7)PARMETHOD,用于粘附訂閱依賴性和非訂閱向上聲明依賴性并被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么方法(例如,方法關(guān)鍵字);以及8)PARINSTANCE,用于粘附訂閱依賴性和非訂閱向上聲明依賴性且被設(shè)定成指示應(yīng)當(dāng)是父生成器的什么實(shí)例(例如,實(shí)例關(guān)鍵字)(如果PARINSTANCE是左空白,則子生成器的實(shí)例關(guān)鍵字用于父生成器)??商鎿Q實(shí)施方式在粘附訂閱依賴性和/或非訂閱向上聲明依賴性的情況下可以使用父生成器的集合(集合中的每一項保持PAR—CLASS,PAR—INSTANCE,PAR—METHOD,PAR—LINKMODE)。當(dāng)然,本發(fā)明的其他可替換實(shí)施方式可以使用不同的結(jié)構(gòu)來返回依賴性。偶然依賴性在本發(fā)明的一個實(shí)施方式中,非偶然和偶然的生成器依賴性都被支持。非偶然生成器依賴性是不依賴于其他生成器的輸出的依賴性,而偶然生成器依賴性是依賴于其他生成器的輸出的依賴性。雖然本發(fā)明的一個實(shí)施方式支持非偶然和偶然的生成器依賴性,但是可替換實(shí)施方式僅支持非偶然或偶然的(偶然生成器依賴性可以最初由默認(rèn)值驅(qū)動)。如之前所述,生成器可以被視為多個標(biāo)識符的集合,一個標(biāo)識符用于每一個指定粒度的附加層。在本發(fā)明的一個實(shí)施方式中,在一組標(biāo)識符中的任意一個或所有的標(biāo)識符可以基于當(dāng)前數(shù)據(jù)值有條件地被確定的情況下,偶然生成器依賴性可以是偶然的。例如,第一偶然生成器依賴性可以僅使實(shí)例標(biāo)識符被有條件確定(類和方法標(biāo)識符是固定的),而第二偶然生成器依賴性可以使類、實(shí)例和方法標(biāo)識符被有條件確定。雖然在本發(fā)明的一個實(shí)施方式中,偶然生成器依賴性的多個標(biāo)識符的所有標(biāo)識符是有條件的,但是本發(fā)明的可替換實(shí)施方式可以以不同的方式被實(shí)施(例如,只允許多個標(biāo)識符的子集是有條件的)。圖13A-圖13J是示出了根據(jù)本發(fā)明的一個實(shí)施方式的偽代碼和示例性生成器的框圖。此外,圖13A-圖13J中所示的實(shí)施方式使用用于偶然和非偶然依賴性的相同的依賴性確定機(jī)制。這樣,出于解釋的目的,圖13A-圖13J中的一些示例是非偶然生成器依賴性的示例,而其他是偶然生成器依賴性的示例。而且,非偶然生成器依賴性是其中依賴性是關(guān)于依賴性確定生成器的生成器依賴性,所述依賴性確定生成器為無關(guān)生成器(例如,在本發(fā)明的一個實(shí)施方式中,依賴性類型由于其生成器依賴性聲明為空而是可標(biāo)識的);而偶然生成器依賴性是其中依賴性是關(guān)于依賴性確定生成器的生成器依賴性,所述依賴性確定生成器為相關(guān)生成器(例如,在本發(fā)明的一個實(shí)施方式中,依賴性類型由于其生成器依賴性聲明不為空而是可標(biāo)識的)。此外,圖13A-圖13J中帶圈的數(shù)字和字母用于示出根據(jù)本發(fā)明的實(shí)施方式執(zhí)行操作的順序。另外,圖13A-圖13J中的注釋X::Y::Z用于表示生成器關(guān)鍵字,所述生成器關(guān)鍵字由類關(guān)鍵字(X)、實(shí)例關(guān)鍵字(Y)以及方法關(guān)鍵字(Z)組成。另外虛線圈和虛箭頭線表示在本發(fā)明的一些實(shí)施方式中沒有被執(zhí)行的操作。特別地,如果用于給定依賴性的無關(guān)依賴性確定生成器的執(zhí)行經(jīng)常返回相同的依賴性(例如,無關(guān)依賴性確定生成器),則本發(fā)明的一些實(shí)施方式中的該依賴性確定生成器在生成器圖形中被執(zhí)行但是不被實(shí)例化和鏈接。顯式依賴性確定生成器圖13A示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明、非動態(tài)(非偶然、非訂閱)依賴性的方法的生成器依賴性聲明的偽代碼;而圖13B是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性非快捷被聲明、非動態(tài)(非偶然、非訂閱)生成器依賴性的框圖。圖13A顯示1)方法al305的生成器依賴性聲明陳述1300,其中該生成器依賴性聲明陳述1300包括到生成器CW::IY::BETA的生成器依賴性;以及2)方法P1315的生成器依賴性聲明陳述1310,其中該生成器依賴性聲明1310為空,且方法P1315返回類DEP的實(shí)例作為參量。方法P1315包括生成器依賴性聲明代碼1320,該代碼1320將依賴性類型(DERTYPE)設(shè)定成非訂閱向下聲明,將依賴性生成器(DEP.PROD)設(shè)定成生成器13,并返回DEP。在圖13A中,帶圈的1指示生成器依賴性聲明1300被訪問(例如,由于基于方法a1305的生成器(感興趣生成器)的命名、由于基于方法a1305的生成器(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等)。圖13B中帶圈的2顯示生成器C0::I0::ALPHA基于方法a1305被實(shí)例化。圖13A中帶圈的3指示到生成器CW::IY::BETA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的4指示生成器依賴性聲明1310被訪問。圖13中帶虛線圈的5顯示生成器CW::IY::BETA被實(shí)例化為依賴性確定生成器1380。圖13B中帶虛線圈的6指示生成器CO::IO::ALPHA在生成器圖形中被鏈接以指示生成器CW::IY::BETA是子生成器。圖13B中帶圈的7指示生成器CW::IY::BETA被執(zhí)行并返回DEP以標(biāo)識生成器13。帶圈的8指示生成器13被實(shí)例化,而帶圈的9指示生成器13在生成器圖形中作為子生成器被鏈接到生成器CO::IO::ALPHA。在圖13B中,生成器CO::IO::ALPHA和生成器13是標(biāo)準(zhǔn)生成器1385(不是依賴性確定生成器)。圖13C示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13D是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性非快捷被聲明、偶然、非訂閱的生成器依賴性的生成器的框圖。此外,圖13D涉及圖5A的生成器5、7A和7B,以及生成器5至生成器7A的動態(tài)依賴性的解析。圖13C顯示1)用于方法a1305的生成器依賴性聲明陳述1300,其中生成器依賴性聲明陳述1300包括生成器CW::IY::BETA的生成器依賴性;2)用于方法P1315的生成器依賴性聲明陳述1325,其中該生成器依賴性聲明陳述1325包括到生成器CU::IV::DELTA的生成器依賴性,且其中方法P1315返回作為參量的類DEP的實(shí)例;3)用于方法S(delta)1334的生成器依賴性聲明陳述1332,其中生成器依賴性聲明陳述1332為空,且方法S1334返回作為參量的類DEP的實(shí)例;以及4)用于方法Y(gamma)1340的生成器依賴性聲明陳述1338,其中生成器依賴性聲明陳述1338為空,且方法Y1340返回變量X(其中X來自外部源、默認(rèn)值(顯式或類中的常量))。方法31315包括生成器依賴性聲明代碼1330,該代碼1330將DEP.TYPE設(shè)定成非訂閱向下聲明,依據(jù)生成器CX::IZ::GAMMA的輸出將DEP.PROD設(shè)定成生成器7A或7B,并返回DEP。方法S1332包括生成器依賴性聲明代碼1336,該代碼1336將DERTYPE設(shè)定成非訂閱向下聲明,將DEP.PROD設(shè)定成生成器CX::IZ::GAMMA,并返回DEP.PROD。在圖13C中,帶圈的1指示生成器依賴性聲明1300被訪問(例如,由于基于方法a1305的生成器(作為感興趣生成器)的命名、由于基于方法a1305的生成器(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等等)。圖13D中帶圈的2顯示生成器5基于方法a1305被實(shí)例化。圖13C中帶圈的3指示到生成器CW::IY::BETA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的4指示生成器依賴性聲明1325被訪問。圖13D中帶圈的5顯示生成器CW::IY::BETA被實(shí)例化作為依賴性確定生成器1380。圖13D中帶圈的6指示生成器5在生成器圖形中被鏈接以指示生成器CW::IY::BETA是子生成器。圖13C中帶圈的7指示到生成器CU::IV::DELTA的生成器依賴性被處理以確定生成器依賴性,且由此帶圈的8指示生成器依賴性聲明1332被訪問。圖13D中帶虛線圈的9顯示生成器CU::IV::DELTA被實(shí)例化作為依賴性確定生成器1380。圖13D中帶虛線圈的10指示CW::IY::BETA在生成器圖形中被鏈接以指示生成器CU::IV::DELTA是子生成器。圖13D中帶圈的11指108示生成器CU::IV::DELTA被執(zhí)行并返回DEP以標(biāo)識CX::IZ::GAMMA。帶圈的12指示生成器CX::IZ::GAMMA被實(shí)例化,而帶圈的13指示生成器CX::IZ::GAMMA作為子生成器在生成器圖形中被鏈接到生成器CW::IY::BETA。在圖13D中,帶圈的A指示生成器CX::IZ::GAMMA被執(zhí)行并返回X到生成器CW::IY::BETA,而帶圈的B指示生成器CW::IY::BETA返回DEP以標(biāo)識生成器7A;帶圈的C指示未解析的余項(方法P)1390現(xiàn)在被解析,且生成器7A被實(shí)例化,而帶圈的D指示生成器5到生成器7A的鏈接。在圖13D中,生成器CX::IZ::GAMMA、5以及7A是標(biāo)準(zhǔn)生成器1385。即時(Onthefly)依賴性確定生成器圖13E示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用非快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明偽代碼;而圖13F是示出了根據(jù)本發(fā)明的一個實(shí)施方式的非快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、偶然、非訂閱的生成器依賴性的生成器的框圖。與圖13D類似,圖13F涉及圖5A的生成器5、7A和7B以及生成器5到生成器7A的動態(tài)依賴性的解析。圖13E-圖13F與圖13C-圖13D相同,不同之處在于1)生成器依賴性聲明陳述1342替換生成器依賴性聲明陳述1325;2)方法fly1344替換方法S1334;以及3)生成器CW::IY::FLY替換生成器CU::IV::DELTA。生成器依賴性聲明陳述1342包括到CX::IZ::GAMMA的快捷被聲明生成器依賴性。因此,圖13E中帶圈的4現(xiàn)在指示生成器依賴性聲明1342被訪問。圖I3E中帶圈的7現(xiàn)在指示到生成器CX::IZ::GAMMA的快捷被聲明生成器依賴性被處理以確定生成器依賴性,且由此運(yùn)行時基于方法fly1344即時調(diào)用依賴性確定生成器CW::IY::FLY。帶圈的8現(xiàn)在指示生成器依賴性聲明1332被訪109問。圖13F中帶虛線圈的9現(xiàn)在顯示生成器CW::IY::FLY被實(shí)例化。圖13F中帶虛線圈的10指示生成器CW::IY::BETA在生成器圖形中被鏈接以指示生成器CW::IY::FLY是子生成器。圖13F中帶圈的11指示生成器CW::IY::FLY被執(zhí)行且返回DEP以標(biāo)識CX::IZ::GAMMA。圖13E-圖13F中的余項與圖13C-圖13D中的相同。依賴性確定生成器CW::IY::FLY的運(yùn)行時生成即時減輕了應(yīng)用程序員必須編寫顯式生成器依賴性聲明代碼并基于該代碼實(shí)例化依賴性確定生成器的麻煩。此外,其還允許程序員為方法P1315在生成器依賴性聲明陳述中直接規(guī)定生成器CX::IZ::GAMMA的依賴性,而不是規(guī)定依賴性確定生成器CU::IV::DELTA??旖菁夹g(shù)可以用于多種情況,且可以另外具有多種格式。例如,雖然在圖13E-圖DF中快捷被聲明依賴性是非偶然依賴性(其直接標(biāo)識子生成器)且是在用于方法的生成器依賴性聲明陳述中,其中依賴性確定生成器基于該方法,但是其他情況和格式可以被顯示如下1)圖13G-圖13H示出兩個快捷的使用,其中一個是偶然的且是用于方法的生成器依賴性聲明陳述的一部分,其中標(biāo)準(zhǔn)生成器基于所述方法,以及另一個是非偶然的且是用于方法的生成器依賴性聲明陳述的一部分,其中依賴性確定生成器基于該方法;以及2)圖131-圖13J示出了快捷的使用,所述快捷是非偶然的且在用于方法的生成器依賴性聲明陳述中,其中父標(biāo)準(zhǔn)生成器基于所述方法。圖13G示出根據(jù)本發(fā)明的一個實(shí)施方式的使用快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、非偶然、非訂閱的生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13H是示出根據(jù)本發(fā)明的一個實(shí)施方式的示例性快捷被聲明、偶然、非訂閱的生成器依賴性和快捷被聲明、非偶然、非訂閱的生成器依賴性的生成器的框圖。圖13G顯示1)用于方法al305的生成器依賴性聲明陳述1345,其中生成器依賴性聲明陳述1345包括到生成器〈P〉GETC1::I1::M1的快捷被聲明、偶然生成器依賴性;2)用于方法flyl1355的生成器依賴性聲明陳述1350,其中生成器依賴性聲明陳述1350包括到生成器C0::I0::GETC1的快捷被聲明、非偶然生成器依賴性,且方法flyl1355返回作為參量的DEP的實(shí)例;3)用于方法fly21362的生成器依賴性聲明陳述1332,其中方法fly21362返回作為參量的DEP的實(shí)例;以及4)用于方法getcl1370的生成器依賴性聲明陳述1365,其中方法getcl1370返回具有值CX或CY的C1。響應(yīng)于快捷被聲明依賴性〈P〉GETC1::I1::M1(指示該快捷被用于類關(guān)鍵字)運(yùn)行時提供方法FLY11355及其生成器依賴性聲明陳述1350。方法flyl1355包括生成器依賴性聲明代碼1360,該代碼1360將DEP.TYPE設(shè)定成非訂閱向下聲明,依據(jù)生成器C0::I0::GETC1的Cl輸出值將DEP.PROD設(shè)定成生成器CX::I1::M1或CY::I1::M1,并返回DEP。雖然在圖13H的示例中〈P〉用于指定其是偶然的生成器的類關(guān)鍵字,但是本發(fā)明的可替換實(shí)施方式可以使用其他語法。此外,雖然在圖13H的示例中,〈P〉用于指定其是偶然的生成器的類關(guān)鍵字,但是本發(fā)明的一個實(shí)施方式支持具有多個和/或不同的標(biāo)識符,所述標(biāo)識符組成以這種方式被指示為偶然的生成器關(guān)鍵字。在圖13G中,帶圈的1指示生成器依賴性聲明1345被訪問(例如,由于基于方法a1305的生成器(作為感興趣生成器)的命名,由于基于方法a1305的生成器(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等等)。圖13H中帶圈的2顯示生成器CO::IO::ALPHA基于方法a1305被實(shí)例化。圖13G中帶圈的3指示快捷被聲明生成器依賴性被處理以確定生成器依賴性且運(yùn)行時提供方法flyl1355;且由此,帶圈的4指示生成器依賴性聲明1350被訪問。圖13H中帶圈的5顯示生成器C0::I0::FLY1被實(shí)例化作為依賴性確定生成器1380。圖13H中帶圈的6指示生成器CO::IO::ALPHA在生成器圖形中被鏈接以指示生成器C0::I0::FLY1是子生成器。圖13G中帶圈的7指示到生成器C0::I0::GETC1的快捷被聲明生成器依賴性被處理以確定生成器依賴性且運(yùn)行時提供方法fly21362,且由此,帶圈的8指示生成器依賴性聲明1332被訪問。圖13H中帶虛線圈的9顯示生成器C0::I0::FLY2被實(shí)例化。圖13H中帶虛線圈的10指示生成器C0二I0二FLY1在生成器圖形中被鏈接以指示生成器C0::I0::FLY2是子生成器。圖13H中帶圈的11指示生成器C0::I0::FLY2被執(zhí)行并返回DEP以標(biāo)識生成器C0::I0::GETC1。帶圈的12指示生成器C0::I0::GETC1被實(shí)例化,而帶圈的13指示生成器C0::I0::GETC1在生成器圖形中被鏈接到作為子生成器的生成器C0::I0::FLY1。在圖13H中,帶圈的A指示生成器C0::I0::GETC1被執(zhí)行并返回C1=CX到生成器C0::I0::FLY1,而帶圈的B指示生成器C0::I0::FLY1被執(zhí)行并返回DEP以標(biāo)識生成器CX::I1::M1;帶圈的C指示未解析的余項(方法flyl)1390現(xiàn)在被解析,且?guī)Φ腄指示生成器CO::IO::ALPHA到生成器CX::I1::M1的鏈接。在圖13H中,生成器C0::I0::GETC1、C0::I0::ALPHA以及CX::I1::M1是標(biāo)準(zhǔn)生成器1385。依賴性確定生成器C0::I0::FLY1和C0::I0::FLY2的運(yùn)行時產(chǎn)生即時減輕了應(yīng)用程序員必須編寫顯式生成器依賴性聲明代碼并基于該代碼實(shí)例化依賴性確定生成器的麻煩。此外,其允許應(yīng)用程序員在用于方法a1305的生成器依賴性聲明陳述中通過方法getCl在生成器^::I1::M1上直接規(guī)定偶然依賴性,而不是規(guī)定依賴性確定生成器CW::IY::BETA。圖13I示出了根據(jù)本發(fā)明的一個實(shí)施方式的使用快捷被聲明、非動態(tài)(非偶然、非訂閱)生成器依賴性的方法的生成器依賴性聲明的偽代碼;而圖13J是示出了根據(jù)本發(fā)明的一個實(shí)施方式的示例性快捷被聲明、非動態(tài)生成器依賴性的生成器的框圖。圖131顯示1)用于方法a1305的生成器依賴性聲明陳述1372,其中生成器依賴性聲明陳述1372包括到生成器10的快捷被聲明生成器依賴性;2)用于方法fly1376的生成器依賴性聲明陳述1374,其中該生成器依賴性聲明陳述1374為空,且方法fly1376返回作為參量的DEP的實(shí)例。響應(yīng)于快捷被聲明依賴性由運(yùn)行時提供方法fly1776及其生成器依賴性聲明陳述1374。方法fly1376包括生成器依賴性聲明代碼1378,該代碼1378將DEP.TYPE設(shè)定成非訂閱向下聲明,將DEP.PROD設(shè)定成生成器10,并返回DEP。在圖131中,帶圈的1指示生成器依賴性聲明1372被訪問(例如,由于基于方法a1305的生成器(作為感興趣生成器)的命名,由于基于a1305的生成器(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等等)。圖13J中帶圈的2顯示生成器C0::I0::ALPHA基于方法a1305被實(shí)例化。圖13I中帶圈的3指示快捷被聲明生成器依賴性被處理以確定生成器依賴性且運(yùn)行時提供方法fly1376;且由此,帶圈的4指示生成器依賴性聲明1374被訪問。圖13J中帶虛線圈的5顯示生成器CO::IO::FLY被實(shí)例化作為依賴性確定生成器1380。圖13J中帶虛線圈的6指示生成器C0::I0::ALPHA在生成器圖形中被鏈接以指示生成器CO::IO::FLY是子生成器。圖13J中帶圈的7指示生成器CO::IO::FLY被執(zhí)行且返回DEP以標(biāo)識生成器10。帶圈的8指示生成器10被實(shí)例化,而帶圈的9指示生成器CO::IO::ALPHA在生成器圖形中被鏈接以指示生成器10是子生成器。在圖13J中,生成器CO::IO::ALPHA和生成器10是標(biāo)準(zhǔn)生成器1385。應(yīng)當(dāng)理解,在本發(fā)明的一個實(shí)施方式中,運(yùn)行時程序員編寫單個fly方法以解釋所有支持的語法和組合(例如,方法fly1334、方法flyl1355、方法fly21362、方法fly1376)并將該fly方法包含在運(yùn)行時中。這不但允許應(yīng)用程序員避免編寫用于依賴性確定生成器的代碼,其中在該依賴性確定生成器中fly方法可以被使用,運(yùn)行時程序員僅需要編寫通用fly方法(用于所有支持的情況的單個fly)。此外,應(yīng)當(dāng)理解快捷被聲明依賴性允許運(yùn)行時使113用依賴性確定生成器而同時允許應(yīng)用程序員指示生成器依賴性聲明中的標(biāo)準(zhǔn)生成器(例如,圖13G-圖13J)。方法跟蹤結(jié)構(gòu)回過來參考圖11D的方法跟蹤結(jié)構(gòu),現(xiàn)在將描述在本發(fā)明的一些實(shí)施方式中使用的參量依賴性列1194、字段依賴性列1196、排序依賴性列1195、向上依賴性列1193、以及弱約束依賴性列1199的示例性內(nèi)容。具體地,參量依賴性列1194存儲項的集合,每項用于每個參量依賴性。在本發(fā)明的一個實(shí)施方式中,每一項包括以下1)參量ID;2)類關(guān)鍵字性質(zhì)標(biāo)識符,為顯式類、相同類以及偶然類中的一者;3)當(dāng)類關(guān)鍵字性質(zhì)標(biāo)識符指示顯式類時所填充的顯式類關(guān)鍵字性標(biāo)識符;4)當(dāng)類關(guān)鍵字性質(zhì)標(biāo)識符指示偶然類時所填充的偶然類確定方法關(guān)鍵字標(biāo)識符;5)實(shí)例關(guān)鍵字性質(zhì)標(biāo)識符,為顯式實(shí)例,相同實(shí)例以及偶然實(shí)例中的一者;6)當(dāng)實(shí)例關(guān)鍵字性質(zhì)標(biāo)識符指示顯式實(shí)例時所填充的顯式實(shí)例關(guān)鍵字標(biāo)識符;7)當(dāng)實(shí)例關(guān)鍵字性質(zhì)標(biāo)識符指示偶然實(shí)例時所填充的偶然實(shí)例確定方法關(guān)鍵字標(biāo)識符;8)方法關(guān)鍵字性質(zhì)標(biāo)識符,為顯式方法、相同方法以及偶然方法中的一者;9)當(dāng)方法關(guān)鍵字性質(zhì)標(biāo)識符指示顯式方法時所填充的顯式方法關(guān)鍵字標(biāo)識符;10)當(dāng)方法關(guān)鍵字性質(zhì)標(biāo)識符指示偶然方法時所填充的偶然方法確定方法關(guān)鍵字標(biāo)識符;以及l(fā)l)快捷標(biāo)識符,指示生成器依賴性聲明陳述中的用于參量的生成器依賴性聲明是否包含快捷的指示(即,生成器依賴性聲明陳述直接標(biāo)識標(biāo)準(zhǔn)子生成器而不是依賴性確定生成器)。各種關(guān)鍵字性質(zhì)標(biāo)識符的"...顯式"指示用于顯式關(guān)鍵字被提供用于生成器依賴性聲明陳述中的生成器依賴性的情況。通過舉例的方式,圖13A的生成器依賴性聲明陳述1300的生成器依賴性"CW::IY::BETA"提供顯式類、實(shí)例以及方法關(guān)鍵字。在本發(fā)明的一些實(shí)施方式中,速記技術(shù)被支持用于生成器依賴性聲明陳述,從而1)如果過沒有為給定生成器依賴性提供類,則使用與父生成器相同的類;以及2)如果沒有為給定生成器依賴性提供類和實(shí)例,則使用與父生成器相同的類和實(shí)例。在本發(fā)明的其他實(shí)施方式中,語法用于允許類、實(shí)例以及方法的任意組合與父體相同(除了所有都相同)(例如,分隔符用于指定類、實(shí)例以及方法中的每一個,且沒有這種分隔符指示與父體相同一通過特定示例的方式,語法可以是"#C:"、和"#M:",由此生成器依賴性聲明陳述中的生成器依賴性可以是#(::"類關(guān)鍵字"::#1:"實(shí)例關(guān)鍵字"JM:"方法關(guān)鍵字")(其中引號表示值或變量的占位符)不同關(guān)鍵字性質(zhì)標(biāo)識符的"...相同"指示用于在生成器依賴性聲明陳述中使用速記技術(shù)的情況。如之前所示,在本發(fā)明的一些實(shí)施方式中,偶然生成器依賴性的指示通過在生成器依賴性聲明陳述自身中使用的語法(例如,)而被支持(見圖13G的1345),且該語法可以用于生成器依賴性的類、實(shí)例和方法的一者或多者。不同關(guān)鍵字性質(zhì)標(biāo)識符的"…偶然"指示用于標(biāo)識該偶然生成器依賴性何時發(fā)生,而"偶然...確定方法關(guān)鍵字標(biāo)識符"指示子生成器的方法關(guān)鍵字(類和實(shí)例與父生成器的相同)。通過舉例的方式,圖13G中的生成器依賴性聲明1345的生成器依賴性"GETC1::I1::M1"提供偶然類(其中偶然類確定方法關(guān)鍵字是GETC1)、顯式實(shí)例關(guān)鍵字以及顯式方法關(guān)鍵字。排序依賴性列1195、向上依賴性列1193以及弱約束依賴性列1195的每一個存儲項的集合,每一項用于每個排序依賴性、向上依賴性以及弱約束依賴性。在本發(fā)明的一個實(shí)施方式中,每一個這樣的項具有與用于參量依賴性的集合項相同的結(jié)構(gòu),除了不包括參量ID。此外,盡管圖13A-圖13J示出了源于依賴性確定生成器的非訂閱向下聲明的依賴性,但是應(yīng)當(dāng)理解在向上聲明的依賴性或弱約束依賴性的情況,參照圖7F-圖7G所論述的,依賴性確定生成器可以返回其他依賴性。字段依賴性列1196存儲項的集合,每一項用于每個字段依賴性。雖然在本發(fā)明的一個實(shí)施方式中每一項包括屬性方法關(guān)鍵字,但在本發(fā)明的可替換實(shí)施方式中,每項可以具有與來自排序依賴性的集合項相同的結(jié)構(gòu)。訂閱依賴性在本發(fā)明的一個實(shí)施方式中,非訂閱和訂閱的生成器依賴性都被支持。當(dāng)為給定方法聲明訂閱生成器依賴性且從該給定方法實(shí)例化給定生成器時,運(yùn)行時可以在運(yùn)行時期間解析符合訂閱標(biāo)準(zhǔn)的一組零個或多個生成器(基于其他生成器的存在)。雖然在本發(fā)明的一個實(shí)施方式支持非訂閱和訂閱的生成器依賴性,但是可替換實(shí)施方式僅支持非訂閱。此外,雖然在本發(fā)明的一個實(shí)施方式中支持兩種類型的訂閱依賴性(吸收和粘附),但是本發(fā)明的可替換實(shí)施方式支持更多、更少和/或不同類型的訂閱生成器依賴性。圖14A-圖14C是示出了根據(jù)本發(fā)明的一個實(shí)施方式的吸收和粘附訂閱的框圖。圖14A是根據(jù)本發(fā)明的一個實(shí)施方式的圖12中的訂閱日志1250的示例的框圖。雖然圖14A示出作為表格的這種日志結(jié)構(gòu),但是應(yīng)當(dāng)理解可以使用任意合適的數(shù)據(jù)結(jié)構(gòu)(例如,哈希映射表)。圖14B是示出根據(jù)本發(fā)明的一個實(shí)施方式的非偶然、吸收訂閱生成器依賴性的示例性生成器的框圖。圖14C是示出根據(jù)本發(fā)明的一個實(shí)施方式的非偶然、粘附訂閱生成器依賴性的示例生成器的框圖。圖14A的表中顯示了填充有在圖14B-圖14C的示例中使用的內(nèi)容的兩行。圖14B-圖14C中使用帶圈的數(shù)字來示出根據(jù)本發(fā)明的一個實(shí)施方式執(zhí)行操作的順序。在圖14A中,訂戶的生成器關(guān)鍵字列1400、訂閱類型列1405以及用于觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410被顯示用于分別存儲對應(yīng)于列名稱的內(nèi)容。此外,圖14A顯示父鏈接模式列1425用于存儲訂閱依賴性的父生成器的鏈116接模式;該信息將參考圖14B-圖14C被更詳細(xì)地描述。圖14A還顯示用于吸收訂閱的匹配生成器列1415和完成列1420。匹配生成器列1415用于存儲符合吸收訂閱的訂閱標(biāo)準(zhǔn)的觸發(fā)生成器的生成器關(guān)鍵字,而完成列1420用于在當(dāng)前組的生成器圖形的給定執(zhí)行期間跟蹤吸收訂閱是否已完成。匹配生成器列1415和完成列1420提供另外的可選優(yōu)化,其允許掃描在自動生成器圖形生成和生成器圖形執(zhí)行之間劃分的被實(shí)例化的生成器的工作,這在后面描述。圖14A還顯示用于粘附訂閱的父類列1430、父方法列1435以及父實(shí)例列1437。父類列1430、父方法列1435以及父實(shí)例列1437分別存儲被創(chuàng)建用于粘附訂閱的父生成器的類關(guān)鍵字、方法關(guān)鍵字以及實(shí)例關(guān)鍵字。此外,圖14A還顯示依賴性確定生成器引用列1421存儲創(chuàng)建訂閱的依賴性確定生成器的引用。吸收訂閱在吸收訂閱生成器依賴性中,該依賴性是符合吸收訂閱標(biāo)準(zhǔn)的當(dāng)前生成器圖形結(jié)構(gòu)的所有生成器的集合。參考圖14B,帶圈的1表示生成器1450被實(shí)例化(例如,由于生成器1450(作為感興趣生成器)的命名、由于生成器1450(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等等)。生成器1450基于方法,該方法的生成器依賴性聲明包括生成器依賴性(例如,具有參量IDX)的方法。帶圈的2表示生成器1450的生成器依賴性被處理以標(biāo)識生成器1455。帶圈的3表示生成器1450在生成器圖形中被鏈接到作為子生成器的生成器1455。帶圈的4表示生成器1455的執(zhí)行。生成器1455是依賴性確定生成器,包括生成器依賴性聲明代碼,該代碼指示吸收訂閱生成器依賴性并指示吸收訂閱標(biāo)準(zhǔn)。這樣,生成器1455的執(zhí)行導(dǎo)致填充訂閱日志。參考圖14A117的第一行中的示例,訂戶的生成器關(guān)鍵字列1400、訂閱類型列1405、用于觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410、父鏈接模式列1425以及依賴性確定生成器引用列1421分別填充有生成器1450的生成器關(guān)鍵字、用于指示訂閱是吸收類型的指示、包含在生成器1455中的吸收訂閱標(biāo)準(zhǔn)、鏈接到生成器1455的生成器1450的鏈接模式(在吸收訂閱的情況下,其為參量依賴性且包括參量ID,但是其粘附指示符在以上示例中指示沒有粘附的參量IDX)和生成器1455(創(chuàng)建訂閱的依賴性確定生成器)的引用。帶圈的5A-圖5N表示生成器1460A-N的實(shí)例化。在該示例中,生成器1460A-N符合吸收訂閱標(biāo)準(zhǔn),由此為觸發(fā)生成器。這樣,帶圈的6A-N指示生成器1450到生成器1460A-N的鏈接(在以上示例中,通過參量IDX)。帶圈的7指示對于生成器圖形的當(dāng)前執(zhí)行,吸收訂閱依賴性已完成,且生成器1450之后被執(zhí)行。在本發(fā)明的一個實(shí)施方式中,吸收訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字任意關(guān)鍵字中的一個或多個。因此,在生成器關(guān)鍵字包括類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字的本發(fā)明的實(shí)施方式中,訂閱標(biāo)準(zhǔn)可以是一個或多個這樣的關(guān)鍵字。例如,參考圖IIC,針對符合訂閱標(biāo)準(zhǔn)的生成器對實(shí)例化的生成器的掃描是對生成器圖形結(jié)構(gòu)的第一個三列中的一個或多個進(jìn)行掃描以確定實(shí)例化的生成器的關(guān)鍵字是否與吸收訂閱標(biāo)準(zhǔn)的關(guān)鍵字匹配。雖然在本發(fā)明的一個實(shí)施方式中吸收訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字的任意關(guān)鍵字中的一個或多個,但是在本發(fā)明的可替換實(shí)施方式中吸收訂閱標(biāo)準(zhǔn)被限定為組成生成器關(guān)鍵字的關(guān)鍵字的子集。粘附訂閱在粘附訂閱生成器依賴性中,該依賴性使父生成器針對符合粘附訂閱標(biāo)準(zhǔn)的每一個生成器而被實(shí)例化。參考圖14C,帶圈的1指示生成器1470被實(shí)例化(作為生成器1470(由于感興趣生成器)的命名、由于通過排序依賴性(例如,由于排序依賴性或弱約束依賴性等)生成器1470(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等等)。生成器1470是依賴性確定生成器,包括生成器依賴性聲明代碼,該代碼指示粘附訂閱、用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)以及被創(chuàng)建的父生成器的粘附訂閱特性。生成器1470的執(zhí)行導(dǎo)致填充訂閱日志。參考圖14A的第二行中的示例,訂戶的生成器關(guān)鍵字列1400、訂閱類型列1405以及用于觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410分別填充有生成器1470的生成器關(guān)鍵字、用于指示訂閱是粘附類型的指示以及包含在生成器1470中用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)。此外,父類列1430、父方法列1435、父實(shí)例列1437以及鏈接到觸發(fā)生成器的父生成器的鏈接模式列1425填充有被創(chuàng)建的父生成器的粘附訂閱特性——在本發(fā)明的該實(shí)施方式中,分別是被實(shí)例化的父生成器的類、被實(shí)例化的父生成器的方法、被實(shí)例化的父體生成器的實(shí)例(如果被留為空,則等于觸發(fā)生成器的實(shí)例關(guān)鍵字)、鏈接模式(其在粘附訂閱的情況下可以是1)參量、字段或排序依賴性;2)參量ID(如果參量依賴性——父生成器的參量ID被鏈接到觸發(fā)生成器(例如參量IDY))。此外,依賴性確定生成器引用列1421填充有創(chuàng)建訂閱的依賴性確定生成器引用(圖14C中的生成器1470)。參考圖14C,帶圈的2指示生成器1475被實(shí)例化(例如,由于生成器1475(作為感興趣生成器)的命名、由于生成器1475(作為感興趣生成器的子代)的自動發(fā)現(xiàn),等等)。此外,可以確定生成器1475是否符合用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)。帶圈的3指示響應(yīng)于該觸發(fā)生成器1475,基于用于被創(chuàng)建的父生成器的粘附訂閱特性來實(shí)例化生成器1480。參考圖14C的示例性第二行,類關(guān)鍵字、方法關(guān)鍵字、實(shí)例關(guān)鍵字以及鏈接模式分別從父類列1430、父方法列1435、實(shí)例列1347以及父鏈接模式列1425中被訪問。父生成器具有生成器關(guān)鍵字,該關(guān)鍵字包括被訪問的類關(guān)鍵字、被訪問的實(shí)例關(guān)鍵字(如果被留為空,則為觸發(fā)生成器(圖14C中的生成器1475)的實(shí)例關(guān)鍵字)以及被訪問的方法關(guān)鍵字——在圖14C的示例中,為生成器1480。帶圈的4指示實(shí)例化的父生成器1480在生成器圖形中通過被訪問的連接模式被鏈接到子觸發(fā)生成器1475(在以上示例中,鏈接模式類型=參量依賴性;鏈接模式參量ID=Y)。還有在參量依賴性的情況中,在帶圈的4處,粘附指示符被設(shè)定成指示粘附——在用于實(shí)例化的父生成器1480所基于的方法的生成器的依賴性聲明陳述的位置中的生成器依賴性對于生成器1480應(yīng)當(dāng)被忽略一一這防止粘附訂閱生成器依賴性創(chuàng)建的鏈接被后來的自動生成器圖形生成操作重寫。在本發(fā)明的一個實(shí)施方式中,用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字的關(guān)鍵字的一個或多個。因此,在生成器關(guān)鍵字包括類關(guān)鍵字、實(shí)例關(guān)鍵字以及方法關(guān)鍵字的實(shí)施方式中,用于觸發(fā)的粘附訂閱標(biāo)準(zhǔn)可以是類、實(shí)例以及方法關(guān)鍵字中的一個或多個。例如,參考圖11C,針對符合用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)的生成器,對實(shí)例化的生成器的掃描是對生成器圖形結(jié)構(gòu)的第一到第三列中的一個或多個進(jìn)行掃描以確定實(shí)例化的生成器的關(guān)鍵字是否匹配用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)的關(guān)鍵字。雖然在本發(fā)明的一個實(shí)施方式中,用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)可以是組成生成器關(guān)鍵字的關(guān)鍵字的一個或多個,但是在本發(fā)明的可替換實(shí)施方式中,吸收訂閱標(biāo)準(zhǔn)可以是進(jìn)一步限定數(shù)量的組成生成器關(guān)鍵字的關(guān)鍵字。圖14D-圖14E示出了根據(jù)本發(fā)明的一個實(shí)施方式的基于體依賴性確定生成器的父生成器的選擇。雖然圖14D-圖14E參考參量依賴性被描述,但是本發(fā)明的實(shí)施方式可以支持使用排序和字段依賴性。圖14D示出了根據(jù)本發(fā)明的一個實(shí)施方式的基于粘附訂閱創(chuàng)建的父依賴性確定生成器的父生成器的選擇。像圖14C,圖14D顯示粘附訂閱生成器1470和觸發(fā)生成器1475;但是,生成器1480不同,圖14D顯示通過粘附訂閱生成器1470的粘附訂閱創(chuàng)建的依賴性確定生成器1480。此外,圖14D顯示粘附訂閱的連接模式是參量依賴性、參量ID:X,且粘附指示符=粘附。如果從生成器1475到依賴性確定生成器1480的虛曲線所示,依賴性確定生成器返回的DEP可以基于生成器1475本身的輸出(參量ID-X的參量)。在圖14D中,依賴性確定生成器1480在生成器1482上返回非訂閱向上聲明的生成器依賴性,具有指示參量依賴性和參量ID:Y的鏈接模式。雖然參量IDX和Y在圖14D中用于顯示它們可以不同,但應(yīng)當(dāng)理解它們可以相等。圖14E示出了根據(jù)本發(fā)明的一個實(shí)施方式的基于子依賴性確定生成器創(chuàng)建的父依賴性確定生成器的父生成器的選擇,其中子依賴性確定生成器被排序依賴性鏈接。圖14E在結(jié)構(gòu)上與圖14D類似;具體地,生成器1475、1480以及1482用生成器1486、1496以及1498來替換。但是,不同于在生成器1480和1475之間創(chuàng)建鏈接的粘附訂閱生成器1470,生成器1486在依賴性確定生成器1494上具有排序依賴性(例如,通過向上依賴性或弱約束依賴性創(chuàng)建),其通過非訂閱向上聲明的依賴性來創(chuàng)建依賴性確定生成器1496。值得注意粘附訂閱和非訂閱向上聲明的依賴性(例如,通過向上依賴性和/或弱約束依賴性而被創(chuàng)建)導(dǎo)致自下而上建立生成器圖形(而不是之前所述的自上而下建立)。此外,該自下而上建立不限于單個層的建立,而是刻意多個層(例如,如果由于粘附訂閱或非訂閱向上聲明的依賴性,父生成器被實(shí)例化,相同的父生成器還可以是用于粘附訂閱的觸發(fā)生成器或可以包括非訂閱向上聲明的依賴性且使另一個父生成器被實(shí)例化,等)。在這種意義上,粘附訂閱和非訂閱向上聲明的依賴性使生成器圖形的建立倒置。雖然在本發(fā)明的一些實(shí)施方式中,由粘附訂閱特性標(biāo)識的父生成器是標(biāo)準(zhǔn)生成器(見圖14C),但是可替換實(shí)施方式可以被實(shí)施為支持其他類型的生成器的標(biāo)識。例如,在允許粘附訂閱特性標(biāo)識依賴性確定生成器的本發(fā)明的實(shí)施方式中(見圖14D),這樣的依賴性確定生成器可以訪問觸發(fā)生成器的輸出,且可以基于該輸出觸發(fā)作為需要粘在子體上的父生成器的特定生成器的創(chuàng)建(該父生成器可以已經(jīng)存在或不存在;如果已經(jīng)存在,則被簡單鏈接且子生成器被添加到其參量;如果不存在,則其被創(chuàng)建)。在依賴性確定生成器返回常量的情況下生成器模擬吸收訂閱。依賴性確定生成器返回生成器(其實(shí)例關(guān)鍵字對于每一個觸發(fā)生成器是唯一的)(例如,返回其實(shí)例關(guān)鍵字是觸發(fā)生成器的生成器關(guān)鍵字的生成器)的情況造成于每一個子生成器有單獨(dú)的父生成器并且被稱為純粘附訂閱。依賴性確定生成器返回對每一個觸發(fā)生成器既不是常量也不是唯一的實(shí)例關(guān)鍵字的情況可以混合純粘附訂閱和吸收訂閱的行為且被稱為非純粘附訂閱。示例性優(yōu)點(diǎn)如之前所述,在本發(fā)明的一個實(shí)施方式中,生成器依賴性針對方法被聲明作為規(guī)定使用合適實(shí)例而不使用手動調(diào)用排序代碼的方法調(diào)用排序的方式(其中合適的實(shí)例包括作為參量使用的實(shí)例、被實(shí)例方法使用的實(shí)例以及被類方法使用的元類實(shí)例);有效地,生成一些或全部手動調(diào)用排序代碼的的工作被以下替代1)編寫生成器依賴性聲明的應(yīng)用程序員完成的工作;以及2)發(fā)現(xiàn)并建立生成器圖形并執(zhí)行該生成器圖形的生成器的運(yùn)行時完成的工作。盡管編寫運(yùn)行時的工作量相對較大,但是其只需要編寫一次就可以用于執(zhí)行為運(yùn)行時編寫的面向?qū)?yīng)應(yīng)用;相比之下,對于一般的應(yīng)用,編寫生成器依賴性聲明的工作量與編寫手動調(diào)用排序代碼相比相對較低。非動態(tài)生成器依賴性提供用于規(guī)定無條件方法調(diào)用排序代碼的方式,從而避免對編寫無條件手動調(diào)用排序代碼的需要。偶然生成器依賴性提供規(guī)定有條件處理的方式,從而取代對編寫有條件手動調(diào)用排序代碼的需要。支持生成器依賴性允許集合被返回的生成器,其提供規(guī)定在集合作為參數(shù)被傳遞122之前的集合的填充,從而不需要編寫手動調(diào)用排序代碼中的多個調(diào)用以在該集合被作為參數(shù)傳遞之前填充該集合。支持訂閱提供這樣的環(huán)境,在該環(huán)境中程序員不需要為每一種類型的被收聽(listen)的對象編寫特定的收聽代碼(例如,在面向生成器圖形編程的電子數(shù)據(jù)表中,吸收訂閱可以用于通過使該吸收訂閱標(biāo)準(zhǔn)標(biāo)識在范圍內(nèi)的單元來計算一定范圍的單元的平均值(每一個單元是一個生成器),并在每一次新生成器被添加到吸收訂閱時重新計算平均值;在面向生成器圖形編程的電子數(shù)據(jù)表中,粘附訂閱可以通過使粘附訂閱標(biāo)準(zhǔn)標(biāo)識保持當(dāng)前值內(nèi)容的單元和標(biāo)識執(zhí)行當(dāng)前值轉(zhuǎn)換的被實(shí)例化的粘附生成器的粘附訂閱特性而用作當(dāng)前值轉(zhuǎn)換器(粘附訂閱創(chuàng)建的生成器(保持轉(zhuǎn)換后的量)之后可以用于其他單元中的顯示))。操作新實(shí)例命令圖15是根據(jù)本發(fā)明的一個實(shí)施方式的用于實(shí)例化新實(shí)例的流程圖。如之前參考圖10所述,圖10中新類模塊1095可以被實(shí)施為新實(shí)例模塊1098的一部分。圖15的流程圖假定該實(shí)施方式并被新實(shí)例模塊1098執(zhí)行;圖15的流程圖中表示新類模塊1095的部分被顯示為虛線塊1580,其包括塊1540和1550。響應(yīng)于新實(shí)例命令(塊1510),控制傳遞到塊1520。在塊1520中,確定是否己經(jīng)存在實(shí)例。如果不存在,則控制傳遞到塊1530,否則,實(shí)例不需要被實(shí)例化且控制傳遞到1570,在塊1570中,流程圖結(jié)束。在支持實(shí)例關(guān)鍵字的一個實(shí)施方式中,通過訪問用于被提供作為新實(shí)例命令的一部分的實(shí)例關(guān)鍵字(和類關(guān)鍵字,如果實(shí)例關(guān)鍵字在類中不需要是唯一的)的圖10中的實(shí)例跟蹤結(jié)構(gòu)1065來執(zhí)行塊1520。在塊1530中,確定實(shí)例的類定義是否已經(jīng)被裝載。如果沒有,則控制傳遞到塊1540;否則,控制傳遞到塊1560。在支持類關(guān)鍵字的一個實(shí)施方式中,通過訪問用于被提供作為新實(shí)例命令的類關(guān)鍵字的圖10中的類跟蹤結(jié)構(gòu)1092來執(zhí)行塊1540。在塊1540,類被裝載且控制傳遞到塊1550。在塊1550,類定義根據(jù)類關(guān)鍵字被存儲并自省,包括任意生成器依賴性聲明陳述(根據(jù)類中的方法關(guān)鍵字被存儲,見圖IID)??刂茝膲K1550傳遞到塊1560。參考圖10,在塊1540和1550執(zhí)行以下1)類從類定義被裝載,該類定義將業(yè)務(wù)邏輯1010包括到類1054中(該裝載使類的方法和生成器依賴性聲明被存儲在方法和生成器依賴性聲明1056中);2)類可以被添加到類跟蹤結(jié)構(gòu)1092;以及3)方法可以被添加到方法跟蹤結(jié)構(gòu)1058。此外,方法的輸出類可以被裝載。在塊1560,類的實(shí)例可以被實(shí)例化并根據(jù)實(shí)例關(guān)鍵字被存儲。參考圖10,該實(shí)例可以被實(shí)例化成實(shí)例1052;且該實(shí)例可以被添加到實(shí)例跟蹤結(jié)構(gòu)1065??刂茝膲K1550傳遞到塊1570,在塊1570中流程圖結(jié)束。在使用對象關(guān)系映射技術(shù)的本發(fā)明的一些實(shí)施方式中,作為塊1560的一部分,數(shù)據(jù)可以從外部數(shù)據(jù)源被裝載以填充實(shí)例的字段。在本發(fā)明的一些實(shí)施方式中,類和實(shí)例可以在具有面向生成器圖形編程支持的運(yùn)行時不知道的情況下被裝載/實(shí)例化(例如,在圖9A中,如果運(yùn)行時915裝載/實(shí)例化而運(yùn)行時910不知道)。在這種情況下,本發(fā)明的實(shí)施方式還支持實(shí)例關(guān)鍵字,該實(shí)例關(guān)鍵字是類的實(shí)例的實(shí)例關(guān)鍵字(保持兩個元素實(shí)例關(guān)鍵字性質(zhì),指示關(guān)鍵字標(biāo)識符是否是對實(shí)例或?qū)α硪粋€對象(例如串)的引用;和關(guān)鍵字標(biāo)識符,可以是實(shí)例的引用或另一個對象(例如串)),塊1520和1530詢問實(shí)例和類是否在具有面向生成器圖形編程支持的運(yùn)行時知道的情況下被實(shí)例化/裝載。在具有面向生成器圖形編程支持的運(yùn)行時不知道已經(jīng)裝載的類的情況下,類可以不被裝載,但是類可以被添加到類跟蹤結(jié)構(gòu)1092且方法可以被添加到方法跟蹤結(jié)構(gòu)1058。在在具有面向生成器圖形編程支持的運(yùn)行時不知道已經(jīng)實(shí)例化的實(shí)例的情況下,實(shí)例可以不被實(shí)例化,但是實(shí)例可以被添加到實(shí)例跟蹤結(jié)構(gòu)1065。新生成器和不覆蓋侖令圖16是根據(jù)本發(fā)明的一個實(shí)施方式的實(shí)例化新生成器和不覆蓋生成器的流程圖。參考圖10,圖15的流被自動生成器圖形生成模塊1040和覆蓋生成器模塊1045(或,參考圖10的可替換實(shí)施方式所述的處理覆蓋和不覆蓋的模塊)執(zhí)行。響應(yīng)于新生成器命令(塊1600),控制傳遞到塊1605。在本發(fā)明的一個實(shí)施方式中,新生成器命令可以響應(yīng)于各種情況來執(zhí)行。下面的表2標(biāo)識根據(jù)本發(fā)明的一個實(shí)施方式的各種情況和傳遞的參數(shù)。表2<table>tableseeoriginaldocumentpage125</column></row><table><table>tableseeoriginaldocumentpage126</column></row><table>在塊1065中,確定生成器是否已經(jīng)存在。如果不存在,則控制傳遞到塊1610;否則,控制傳遞到1670。通過訪問作為新生成器命令的一部分的被標(biāo)識的類、實(shí)例和方法(例如,通過關(guān)鍵字和/或引用)來執(zhí)行塊1605。在支持生成器關(guān)鍵字的一個實(shí)施方式中,通過訪問用于被提供作為新生成器命令的生成器關(guān)鍵字(表2的調(diào)用的生成器列中的生成器關(guān)鍵字)的圖10中生成器圖形結(jié)構(gòu)1060來執(zhí)行塊1605。在塊1610中,利用新實(shí)例命令調(diào)用新實(shí)例模塊,并且控制傳遞到塊1615。在本發(fā)明的一個實(shí)施方式中,通過使用來自表2的調(diào)用的生成器列中的生成器關(guān)鍵字的實(shí)例關(guān)鍵字來調(diào)用圖15的流程圖從而執(zhí)行塊1610。在塊1615中,生成器的實(shí)例的類定義被訪問且控制傳遞到塊1620。參考圖10,通過使用來自表2的調(diào)用的生成器列中的生成器關(guān)鍵字的類關(guān)鍵字來執(zhí)行塊1615,從而根據(jù)類跟蹤結(jié)構(gòu)1092訪問類1054中合適的一個。在塊1620,生成器的方法和生成器依賴性聲明陳述被訪問且控制傳遞到塊1625。參考圖10,通過使用來自表2的調(diào)用的生成器列中的生成器關(guān)鍵字的方法關(guān)鍵字來執(zhí)行塊1620,從而訪問來自位于塊1615中的類的方法和生成器依賴性聲明1056中合適的一個。在塊1625,生成器被添加到生成器圖形且控制傳遞到塊1630。參考圖IIC中的本發(fā)明的實(shí)施方式,第一個三列被填充。在塊1630,對于每一個注冊的訂閱,訂閱過濾標(biāo)準(zhǔn)被處理以確定生成器是否匹配。參考圖14A中的本發(fā)明的實(shí)施方式,當(dāng)訂閱被添加到訂閱日志時該訂閱被認(rèn)為已注冊。注冊訂閱的示例性操作在后面描述。塊1630是可選優(yōu)化,其允許掃描實(shí)例化的生成器的工作在生成器圖形生成和生成器圖形執(zhí)行之間被劃分。這樣,本發(fā)明的可替換實(shí)施方式可以不執(zhí)行塊1630。在塊1635,如果由于依賴性生成器被調(diào)用,則生成器被鏈接到生成器圖形??刂茝膲K1635傳遞到塊1640。執(zhí)行塊1635的方式取決于導(dǎo)致新生成器命令被執(zhí)行的情況(見圖20)。例如,如果所述情況是感興趣生成器或被覆蓋的生成器,則由于依賴性生成器不被調(diào)用并且不做任何事。相反,如果情況是非訂閱向下聲明的,則由于非訂閱向下聲明的依賴性而調(diào)用生成器;且參考圖IIC中的本發(fā)明的實(shí)施方式,執(zhí)行以下l)調(diào)用的子生成器的列1150(表2的調(diào)用的生成器列)中的父生成器鏈接(表2的調(diào)用的生成器列)連同到父調(diào)用器生成器的行的父生成器引用(表2的調(diào)用器生成器列)和依賴性確定生成器引用(表2的依賴性確定生成器引用列)被修改;以及2)父調(diào)用器生成器的行的子生成器鏈接列1160(表2的調(diào)用器生成器列)連同到調(diào)用的子生成器的行的引用(表2的調(diào)用的生成器列)、依賴性確定生成器引用(表2的依賴性確定生成器引用列)和鏈接模式(根據(jù)表2的連接模式列被設(shè)定)被修改。相反,如果情況是粘附訂閱,則由于觸發(fā)生成器被標(biāo)識而調(diào)用生成器;且參考圖11C中的本發(fā)明的實(shí)施方式,執(zhí)行以下1)調(diào)用器子生成器的父生成器鏈接列1150(表2的調(diào)用器生成器列)連同到父調(diào)用的生成器的行的父生成器引用(表2的調(diào)用的生成器列)和依賴性確定生成器引用(表2的依賴性確定生成器引用列)被修改;以及2)父調(diào)用的生成器的行的子生成器鏈接列1160(表2的調(diào)用的生成器列)連同到調(diào)用器子生成器的行的引用(表2的調(diào)用器生成器列)、依賴性確定生成器引用(表2的依賴性確定生成器引用列)、鏈接模式(根據(jù)表2的連接模式列被設(shè)定)和被設(shè)置為指示粘附的粘附指示符被修改。在這個方面,非訂閱向上聲明的依賴性的情況以與粘附訂閱類似的方式被處理。在塊1640中,生成器被標(biāo)記為未執(zhí)行且控制傳遞到塊1645。參考圖11C中本發(fā)明的實(shí)施方式,合適行的增量執(zhí)行標(biāo)記列1180為填充有未執(zhí)行的指不。在塊1645中,確定生成器是否具有任何依賴性且沒有被覆蓋。如果是,則控制傳遞到塊1650;否則,控制傳遞到塊1665。通過檢査在塊1620中訪問的生成器依賴性聲明以及表2的調(diào)用類型列來執(zhí)行塊1645。在塊1650中,對于現(xiàn)在被解析的生成器依賴性聲明中的每一個依賴性,確定生成器的數(shù)量且為每一個生成器調(diào)用新生成器命令??刂茝膲K1650傳遞到塊1655。本發(fā)明的不同實(shí)施方式在不同時間確定不同類型的依賴性;在本發(fā)明的一個示例性實(shí)施方式中執(zhí)行塊1650的方式將在后面描述。在塊1655中,如果生成器的所有相關(guān)生成器存在并已經(jīng)被執(zhí)行,則該生成器被添加到執(zhí)行開始日志??刂茝膲K1655傳遞到塊1660。對于作為該流程的當(dāng)前重復(fù)的一部分而實(shí)例化的給定生成器,塊1655被執(zhí)行,然后用于給定生成器所依賴于的生成器的該流程的其他重復(fù)的調(diào)用將返回所述生成器的執(zhí)行狀態(tài)(見塊1660)(例如,參考圖IIC的本發(fā)明的實(shí)施方式,來自合適行的增量執(zhí)行標(biāo)記列1180的狀態(tài))。如果所有依賴性生成器存在且所有依賴性生成器的執(zhí)行狀態(tài)被執(zhí)行,則當(dāng)前重復(fù)的生成器被添加到執(zhí)行開始曰志。在塊1660中,生成器的執(zhí)行狀態(tài)作為參數(shù)被返回。在塊1670中,與塊1635類似,如果由于生成器被調(diào)用,則生成器被鏈接到生成器圖形??刂茝膲K1670傳遞到塊1675。出于各種原因,可以達(dá)到塊1670。例如,由于響應(yīng)于生成器覆蓋命令之前生成器被實(shí)例化但沒有被鏈接到生成器圖形,則可以達(dá)到塊1670。作為另一個示例,由于生成器已經(jīng)是生成器圖形的一部分且被添加到另一個生成器圖形(例如,響應(yīng)于是感興趣生成器、感興趣生成器的子代等而之前被實(shí)例化),可以達(dá)到塊1670。在塊1675中,確定新生成器流程是否由于覆蓋、粘附訂閱依賴性或非訂閱向上聲明的依賴性而被調(diào)用。如果是,則控制傳遞到塊1680;否則,控制傳遞到塊1660。通過檢査表2的調(diào)用類型列來了解這是否是對于被覆蓋的生成器、粘附訂閱依賴性或非訂閱向上聲明的依賴性的調(diào)用,從而執(zhí)行塊1675。在塊1680中,與塊1640類似,生成器被標(biāo)記為未執(zhí)行且控制傳遞到塊1665。出于各種原因,可以達(dá)到塊1680。在塊1665中,如果生成器不存在于執(zhí)行開始日志,則生成器被添加到執(zhí)行開始日志,且控制傳遞到塊1660。響應(yīng)于生成器不覆蓋命令(塊1690),控制傳遞到塊1695。在塊1695,生成器被標(biāo)記為沒有被覆蓋且控制傳遞到塊1640。參考圖11C的本發(fā)明的實(shí)施方式,生成器的行的生成器輸出緩存和覆蓋生成器輸出指示列1170被訪問且被改變以指示該生成器不再被覆蓋。繼續(xù)該流程,塊1640可以通向塊1645,且如果生成器具有任何依賴性,則塊1640可以通向塊1650,塊1650使生成器下面的生成器圖形被發(fā)現(xiàn)且如果還沒有則被建立。如果該生成器下面的生成器圖形己經(jīng)被發(fā)現(xiàn)并建立,則新生成器命令的調(diào)用可以使流程從1600到1605,到1670等;此外,在塊1660中的生成器下的圖形的生成器的執(zhí)行狀態(tài)的返回將確定生成器是否被添加到塊1655中的執(zhí)行開始日志。但是,如果生成器下的生成器圖形沒有被發(fā)現(xiàn)并建立,則新生成器命令的調(diào)用使生成器在流程從1600到1605,到1610等的過程中被發(fā)現(xiàn)并建立。圖17是根據(jù)本發(fā)明的一個實(shí)施方式的圖16的塊1650的流程圖。因此,在塊1650中,控制從塊1645流向塊1700。在塊1700中,針對生成器的生成器依賴性聲明(每一個用于每個參量依賴性、字段依賴性、排序依賴性、向上依賴性以及弱約束依賴性)中的每一個依賴性,下面的塊1705-1745被執(zhí)行。參考圖10和11D,方法跟蹤結(jié)構(gòu)被訪問以確定關(guān)于生成器依賴性的信息。還應(yīng)當(dāng)理解塊1715、1725、1730、1740、1745以及1750是在執(zhí)行生成器圖形之前被執(zhí)行時的優(yōu)化。在塊1705中,確定依賴性是否是由于粘附依賴性而已經(jīng)被鏈接的參量依賴性。如果是,則控制傳遞到塊1710,其中針對該依賴性,流程結(jié)束;否則控制傳遞到塊1715。關(guān)于圖11C中所示的本發(fā)明的實(shí)施方式,粘附指示符被檢查以確定該依賴性的參量ID是否屬于粘附訂閱參量依賴性或向上聲明的參量依賴性。在塊1715中,確定依賴性是否是偶然依賴性。如果是,則控制傳遞到塊1720;否則,控制傳遞到塊1725。通過檢查依賴性鎖標(biāo)識的子生成器的生成器依賴性聲明來確定其是否為空(子生成器是無關(guān)生成器)從而執(zhí)行塊1715。參考圖13A-圖13J,這對具有帶虛線圈的數(shù)字的生成器可以為真(例如,在圖13D中,生成器CU::IV::DELTA),但是對其他生成器為假(例如,在圖13D中,生成器CU::IY::BETA)。因此,參考圖13D,塊1715由帶圈的1、4、和8來表示。塊1715和從該塊1715經(jīng)過塊1725-1750的流程是一種優(yōu)化,兩者都避免添加/鏈接具有帶虛線圈的數(shù)字的生成器到生成器圖形,也避免在自動生成器圖形生成和生成器圖形執(zhí)行之間劃分執(zhí)行生成器的工作。在塊1720中,依賴性確定生成器的新生成器命令被調(diào)用且流程結(jié)束。例如,參考圖13D,塊1720引起帶圈的5、6和7所表示的。在塊1725中,依賴性確定生成器被執(zhí)行且控制傳遞到塊1730。例如,參考圖13D,塊1725由帶圈的11(從而,之前所述實(shí)施方式示出的圖17的流程,其中圖13D的帶圈的9和IO沒有被執(zhí)行)表示。在塊1730中,確定依賴性是否是非訂閱依賴性。如果是,則控制傳遞到1750;否則控制傳遞到塊1740。換句話說,在塊1725中,依賴性確定生成器的方法中的生成器依賴性確定代碼被執(zhí)行,所述代碼是父生成器的生成器依賴性聲明中的一部分。執(zhí)行該生成器依賴性聲明代碼(該代碼可以標(biāo)識依賴性是否是訂閱依賴性),可以確定父生成器的生成器依賴性類型。參考圖13D中的示例,帶圈的11可以使圖17的流程從塊1730傳遞到塊1750。在塊1750中,使用表2中所述的參量,包括在1725中執(zhí)行的依賴性確定生成器引用,來確定由塊1725中的依賴性確定生成器的執(zhí)行返回的生成器的數(shù)量,且為每一個生成器調(diào)用新生成器命令。例如,參考圖13D,塊1750引起帶圈的12和13以及帶圈的C和D。參考圖14B的吸收訂閱示例,塊1725表示帶圈的4;其使流程經(jīng)過塊1730傳遞到塊1740。在塊1740中,訂閱被添加到訂閱日志,且如果該訂閱是吸收的,則被標(biāo)記為未完成。控制從塊1740傳遞到塊1745。參考圖14A中所示的本發(fā)明的實(shí)施方式,訂閱日志被填充有之前所述的訂閱。在塊1745中,所有被實(shí)例化的生成器被掃描以了解它們是否匹配訂閱的標(biāo)準(zhǔn)(從而是觸發(fā)生成器),且任意匹配被處理。圖18是根據(jù)本發(fā)明的一個實(shí)施方式的圖17的塊1745的流程圖。因此,控制從塊1740流向塊1745中的塊1800。在塊1800中,對于每一個被實(shí)例化的生成器,以下的塊1810-1830被執(zhí)行。在塊1810中,確定生成器是否符合訂閱的標(biāo)準(zhǔn)。如果符合,則控制傳遞到塊1815;否則,控制傳遞到塊1830,其中針對當(dāng)前被處理的生成器,流程結(jié)束。參考圖IIC和14A中所示的本發(fā)明的實(shí)施方式,生成器圖形被131訪問以確定它們是否包括符合訂閱標(biāo)準(zhǔn)的生成器。處理匹配的生成器的方式依據(jù)被處理的訂閱的類型。參考塊1815,如果訂閱是吸收類型,則控制傳遞到塊1825;否則,控制傳遞到塊1820。塊1815可以響應(yīng)于表2的在1740或2235中添加的訂閱的類型而被執(zhí)行。在塊1825中,匹配的生成器被添加到訂閱日志且具有吸收訂閱的生成器被鏈接到匹配的生成器。控制從塊1825傳遞到塊1830。參考圖IIC和14A-圖14B中所示的本發(fā)明的實(shí)施方式,以下被執(zhí)行1)來自觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410的訂閱標(biāo)準(zhǔn)在塊1810中被使用且匹配的生成器被定位(生成器1460A-N中的一個);2)匹配的生成器被添加到訂閱的行處的匹配的生成器列1415;以及3)具有吸收訂閱的生成器(例如生成器1450)被鏈接到圖11C的生成器圖形結(jié)構(gòu)中的匹配的生成器(例如,生成器1460A-N中的一個)(使用從用于給定的吸收訂閱的訂閱日志MA的依賴性確定生成器引用列1421中提取的依賴性確定生成器引用)。在塊1820中,新生成器命令被調(diào)用,用于被創(chuàng)建的父生成器??刂茝膲K1820傳遞到塊1830,在塊1830中,對于在塊1800中選擇的當(dāng)前生成器流程圖結(jié)束。參考圖14A和14C中所示的本發(fā)明的實(shí)施方式,以下被執(zhí)行1)來自觸發(fā)生成器的訂閱標(biāo)準(zhǔn)列1410的訂閱標(biāo)準(zhǔn)在塊1810中被使用且匹配的生成器被定位(例如,生成器1475);以及2)新生成器命令被調(diào)用,具有按以下設(shè)定的表2的參數(shù)a)調(diào)用類型是粘附訂閱;b)調(diào)用器生成器是調(diào)用器子生成器(例如生成器1475)的生成器關(guān)鍵字;c)調(diào)用的生成器是被創(chuàng)建的調(diào)用的父生成器(例如生成器1480)的生成器關(guān)鍵字,使用來自被創(chuàng)建的父生成器的粘附訂閱特性的父類、實(shí)例和方法關(guān)鍵字(圖14A,列1430和1435和1437)(如果實(shí)例關(guān)鍵字為空,調(diào)用器子生成器的實(shí)例關(guān)鍵字被使用);以及d)調(diào)用的父生成器的鏈接模式(圖14A,鏈接模式列1425),和e)從用于給定的粘附訂閱的訂閱日志14A的依賴性確定生成器引用列1421中提取的依賴性確定生成器引用。圖19是根據(jù)本發(fā)明的一個實(shí)施方式的圖16的塊1630的流程圖。因此,控制從塊1625流向塊1630中的塊1900。圖19與圖18非常類似。具體地,圖19中的塊1910、1915、1920以及1930與塊1810、1815、1820以及1830相同;而塊1900和1925與塊1800和1825不同。這樣,這里只描述不同之處。塊1900指示為每一個注冊的訂閱所執(zhí)行的流程,而塊1800指示為每一個實(shí)例化的生成器所執(zhí)行的流程。因此,圖18的流程側(cè)重在單個訂閱且掃描所有生成器,而圖19的流程側(cè)重在單個生成器且掃描所有訂閱。塊1925與塊1825相同,不同在于吸收訂閱被標(biāo)記為未完成。參考圖14A中所示的本發(fā)明的實(shí)施方式,在合適行的完成的列1420被更新以指示未完成。圖20是根據(jù)本發(fā)明的一個實(shí)施方式的圖16中的塊1635和1670的流程圖。因此,控制從塊1605和塊1630流向塊1635和1670中的塊2005。在塊2005中,確定圖16的流程圖的重復(fù)是否由于依賴性被調(diào)用(例如,從之前重復(fù)的塊1630(塊1920)或1650(塊1720、1750或1745/1820))。如果不是,則控制根據(jù)流程進(jìn)入的地方(從塊1630或1605)而傳遞到塊1640或1675。在塊2010,確定流程是否由于粘附訂閱或非訂閱向上聲明情況而被調(diào)用。如果不是,則控制傳遞到塊2015;否則,控制傳遞到塊2020。通過檢查表2的調(diào)用類型參數(shù)(即,調(diào)用類型是粘附訂閱還是非訂閱向上聲明)來執(zhí)行塊2010。參考圖18和19中所示的本發(fā)明的實(shí)施方式,是否新生成器命令從塊1820或1920被調(diào)用。在塊2020,當(dāng)前父生成器被鏈接到調(diào)用器子生成器。參考圖IIC和14C中所示的本發(fā)明的實(shí)施方式,使用來自表2的鏈接模式和依賴性確定生成器引用列的參數(shù)所標(biāo)識的鏈接模式和依賴性確定生成器引用,由來自表2的調(diào)用的生成器列的參數(shù)所標(biāo)識的調(diào)用的父生成器(例如生成器1480)在圖11C的生成器圖形結(jié)構(gòu)中被鏈接到由來自表2的調(diào)用器生成器列的參數(shù)所標(biāo)識的調(diào)用器子生成器(例如,生成器1475)。如果先前存在父體,則在單個參量可以被映射到零個或多個子生成器的情況下塊2020的行為與吸收訂閱依賴性的行為類似。在塊2015中,調(diào)用器父生成器被鏈接到當(dāng)前調(diào)用的子生成器。參考圖11C中所示的本發(fā)明的實(shí)施方式,使用由表2的依賴性確定生成器引用列所標(biāo)識的依賴性確定生成器引用,由來自表2的調(diào)用器生成器列的參數(shù)所標(biāo)識的調(diào)用器父生成器在圖11C的生成器圖形結(jié)構(gòu)中被鏈接到由來自表2的調(diào)用的生成器列的參數(shù)所標(biāo)識的調(diào)用的子生成器。從塊2015和2020,控制依據(jù)流程進(jìn)入的地方(從塊1605或1630)而傳遞到塊1640或1675。圖21是根據(jù)本發(fā)明的一個實(shí)施方式的覆蓋生成器的流程圖。參考圖10,由覆蓋生成器模塊1045執(zhí)行圖21的流程(或,如參考圖10的可替換實(shí)施方式所述的處理覆蓋和不覆蓋的模塊)。響應(yīng)于覆蓋生成器命令(塊2110),控制傳遞到塊2120。在塊2120,對于由覆蓋生成器命令所標(biāo)識的每一個生成器,調(diào)用新生成器命令,且控制傳遞到塊2130。在本發(fā)明的一個實(shí)施方式中,塊2120在被覆蓋的生成器還沒有被實(shí)例化情況下被執(zhí)行以及將該生成器標(biāo)記為未執(zhí)行的(塊1640或1680)并將其記錄在執(zhí)行開始日志上(塊1665)。不允許覆蓋還沒有被實(shí)例化的生成器的本發(fā)明的可替換實(shí)施方式會執(zhí)行塊1605和1610之間的附加檢查以用于確定所述新生成器命令是否響應(yīng)于覆蓋生成器命令而被調(diào)用,并且如果所述新生成器命令響應(yīng)于覆蓋生成器命令而被調(diào)用用于指示錯誤。在塊2130中,在生成器輸出緩存中(以及如果輸出是字段,則在實(shí)例中的)的輸出被設(shè)定且該生成器被標(biāo)記為被覆蓋。134全局執(zhí)行命令圖22A是根據(jù)本發(fā)明的一個實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的一部分;而圖22B是根據(jù)本發(fā)明的一個實(shí)施方式的當(dāng)前生成器圖形的執(zhí)行的流程圖的另一部分。參考圖IO,由生成器圖形執(zhí)行模塊1070來執(zhí)行圖22的流程。響應(yīng)于全局執(zhí)行命令,塊2200顯示一組候選生成器基于執(zhí)行開始日志上的生成器被選擇以被執(zhí)行,且控制傳遞到塊2205。在本發(fā)明的一個實(shí)施方式中,被覆蓋的生成器被標(biāo)記為未執(zhí)行且該生成器的執(zhí)行返回它們的被覆蓋結(jié)果(而不是使它們的方法被執(zhí)行),當(dāng)前組的候選生成器是執(zhí)行開始日志上的生成器。雖然本發(fā)明的一個實(shí)施方式在上面被描述,其中被覆蓋的生成器被標(biāo)記為未執(zhí)行且它們的執(zhí)行返回其被覆蓋的結(jié)果(而不是使它們的方法被執(zhí)行),但是可替換實(shí)施方式可以以不同的方式操作(例如,標(biāo)記被覆蓋的生成器為已執(zhí)行且當(dāng)選擇當(dāng)前組的候選生成器時,執(zhí)行開始日志的無關(guān)生成器和執(zhí)行開始日志上的被覆蓋的生成器的父體被選擇)。在塊2205中,準(zhǔn)備用于執(zhí)行的生成器的子集從一組候選生成器中被選擇且控制傳遞到塊2210。執(zhí)行塊2205的示例性方式在后面描述。在塊2210中,當(dāng)前組的就緒生成器中的生成器按類型被分類——標(biāo)準(zhǔn)生成器進(jìn)入塊2215而依賴性確定生成器進(jìn)入塊2225。在本發(fā)明的一個實(shí)施方式中,通過檢查生成器的返回類來執(zhí)行塊2210。參考圖10和11D,方法跟蹤結(jié)構(gòu)被訪問以確定生成器的輸出類是否是DEP,從而該生成器是否是依賴性確定生成器。在塊2215中,在當(dāng)前組的就緒生成器中的任意標(biāo)準(zhǔn)生成器被執(zhí)行且控制傳遞到塊2220。在本發(fā)明的一個實(shí)施方式中,通過調(diào)用具有任意輸入?yún)?shù)的方法來執(zhí)行塊2215,所述輸入?yún)?shù)從由參量的依賴性產(chǎn)生的任意子生成器的輸出被映射(對于參量,鏈接模式的參量ID被用于將合適的子生成器的輸出映射到正被執(zhí)行的方法的合適的輸入?yún)⒘?。在本發(fā)明的一些實(shí)施方式中,該執(zhí)行可以致使執(zhí)行在將輸出寫到給定機(jī)構(gòu)的子生成器的方法中的代碼(例如設(shè)定全局變量、設(shè)定不是生成器輸出的實(shí)例中的字段、影響外部數(shù)據(jù)源等)或執(zhí)行在從給定機(jī)構(gòu)中讀取所述輸出的父生成器的方法中的代碼。在塊2220中,對于這些父體(如果有的話)在這些執(zhí)行的標(biāo)準(zhǔn)生成器的任意一個上具有吸收訂閱,該訂閱被標(biāo)記為未完成。控制從塊2220傳遞到塊2245.參考圖14A,完成的列1420的合適行被設(shè)定成指示未完成。在塊2225中,當(dāng)前組的就緒生成器中的任意依賴性確定生成器被準(zhǔn)備以用于執(zhí)行,且控制傳遞到塊2230。執(zhí)行塊2225的示例性方式在后面會被描述。在塊2230中,當(dāng)前組的就緒生成器中的任意依賴性確定生成器被執(zhí)行且控制傳遞到塊2235。在本發(fā)明的一個實(shí)施方式中,塊2230以與塊2215相似的方式被執(zhí)行。在塊2235中,對于任意發(fā)現(xiàn)的生成器,新生成器命令被執(zhí)行,且對于任意訂閱,訂閱記錄和處理被執(zhí)行。塊2235的新生成器命令的一部分以與塊1750相似的方式被執(zhí)行,而訂閱記錄和處理以與塊1740和1745相似的方式被執(zhí)行。在塊2240中,添加到一組候選生成器,其新添加到執(zhí)行開始日志。控制從塊2240傳遞到塊2245。塊2240以與塊2200相似的方式被執(zhí)行,不同的只是作為塊2230和2235的結(jié)果的新添加到執(zhí)行開始日志的生成器被添加到一組候選生成器。在塊2245中,被執(zhí)行的生成器被標(biāo)記為已執(zhí)行,生成器輸出緩存(和實(shí)例緩存)在必要時被更新,被執(zhí)行的生成器的任意父生成器被添加到當(dāng)前組的候選生成器,且被執(zhí)行的生成器從當(dāng)前組的候選和就緒生成器中被移除??刂茝膲K2245傳遞到塊2250。在塊2250,確定一組候選生成器是否為空,如果不為空,則控制傳遞到塊2205;否則,控制傳遞到塊2255。在塊2255,確定所有的訂閱是否已經(jīng)完成。如果是,則控制傳遞到塊2265,在塊2265流程圖結(jié)束;否則,控制傳遞到塊2260。參考圖14A中的本發(fā)明的實(shí)施方式,為任何未完成的吸收訂閱來掃描訂閱類型列1405和完成的列1420。在塊2260,未完成的吸收訂閱被處理且控制傳回到塊2205。執(zhí)行塊2260的示例性方式在后面描述。圖23是根據(jù)本發(fā)明的一個實(shí)施方式的圖22的塊2205的流程圖。因此控制從塊2200流向塊2205中的塊2305。在塊2305中,對于一組候選生成器的的每一個生成器,以下的塊2310-2325被執(zhí)行。在塊2310中,確定生成器是否具有任意未完成的吸收訂閱依賴性。如果有,則控制傳遞到塊2325;否則,控制傳遞到塊2315。參考圖14A的實(shí)施方式,為匹配到當(dāng)前選擇的生成器和吸收訂閱類型,掃描訂戶的生成器關(guān)鍵字列1400和訂閱類型列1405;且如果找到匹配,則在合適的行檢查完成的列1420從而確定吸收訂閱依賴性的狀態(tài)。在塊2315中,確定當(dāng)前選擇的生成器所依賴的生成器是否被執(zhí)行。如果沒有,則控制傳遞到塊2325;否則,控制傳遞到塊2320。參考圖11C中所示的本發(fā)明的實(shí)施方式,檢查用于子依賴性的行的增量執(zhí)行標(biāo)記列1180以確定當(dāng)前選擇的生成器的子代的執(zhí)行狀態(tài)。在塊2320中,當(dāng)前選擇的候選生成器被添加到當(dāng)前組的就緒生成器,且控制傳遞到塊2325。在塊2325中,對于在塊2305中選擇的當(dāng)前生成器的流程結(jié)束。圖24是根據(jù)本發(fā)明的一個實(shí)施方式的圖22的塊2225的流程圖。從而,控制從2210流到塊2225中的塊2405。在塊2405中,對每個依賴性確定生137成器,執(zhí)行下面的塊2410-2430。在塊2410中,由當(dāng)前選擇的依賴性確定生成器所生成的任意先前的依賴性的類型被確定。如果依賴性的類型是非訂閱,則控制傳遞到塊2420;如果類型是吸收訂閱,則控制傳遞到塊2415;然而,如果類型是粘附訂閱,則控制傳遞到塊2425。通過檢查存儲在生成器輸出緩存中的生成器的當(dāng)前輸出來確定塊2410。參考類DEP,輸出可以執(zhí)行非訂閱、吸收訂閱和粘附訂閱。在塊2415和2425中,從訂閱日志中移除項。參考圖14A-圖14C中顯示的本發(fā)明的實(shí)施方式,執(zhí)行l(wèi))對于吸收訂閱(塊2415),依賴性確定生成器(塊1455)被用于在生成器圖形中確定其父生成器(例如生成器1450),然后父生成器在訂閱日志中被查找且其項被移除;以及2)對于粘附訂閱(塊2425),依賴性確定生成器(例如生成器1470)在訂閱日志中被査找且其項被移除??刂茝膲K2415傳遞到塊2420;控制從塊2425傳遞到塊2420。在塊2420中,已經(jīng)由當(dāng)前選擇的依賴性確定生成器所創(chuàng)建的鏈接從生成器圖形中被清除,且控制傳遞到塊2430。參考圖11C中顯示的本發(fā)明的實(shí)施方式,以下被執(zhí)行。首先確定依賴性確定生成器是否"粘附"在現(xiàn)有的生成器上。這通過掃描圖11C中的依賴性確定生成器的子生成器鏈接列以及檢查是否鏈接中的一個具有指示粘附的粘附指示符來完成。如果依賴性確定生成器沒有粘附在現(xiàn)有的生成器上,貝!j:1)對于具有生成的非訂閱向下聲明的依賴性(參量、字段或排序依賴性)的依賴性確定生成器,在生成器圖形中通過當(dāng)前選擇的依賴性確定生成器的行的父生成器引用列1150來訪問依賴性確定生成器的父體,并且在所述父生成器項中,子生成器鏈接列1160被訪問以匹配依賴性確定生成器引用,以及具有所述依賴性確定生成器引用的所有子生成器的引用被清除;2)對于具有生成的非訂閱向上聲明的依賴性的依賴性確定生成器,在生成器圖形中通過當(dāng)前選擇的依賴性確定生成器的行的父生成器鏈接列1150來訪問依賴性確定生成器的父體,并且在所述父生成器項中,父生成器鏈接列1150被訪問以匹配依賴性確定生成器引用,以及具有所述依賴性確定生成器引用的所有父生成器的引用被清除;3)對于具有生成的吸收訂閱的依賴性確定生成器,執(zhí)行與非訂閱向下聲明的依賴性相同的行為;以及4)對于具有生成的粘附訂閱的依賴性確定生成器,在移除訂閱之前從訂閱日志14A的列1421中提取的依賴性確定生成器引用在父生成器鏈接列1150中的生成器圖形結(jié)構(gòu)中被查找,并且具有所述依賴性確定生成器引用的所有父生成器的引用被清除。如果由于非訂閱向上聲明的依賴性或粘附訂閱,依賴性確定生成器被粘附在現(xiàn)有的生成器上,那么依賴性確定生成器粘附在其上的子生成器被訪問(具有指示粘附的粘附指示器的列1160中的子生成器),并且在所述子生成器項中,所述父生成器鏈接列1150被訪問以匹配依賴性確定生成器引用,以及具有依賴性確定生成器引用的所有父生成器的引用被清除。在塊2430中,對于在塊2405中所選擇的依賴性確定生成器,流程結(jié)束。圖25是根據(jù)本發(fā)明的一個實(shí)施方式的圖22的塊2260的流程圖。從而,控制從塊2255流向塊2260中的塊2505。在塊2505中,對于每一個具有未完成的吸收訂閱依賴性的生成器,以下塊2510-2525被執(zhí)行。在塊2510中,確定所有匹配的生成器是否己被執(zhí)行。如果是,則控制傳遞到塊2515;否則,控制傳遞到塊2525。參考圖11C禾tJ14A的實(shí)施方式,在合適的行的匹配的生成器列1415被訪問以確定匹配的生成器,且為每一個匹配的生成器檢査在合適的行的增量執(zhí)行列1180。在塊2515中,吸收訂閱被標(biāo)記為完成且控制傳遞到塊2520。參考圖14A的實(shí)施方式,在合適的行的完成的列1420被設(shè)定成指示完成。在塊2520中,在塊2505中選擇的生成器被添加到當(dāng)前組的候選生成器且控制傳遞到塊2525。在塊2525中,用于在塊2505中的選擇的生成器的流程結(jié)束。過程語言如上所述,正確編寫的過程語言、非反射式面向?qū)ο蟮恼Z言以及非反射式基于對象的語言代碼可以被轉(zhuǎn)換為反射式面向?qū)ο蟮恼Z言代碼。通過示例的方式,類可以通過數(shù)據(jù)結(jié)構(gòu)和一組靜態(tài)函數(shù)來仿真,所述靜態(tài)函數(shù)以對于數(shù)據(jù)結(jié)構(gòu)的實(shí)例的指針作為第一參數(shù)。這些函數(shù)是構(gòu)造器和析構(gòu)器。構(gòu)造器在數(shù)據(jù)結(jié)構(gòu)的指針的分配之后被運(yùn)行時調(diào)用并提供數(shù)據(jù)結(jié)構(gòu)中的元素的默認(rèn)狀態(tài);析構(gòu)器在數(shù)據(jù)結(jié)構(gòu)的指針的釋放之前被運(yùn)行時調(diào)用。每個類具有通過文件的描述,包括1)數(shù)據(jù)結(jié)構(gòu);2)描述類的另一個結(jié)構(gòu),具有結(jié)構(gòu)的大小以及一組函數(shù)指針;3)具有代碼的靜態(tài)函數(shù)的列表(對于非反射式面向?qū)ο蟮恼Z言和非反射式基于對象的語言,通過掃描真正類的方法并針對每個方法創(chuàng)建執(zhí)行相關(guān)方法的有效調(diào)用的靜態(tài)函數(shù),來自動生成靜態(tài)函數(shù)的代碼);以及4)在每個函數(shù)上方的注釋(包括生成器依賴性聲明)以及函數(shù)類型(構(gòu)造器、析構(gòu)器、屬性等)。除了在非反射式面向?qū)ο蟮倪^程語言或非反射式基于對象的過程語言中的類的定義,還實(shí)施了動態(tài)調(diào)用。具體地,編譯器生成用于每個類的下面的初始化代碼,代碼被(新的類模塊)調(diào)用一次以1)實(shí)例化描述類的結(jié)構(gòu),用有效靜態(tài)函數(shù)填充函數(shù)指針;2)用類的映射(類跟蹤結(jié)構(gòu))來注冊結(jié)構(gòu)的實(shí)例,所述類具有對應(yīng)于類名稱的關(guān)鍵字;以及3)用對應(yīng)于函數(shù)名稱的關(guān)鍵字(與增量依賴性、排序依賴性、字段依賴性、向上依賴性、弱約束依賴性、輸出類關(guān)鍵字以及附加注釋一起)在函數(shù)映射(方法跟蹤結(jié)構(gòu))中注冊所有函數(shù)指針。映射允許在一般調(diào)用函數(shù)的運(yùn)行時中的實(shí)施,所述函數(shù)能夠1)(通過新的實(shí)例模塊)通過名稱實(shí)例化類的實(shí)例(具體地,運(yùn)行時a)根據(jù)數(shù)據(jù)結(jié)構(gòu)的大小定位存儲器,并將頭添加到指針以存儲描述類的結(jié)構(gòu)指針,并實(shí)施靈活的指針(例如,能夠査詢類型的指針);以及b)在從映射重新獲得靜態(tài)函數(shù)的相關(guān)指針之后調(diào)用正確的構(gòu)造函數(shù));以及2)通過名稱調(diào)用方法,假設(shè)所有參數(shù)在從映射重新獲得140靜態(tài)函數(shù)的相關(guān)指針之后被正確地傳遞。將參數(shù)正確地傳遞到由函數(shù)指針標(biāo)識的函數(shù)將通過匯編語言在/從輸入和輸出參數(shù)的棧中推或拉元素來完成。上述方法假設(shè)數(shù)據(jù)結(jié)構(gòu)的概念的存在以及在非反射式面向?qū)ο蟮倪^程語言或非反射式基于對象的過程語言中的函數(shù)指針的概念的存在。示例性的面向?qū)ο笤创a的語法A.客戶端代碼在本發(fā)明的一個實(shí)施方式中,客戶端代碼采取以下語法(以表頭示出)ProducerKeyNew(StringClassKey,InstanceKeyInstanceKey,StringMethodKey);RuntimeNew()AddProducerOflnterest(ProducerKeyProducerOflnterestKey);SetProducerOutput(ProducerKeyProducerToOverrideKey,ObjectProducerOutputlnstance);Execute0;ProducerKey禾口Runtime是類,而New、AddProducerOflnterest、SetProducerOutput以及Execute是方法。AddPfoducerOflnterest調(diào)用具有用于表2中的感興趣生成器情況的合適的值的新的生成器命令。ProducerOutputlnstance是被覆蓋的生成器輸出類的實(shí)例。因此通過相應(yīng)的生成器輸出類構(gòu)造器來進(jìn)行實(shí)例化。B.陳述1.依賴性聲明陳述的語法argumentDependency="Argument1Dependency;Argument2Dependency;…";fieldDependency="FieldDependencyl;FieldDependency2;…";sequencingDependency="SequencingDependency1;SequencingDependency2;…";upwardDependency="UpwardDependencyl;UpwardDependency2;,,;weeklyConstrainedDependency="WeeklyConstrainedDependency1;WeeklyConstminedDependency2;...";unConstrainedDependency="unConstrainedDependencyl;unConstrainedDependency2;…,,;2.依賴性的語法a.字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語法#C:,ClassKey,::#1:,InstanceKey,::#M:,MethodKey'b.增量X依賴性的語法ArgumentID::#C:,ClassKey,:#1:,InstanceKey,:#M:'MethodKey,在本發(fā)明的一個實(shí)施方式中,ArgumentID在語法中被省略,并且增量依賴性被聲明的順序表示ArgumentID。因此,ArgumentID被添加以增強(qiáng)可讀性。3.快捷和非快捷對于非快捷,語法是相同的,但在生成器關(guān)鍵字之前使用存S::指示快捷。a.字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語法#S::#C:'ClassKey,::#I:,InstanceKey,::紙,MethodKey'b.增量X依賴性的語法ArgumentID::#S:#C:'ClassKey,:'InstanceKey,::#M:,MethodKey'在這種情況下,由依賴性指示的生成器關(guān)鍵字不是依賴性確定生成器。其他語法的實(shí)施可以假設(shè)快捷是用于特定依賴性類型(例如字段)的默認(rèn)依賴性,并省略弁S::。在該情況下,可以使用弁DDP來指示DDP的存在。4.偶然和非偶然如前所述,可以將<>放在偶然元素之前。a.偶然的類和方法的示例1)字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語法-#C:'ClassDeterminationMethodKey,:#1:,InstanceKey,::#M:'MethodDeterminationMethodKey'2)增暈X依賴性的語法ArgumentID::#C:,ClassDeterminationMethodKey,#I:,InstanceKey,#M:,MethodDeterminationMethodKey'b.偶然的方法的示例1)字段依賴性X,排序依賴性x,向上依賴性x,弱約束依賴性x,不受約束的依賴性X的語法#C:,ClassKey'::#I:'InstanceKey'::#M:<P〉'MethodDeterminationMethodKey'2)增暈X依賴性的語法ArgumentID::#C:,ClassKey,:#I:,InstanceKey,:謹(jǐn),MethodDeterminationMethodKey'C.偶然實(shí)例的示例1)字段依賴性X,排序依賴性x,向上依賴性x,弱約束依賴性x,不受約束的依賴性X的語法#C:,ClassKey,:#I:,InstanceDeterminationMethodKey,:#M:'MethodKey'2)增量X依賴性的語法ArgumentID::#C:,ClassKey,::#I:,InstanceDeterminationMethodKey,#M:'MethodKey,5.速記技術(shù)被認(rèn)為與父生成器元素相同的諸如類、實(shí)例或方法的元素被省略。這一般用于快捷字段的情況。下面給出的示例結(jié)合了速記技術(shù)和快捷聲明(快捷由存S::示出)。a.類和實(shí)例被省略的示例1)字段依賴性X,排序依賴性X,向上依賴性X,弱約束依賴性X,不受約束的依賴性X的語法#S::#M:,MethodKey'2)增量X依賴性的語法ArgumentID::#S::#M:'MethodKey'b.類被省略的示例1)字段依賴性X,排序依賴性x,向上依賴性x,弱約束依賴性x,不受約束的依賴性X的語法#S::#1:,InstanceKey,:#M:,MethodKey'2)增量X依賴性的語法-ArgumentID::#S::#I:,InstanceKey,#M:,MethodKey,可替換實(shí)施方式雖然圖中的流程圖顯示了本發(fā)明某些實(shí)施方式所執(zhí)行的操作的特定順序,但是應(yīng)當(dāng)理解該順序是示例性的(例如,可替換實(shí)施方式可以以不同順序執(zhí)行操作、結(jié)合某些操作、與某些操作重疊等)。雖然根據(jù)一些實(shí)施方式描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員可以理解本發(fā)明不限于所述的實(shí)施方式,而且可以通過在所附權(quán)利要求的實(shí)質(zhì)和范圍內(nèi)做出修改和改變來實(shí)施本發(fā)明。因此描述被視為示例性而非限制性的。14權(quán)利要求1、一種用于執(zhí)行面向?qū)ο蟮拇a的設(shè)備,該設(shè)備包括運(yùn)行時,該運(yùn)行時解釋用于所述面向?qū)ο蟮拇a中的方法的生成器依賴性聲明,所述生成器依賴性聲明在運(yùn)行時標(biāo)識一組零個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,所述運(yùn)行時包括自動生成器圖形生成模塊,用于接收感興趣生成器的命名,將所述感興趣生成器作為生成器圖形的一部分來添加,以及基于已經(jīng)在所述生成器圖形中的所述生成器的方法的生成器依賴性聲明通過鏈接和在需要時通過實(shí)例化其他生成器來自動生成所述生成器圖形的余項,以及生成器圖形執(zhí)行模塊,用于以由所述生成器圖形所指示的順序來執(zhí)行所述生成器圖形中的生成器,其中每個生成器的執(zhí)行使所述生成器的方法在所述生成器的實(shí)例上被執(zhí)行。2、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述自動生成器圖形生成模塊初始不能夠完成所述生成器圖形的生成,直到所述生成器圖形的一些生成器被執(zhí)行,以及其中所述生成器圖形執(zhí)行模塊能夠在所述生成器圖形的執(zhí)行期間調(diào)用具有需要的生成器輸出的所述自動生成器圖形生成模塊以完成所述生成器圖形的未解析的余項。3、根據(jù)權(quán)利要求1所述的設(shè)備,其中要在運(yùn)行時被至少一個所述生成器依賴性聲明所標(biāo)識的一組生成器包括要在執(zhí)行包括所述生成器依賴性聲明的方法的生成器之前被執(zhí)行的至少一個生成器。4、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述生成器圖形表示執(zhí)行的合適排序,該排序由所述生成器圖形中的生成器的方法的所述生成器依賴性聲明所標(biāo)識。5、根據(jù)權(quán)利要求1所述的設(shè)備,其中要在運(yùn)行時被用于給定方法的至少一個生成器依賴性聲明所標(biāo)識的一組生成器包括具有為對所述給定方法的直接輸入的輸出的至少一個生成器。6、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述生成器圖形表示從所述感興趣生成器到是所述生成器圖形的端節(jié)點(diǎn)的那些生成器的所述生成器對于彼此的直接輸入至輸出依賴性。7、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述運(yùn)行時還包括覆蓋生成器輸出模塊,用于接收對所述生成器圖形的當(dāng)前版本中的一個或多個所述生成器的輸出的當(dāng)前修改;生成器圖形結(jié)構(gòu),耦合到所述自動生成器圖形生成模塊,以用于存儲所述生成器圖形的當(dāng)前版本和在當(dāng)前生成器圖形中的每個生成器的當(dāng)前輸出;以及所述生成器圖形執(zhí)行模塊耦合到所述覆蓋生成器輸出模塊和所述生成器圖形結(jié)構(gòu),以用于做出所述當(dāng)前修改,跟蹤所述生成器圖形的當(dāng)前版本中哪些生成器因為受到任意當(dāng)前修改的間接影響而需要被執(zhí)行,以及只執(zhí)行當(dāng)前需要被執(zhí)行的生成器圖形的當(dāng)前版本的生成器從而保持所述生成器圖形的當(dāng)前版本的一致性。8、根據(jù)權(quán)利要求7所述的設(shè)備,其中所述生成器圖形結(jié)構(gòu)還包括增量執(zhí)行標(biāo)記結(jié)構(gòu),用于幫助所述生成器圖形執(zhí)行模塊跟蹤在所述生成器圖形的當(dāng)前版本中哪些生成器由于任意當(dāng)前修改而需要被再執(zhí)行。9、根據(jù)權(quán)利要求7所述的設(shè)備,該設(shè)備還包括覆蓋日志,耦合到所述覆蓋生成器輸出模塊和所述生成器圖形執(zhí)行模塊,以收集用于批處理的多個覆蓋。10、根據(jù)權(quán)利要求7所述的設(shè)備,其中所述覆蓋生成器輸出模塊還用于接收一個或多個被覆蓋的輸出將不被覆蓋的指示。11、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述運(yùn)行時還包括命令日志,耦合到所述自動生成器圖形生成模塊,以將用于批處理的多個命令收集到一起。12、根據(jù)權(quán)利要求1所述的設(shè)備,其中每個生成器的方法是所述生成器的實(shí)例的類的方法。13、根據(jù)權(quán)利要求12所述的設(shè)備,其中所述生成器依賴性聲明是在所述面向?qū)ο蟮拇a中的用于類的類定義的一部分。14、根據(jù)權(quán)利要求1所述的設(shè)備,其中任意方法可以具有一個所述生成器依賴性聲明。15、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述運(yùn)行時取代對手動調(diào)用排序代碼的需要,以及其中每個所述生成器的方法是轉(zhuǎn)換方法且所述運(yùn)行時從所述生成器依賴性聲明中發(fā)現(xiàn)用于所述轉(zhuǎn)換方法的排序。16、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述生成器圖形的端節(jié)點(diǎn)是無關(guān)生成器。17、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述運(yùn)行時還包括實(shí)例跟蹤結(jié)構(gòu),耦合到自動生成器圖形生成模塊和所述生成器圖形執(zhí)行模塊,以用于存儲對所述生成器的實(shí)例的引用;以及方法跟蹤結(jié)構(gòu),耦合到所述自動生成器圖形生成模塊和所述生成器圖形執(zhí)行模塊,以用于存儲對所述生成器的方法和關(guān)于其生成器依賴性聲明的信息的引用。18、根據(jù)權(quán)利要求17所述的設(shè)備,其中所述運(yùn)行時還包括新的實(shí)例模塊,耦合到所述實(shí)例跟蹤模塊,以用于接收當(dāng)前選擇的感興趣生成器的命名,以及在需要時實(shí)例化所述當(dāng)前選擇的感興趣生成器;類跟蹤結(jié)構(gòu),用于跟蹤對類的引用;以及新的類模塊,耦合到所述類跟蹤結(jié)構(gòu),以用于對類定義進(jìn)行裝載和自省。19、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述運(yùn)行時還包括生成器圖形視窗模塊,用于以圖形方式顯示所述當(dāng)前生成器圖形的表20、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述運(yùn)行時還包括可配置交互生成器輸出布局圖形用戶界面模塊,用于以圖形方式顯示來自所述生成器圖形的輸出并允許與所述生成器圖形進(jìn)行交互。21、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述生成器圖形執(zhí)行模塊包括動態(tài)依賴性模塊,用于解析任意動態(tài)生成器依賴性,其中每個生成器依賴性聲明可以包括動態(tài)生成器依賴性,其中動態(tài)生成器依賴性使所述運(yùn)行時動態(tài)選擇在運(yùn)行時由所述生成器依賴性聲明標(biāo)識的所述一組零個或多個生成器,以及其中所述動態(tài)選擇能使得在所述生成器圖形的不同的執(zhí)行期間選擇不同的生成器。22、根據(jù)權(quán)利要求21所述的設(shè)備,其中所述動態(tài)生成器依賴性包括偶然生成器依賴性,其中偶然生成器依賴性是對依賴性確定生成器的依賴性,所述依賴性確定生成器本身依賴于一個或多個其他生成器的輸出。23、根據(jù)權(quán)利要求21所述的設(shè)備,其中所述動態(tài)生成器依賴性包括訂閱,其中訂閱標(biāo)識標(biāo)準(zhǔn),根據(jù)所述標(biāo)準(zhǔn)來比較生成器以確定所述生成器是否是觸發(fā)生成器,其中訂閱標(biāo)識對觸發(fā)生成器的依賴性。24、根據(jù)權(quán)利要求23所述的設(shè)備,其中一些所述訂閱是吸收訂閱,其中吸收訂閱使所述運(yùn)行時動態(tài)地包括在由生成器依賴性聲明在運(yùn)行時期間標(biāo)識的所述一組零個或多個生成器中的任意觸發(fā)生成器。25、根據(jù)權(quán)利要求23所述的設(shè)備,其中一些所述訂閱是粘附訂閱,其中粘附訂閱也標(biāo)識父生成器的特性,以及其中粘附訂閱對于每個放置的觸發(fā)生成器而使所述運(yùn)行時實(shí)例化滿足所標(biāo)識的特性的父生成器,并將所述父生成器包括在所述生成器圖形中當(dāng)作對所述觸發(fā)生成器具有生成器依賴性。26、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述零個或多個生成器中的一些生成器是依賴性確定生成器,所述依賴性確定生成器的執(zhí)行將返回對生成器對于彼此的依賴性的標(biāo)識。27、根據(jù)權(quán)利要求26所述的設(shè)備,其中一些所述依賴性確定生成器的執(zhí)行返回向上聲明的依賴性。28、根據(jù)權(quán)利要求1所述的設(shè)備,其中由所述生成器圖形所表示的依賴性中的至少一些依賴性被指定為參量依賴性和字段依賴性,其中參量依賴性使所述運(yùn)行時將子生成器的輸出作為輸入?yún)?shù)映射到父生成器,并且其中字段依賴性指示實(shí)例的字段的使用。29、根據(jù)權(quán)利要求1所述的設(shè)備,其中由所述生成器圖形所表示的依賴性中的至少一些依賴性被指定為僅排序的依賴性,其中僅排序的依賴性需要輸出從子生成器到父生成器通過在所述子生成器的所述方法中的代碼而產(chǎn)生,其中在所述輸出需要在存在的情況下被提供,從而將所述輸出寫到所述父生成器的所述方法中的給定機(jī)構(gòu)和代碼以從所述給定機(jī)構(gòu)中讀取所述輸出。30、根據(jù)權(quán)利要求1所述的設(shè)備,其中方法關(guān)鍵字被用于區(qū)分方法,實(shí)例關(guān)鍵字被用于區(qū)分實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分生成器,其中用于每個生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和所述方法關(guān)鍵字。31、根據(jù)權(quán)利要求30所述的設(shè)備,其中所述實(shí)例是多個類的實(shí)例,其中類關(guān)鍵字被用于區(qū)分所述多個類,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的所述類關(guān)鍵字。32、根據(jù)權(quán)利要求30所述的設(shè)備,其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。33、根據(jù)權(quán)利要求1所述的設(shè)備,其中至少一些所述生成器依賴性聲明包括向上聲明的依賴性。34、根據(jù)權(quán)利要求1所述的設(shè)備,其中至少一些所述生成器依賴性聲明包括向下聲明的依賴性。35、根據(jù)權(quán)利要求1所述的設(shè)備,其中至少一些所述生成器依賴性聲明既包括向上聲明的依賴性也包括向下聲明的依賴性。36、根據(jù)權(quán)利要求1所述的設(shè)備,其中所述自動生成器圖形生成模塊響應(yīng)于新的生成器命令,以及其中所述生成器圖形執(zhí)行模塊響應(yīng)于執(zhí)行命令。37、一種用于執(zhí)行面向?qū)ο蟮拇a的設(shè)備,所述設(shè)備包括運(yùn)行時,該運(yùn)行時解釋用于所述面向?qū)ο蟮拇a中的方法的生成器依賴性聲明,所述生成器依賴性聲明在運(yùn)行時標(biāo)識一組零個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,其中每個生成器的方法是所述生成器的實(shí)例的類的方法,其中所述生成器依賴性聲明是所述面向?qū)ο蟮拇a中的用于類的類定義的一部分,以及其中至少一些所述生成器依賴性聲明包括向下聲明的依賴性,所述運(yùn)行時包括自動生成器圖形生成模塊,用于接收感興趣生成器的命名,將所述感興趣生成器作為當(dāng)前生成器圖形的一部分來添加,以及基于已經(jīng)在所述當(dāng)前生成器圖形中的所述生成器的方法的生成器依賴性聲明通過鏈接和在需要時通過實(shí)例化其他生成器來自動生成所述當(dāng)前生成器圖形的余項;生成器圖形結(jié)構(gòu),耦合到所述自動生成器圖形生成模塊、所述當(dāng)前生成器圖形和在所述當(dāng)前生成器圖形中的每個生成器的當(dāng)前輸出,其中方法關(guān)鍵字被用于區(qū)分所述方法,實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分所述生成器,并且其中用于給定生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和方法關(guān)鍵字;以及生成器圖形執(zhí)行模塊,耦合到所述生成器圖形結(jié)構(gòu),以用于以由所述當(dāng)前生成器圖形所指示的順序來執(zhí)行所述當(dāng)前生成器圖形中的生成器,其中所述當(dāng)前生成器圖形表示由所述當(dāng)前生成器圖形中的生成器的方法的生成器依賴性聲明所標(biāo)識的合適的執(zhí)行排序,以及其中每個生成器的執(zhí)行使所述生成器的方法在所述生成器的實(shí)例上被執(zhí)行,所述生成器圖形執(zhí)行模塊包括動態(tài)依賴性模塊,用于解析任意動態(tài)生成器依賴性,其中每個生成器依賴性可以包括動態(tài)生成器依賴性,其中動態(tài)生成器依賴性使所述運(yùn)行時動態(tài)地選擇由所述生成器依賴性聲明在運(yùn)行時期間所標(biāo)識的一組零個或多個生成器,其中所述動態(tài)選擇可以在當(dāng)前生成器圖形的不同執(zhí)行期間對于所述一組零個或多個生成器選擇不同的生成器,其中所述動態(tài)生成器依賴性包括偶然生成器依賴性,以及其中偶然生成器依賴性是對于依賴性確定生成器的依賴性,所述依賴性確定生成器本身依賴于一個或多個其他生成器的輸出。38、根據(jù)權(quán)利要求37所述的設(shè)備,其中所述運(yùn)行時還包括生成器圖形視窗模塊,用于以圖形方式顯示所述當(dāng)前生成器圖形的表示。39、根據(jù)權(quán)利要求37所述的設(shè)備,其中所述運(yùn)行時還包括可配置交互生成器輸出布局圖形用戶界面模塊,用于以圖形方式顯示來自所述當(dāng)前生成器圖形的輸出并允許與所述當(dāng)前生成器圖形進(jìn)行交互。40、根據(jù)權(quán)利要求37所述的設(shè)備,其中所述動態(tài)生成器依賴性包括訂閱,其中訂閱標(biāo)識標(biāo)準(zhǔn),根據(jù)所述標(biāo)準(zhǔn)來比較生成器以確定所述生成器是否是觸發(fā)生成器,其中訂閱標(biāo)識對觸發(fā)生成器的依賴性。41、根據(jù)權(quán)利要求40所述的設(shè)備,其中所述訂閱中的一些訂閱是吸收訂閱,其中吸收訂閱使所述運(yùn)行時動態(tài)地包括在由生成器依賴性聲明在運(yùn)行時期間標(biāo)識的所述一組零個或多個生成器中的任意觸發(fā)生成器。42、根據(jù)權(quán)利要求40所述的設(shè)備,其中所述訂閱中的一些訂閱是粘附訂閱,其中粘附訂閱也標(biāo)識父生成器的特性,以及其中粘附訂閱對于每個放置的觸發(fā)生成器而使所述運(yùn)行時實(shí)例化滿足所標(biāo)識的特性的父生成器,并將所述父生成器包括在所述當(dāng)前生成器圖形中。43、根據(jù)權(quán)利要求37所述的設(shè)備,其中所述生成器中的一些生成器是依賴性確定生成器,所述依賴性確定生成器的執(zhí)行返回對生成器對于彼此的依賴性的標(biāo)識。44、根據(jù)權(quán)利要求43所述的設(shè)備,其中一些所述依賴性確定生成器的執(zhí)行返回向上聲明的依賴性。45、根據(jù)權(quán)利要求37所述的設(shè)備,其中至少一些所述生成器依賴性聲明包括參量依賴性和字段依賴性中的一者或多者,其中參量依賴性使所述運(yùn)行時將子生成器的輸出作為輸入?yún)?shù)映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。46、根據(jù)權(quán)利要求37所述的設(shè)備,其中類關(guān)鍵字被用于區(qū)分類,以及用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的所述類關(guān)鍵字。47、根據(jù)權(quán)利要求37所述的設(shè)備,其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。48、根據(jù)權(quán)利要求37所述的設(shè)備,其中所述自動生成器圖形生成模塊用于接收感興趣生成器的多個命名以及用于自動生成多個當(dāng)前生成器圖形,以及其中所述生成器圖形執(zhí)行模塊響應(yīng)于全局執(zhí)行命令,所述全局執(zhí)行命令使所有的當(dāng)前生成器圖形被執(zhí)行。49、一種用于執(zhí)行面向?qū)ο蟮拇a的方法,所述方法包括實(shí)例化具有當(dāng)前感興趣輸出的生成器,其中所述面向?qū)ο蟮拇a包括方法和生成器依賴性聲明,其中用于給定方法的所述生成器依賴性聲明標(biāo)識一組零個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法;響應(yīng)于所述實(shí)例化,將感興趣生成器作為當(dāng)前生成器圖形的一部分;嘗試基于己經(jīng)在所述當(dāng)前生成器圖形中的所述生成器的方法的生成器依賴性聲明通過鏈接和在需要時通過實(shí)例化其他生成器來自動生成所述當(dāng)前生成器圖形的余項;以及執(zhí)行在所述當(dāng)前生成器圖形中的生成器以為感興趣生成器確定當(dāng)前輸出。50、根據(jù)權(quán)利要求49所述的方法,其中所述嘗試自動生成還包括嘗試從在所述面向?qū)ο蟮拇a中的生成器依賴性聲明中自動發(fā)現(xiàn)和建立所述當(dāng)前生成器圖形,所述當(dāng)前生成器圖形表示生成到所述感興趣生成器的一組一個或多個輸入的當(dāng)前值所需要的生成器的直接的輸入輸出關(guān)系,其中在所述當(dāng)前生成器圖形中的每個所述生成器的當(dāng)前輸出是對所述當(dāng)前生成器圖形和/或感興趣生成器中的另外的一個或多個生成器的直接輸入。51、根據(jù)權(quán)利要求49所述的方法,其中所述執(zhí)行在所述當(dāng)前生成器圖形中的生成器還包括通過執(zhí)行所述當(dāng)前生成器圖形的一些生成器來自動生成所述當(dāng)前生成器圖形中的附加部分,所述附加部分返回將被添加到所述當(dāng)前生成器圖形的其他生成器對于彼此的依賴性的標(biāo)識。52、根據(jù)權(quán)利要求49所述的方法,其中所述執(zhí)行包括解析任意動態(tài)生成器依賴性,所述每個生成器依賴性聲明包括動態(tài)生成器依賴性,其中動態(tài)生成器依賴性使所述運(yùn)行時動態(tài)地選擇由所述生成器依賴性聲明在運(yùn)行時期間所標(biāo)識的所述一組零個或多個生成器。53、根據(jù)權(quán)利要求52所述的方法,其中所述動態(tài)生成器依賴性包括偶然生成器依賴性,其中偶然生成器依賴性是對依賴性確定生成器的依賴性,所述依賴性確定生成器本身依賴于一個或多個其他生成器的輸出。54、根據(jù)權(quán)利要求52所述的方法,其中所述動態(tài)生成器依賴性包括訂閱,其中訂閱標(biāo)識標(biāo)準(zhǔn),根據(jù)所述標(biāo)準(zhǔn)來比較生成器以確定所述生成器是否是觸發(fā)生成器,其中訂閱為觸發(fā)生成器標(biāo)識依賴性。55、根據(jù)權(quán)利要求54所述的方法,其中一些所述訂閱是吸收訂閱,其中吸收訂閱使得動態(tài)地包括由生成器依賴性聲明所標(biāo)識的所述一組零個或多個生成器中的任意觸發(fā)生成器。56、根據(jù)權(quán)利要求54所述的方法,其中一些所述訂閱中是粘附訂閱,其中粘附訂閱也標(biāo)識父生成器的特性,以及其中粘附訂閱對于每個放置的觸發(fā)生成器而使得實(shí)例化滿足所標(biāo)識的特性的父生成器,并將所述父生成器包括在所述當(dāng)前生成器圖形中當(dāng)作對所述觸發(fā)生成器具有生成器依賴性。57、根據(jù)權(quán)利要求49所述的方法,其中所述嘗試自動生成還包括實(shí)例化還沒有被實(shí)例化的生成器的任意實(shí)例;以及實(shí)例化還沒有被實(shí)例化的生成器。58、根據(jù)權(quán)利要求49所述的方法,其中所述嘗試自動生成還包括裝載還沒有被裝載的生成器的實(shí)例的任意類;以及對沒有被自省的類的類定義進(jìn)行自省,包括所述類定義中包含的生成器依賴性聲明陳述。59、根據(jù)權(quán)利要求58所述的方法,其中所述嘗試自動生成包括從所述當(dāng)前生成器圖形中發(fā)現(xiàn)和建立一個生成器,對于所述生成器在所述嘗試之前所述生成器的實(shí)例的類已經(jīng)被裝載和自省,在所述嘗試之前所述生成器的實(shí)例已經(jīng)被實(shí)例化,以及在所述嘗試之前所述生成器已經(jīng)被實(shí)例化。60、根據(jù)權(quán)利要求49所述的方法,該方法還包括以圖形方式顯示所述當(dāng)前生成器圖形的表示。61、根據(jù)權(quán)利要求49所述的方法,該方法還包括以圖形方式顯示來自所述當(dāng)前生成器圖形的輸出和允許與所述當(dāng)前生成器圖形進(jìn)行交互。62、根據(jù)權(quán)利要求49所述的方法,該方法還包括存儲所述當(dāng)前生成器圖形的生成器的當(dāng)前輸出;覆蓋所述當(dāng)前生成器圖形的一個或多個生成器的當(dāng)前輸出;以及根據(jù)所述當(dāng)前生成器圖形和所述覆蓋以及不被所述覆蓋直接或間接影響的生成器的被存儲的當(dāng)前輸出,來僅再執(zhí)行被所述覆蓋直接或間接影響的生成器從而確定所述生成器的當(dāng)前輸出。63、根據(jù)權(quán)利要求62所述的方法,其中被影響的所述生成器不是所述當(dāng)前生成器圖形中的所有生成器。64、根據(jù)權(quán)利要求62所述的方法,該方法還包括不覆蓋所述覆蓋;以及根據(jù)所述當(dāng)前生成器圖形和所述不覆蓋以及不被所述不覆蓋直接或間接影響的所述生成器的被存儲的當(dāng)前輸出,來僅再執(zhí)行被所述不覆蓋直接或間接被影響的生成器從而確定所述生成器的當(dāng)前輸出。65、根據(jù)權(quán)利要求49所述的方法,其中由所述生成器依賴性聲明所聲明的依賴性中的至少一些依賴性被指定作為參量依賴性和字段依賴性,其中參量依賴性使將子生成器的輸出作為輸入?yún)?shù)映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。66、根據(jù)權(quán)利要求49所述的方法,其中由所述生成器依賴性聲明所聲明的依賴性中的至少一些依賴性被指定作為僅排序的依賴性,其中僅排序的依賴性需要輸出從子生成器到父生成器通過在所述子生成器的所述方法中的代碼而產(chǎn)生,其中在所述輸出需要在存在的情況下被提供,從而將所述輸出寫到所述父生成器的所述方法中的給定機(jī)構(gòu)和代碼以從所述給定機(jī)構(gòu)中讀取所述輸出。67、根據(jù)權(quán)利要求49所述的方法,其中方法關(guān)鍵字被用于區(qū)分所述方法,實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分所述生成器,其中用于給定生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和方法關(guān)鍵字。68、根據(jù)權(quán)利要求67所述的方法,其中所述實(shí)例是多個類的實(shí)例,其中類關(guān)鍵字被用于區(qū)分所述多個類,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的所述類關(guān)鍵字。69、根據(jù)權(quán)利要求67所述的方法,其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。70、根據(jù)權(quán)利要求49所述的方法,明包括向上聲明的依賴性。71、根據(jù)權(quán)利要求49所述的方法,明包括向下聲明的依賴性。72、根據(jù)權(quán)利要求49所述的方法,其中至少一些所述生成器依賴性聲其中至少一些所述生成器依賴性聲其中至少一些所述生成器依賴性聲明既包括向上聲明的依賴性也包括向下聲明的依賴性。73、根據(jù)權(quán)利要求49所述的方法,其中響應(yīng)于新的生成器命令來進(jìn)行所述實(shí)例化,以及響應(yīng)于全局執(zhí)行命令來進(jìn)行所述執(zhí)行。74、一種用于執(zhí)行面向?qū)ο蟮拇a的方法,所述方法包括接收感興趣生成器的指示,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法;基于所述感興趣生成器和用于方法的生成器依賴性聲明陳述來自動生成和執(zhí)行生成器圖形,其中所述生成器圖形包括目標(biāo)子圖形,所述目標(biāo)子圖形包括所述感興趣生成器和多個等級的其他生成器,所述自動生成和執(zhí)行包括反復(fù)執(zhí)行下列步驟直到達(dá)到源生成器基于已經(jīng)在所述目標(biāo)子圖形中的所述生成器中的一個生成器的方法的生成器依賴性聲明陳述來發(fā)現(xiàn)、建立和執(zhí)行生成器的決定子圖形,和將一組由所述決定子圖形返回的一個或多個其他生成器添加到所述目標(biāo)子圖形,以及執(zhí)行由所述目標(biāo)子圖形所指示的排序的目標(biāo)子圖形中的生成器,其中每個生成器的執(zhí)行引起所述生成器的方法在所述生成器的實(shí)例上被執(zhí)行。75、根據(jù)權(quán)利要求74所述的方法,其中至少一個生成器是所述目標(biāo)子圖形和一個所述決定子圖形的一部分。76、根據(jù)權(quán)利要求74所述的方法,其中第一個決定子圖形包括為依賴性確定生成器的根并包括節(jié)點(diǎn),至少一些所述節(jié)點(diǎn)是標(biāo)準(zhǔn)生成器。77、根據(jù)權(quán)利要求74所述的方法,其中所述目標(biāo)子圖形具有為標(biāo)準(zhǔn)生成器的根。78、根據(jù)權(quán)利要求74所述的方法,其中至少一個所述決定子圖形返回訂閱。79、根據(jù)權(quán)利要求78所述的方法,其中所述訂閱是指示用于觸發(fā)生成器的吸收訂閱標(biāo)準(zhǔn)的吸收訂閱。80、根據(jù)權(quán)利要求78所述的方法,其中所述訂閱是指示用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)和用于要被創(chuàng)建的父生成器的粘附訂閱特性的粘附訂閱。81、根據(jù)權(quán)利要求74所述的方法,其中至少一個所述決定子圖形返回向上聲明的生成器依賴性。82、根據(jù)權(quán)利要求74所述的方法,其中至少一些所述生成器依賴性聲明陳述標(biāo)識一個或多個參量依賴性和字段依賴性,其中參量依賴性使得將子生成器的輸出作為輸入?yún)?shù)映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。83、根據(jù)權(quán)利要求74所述的方法,其中方法關(guān)鍵字被用于區(qū)分所述方法,實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分所述生成器,其中用于給定生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和方法關(guān)鍵字。84、根據(jù)權(quán)利要求83所述的方法,其中所述實(shí)例是多個類的實(shí)例,其中類關(guān)鍵字被用于區(qū)分所述多個類,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的所述類關(guān)鍵字。85、根據(jù)權(quán)利要求83所述的方法,其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。86、根據(jù)權(quán)利要求74所述的方法,該方法還包括-以圖形方式顯示所述生成器圖形的表示。87、根據(jù)權(quán)利要求74所述的方法,該方法還包括以圖形方式顯示來自所述生成器圖形的輸出并允許與所述生成器圖形的交互。88、根據(jù)權(quán)利要求74所述的方法,該方法還包括在所述接收感興趣生成器的指示之后和在所述自動生成和執(zhí)行之前接收執(zhí)行命令。89、一種用于執(zhí)行面向?qū)ο蟮拇a的設(shè)備,所述設(shè)備包括運(yùn)行時,用于基于感興趣生成器和用于方法的生成器依賴性聲明陳述來自動生成和執(zhí)行生成器圖形,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,所述運(yùn)行時包括下述反復(fù)關(guān)聯(lián)的模塊自動生成器圖形生成模塊,用于接收感興趣生成器的命名,將所述感興趣生成器添加到所述生成器圖形的目標(biāo)子圖形中,以及基于已經(jīng)在所述生成器圖形中的所述生成器的方法的生成器依賴性聲明通過自動發(fā)現(xiàn)和創(chuàng)建決定子圖形來自動生成在所述目標(biāo)子圖形中的多個等級的其他生成器,以及生成器圖形執(zhí)行模塊,用于執(zhí)行在所述生成器圖形中的生成器,其中每個生成器的執(zhí)行使得所述生成器的方法在所述生成器的實(shí)例上被執(zhí)行,以及其中多個所述決定子圖形中的每個決定子圖形的執(zhí)行將至少另一個生成器添加到所述目標(biāo)子圖形中。90、根據(jù)權(quán)利要求89所述的設(shè)備,其中至少一個生成器是所述目標(biāo)子圖形和一個所述決定子圖形的一部分。91、根據(jù)權(quán)利要求89所述的設(shè)備,其中第一決定子圖形包括為依賴性確定生成器的根并包括節(jié)點(diǎn),至少一些所述節(jié)點(diǎn)是標(biāo)準(zhǔn)生成器。92、根據(jù)權(quán)利要求89所述的設(shè)備,成器的根。93、根據(jù)權(quán)利要求89所述的設(shè)備,訂閱。94、根據(jù)權(quán)利要求93所述的設(shè)備,器的吸收訂閱標(biāo)準(zhǔn)的吸收訂閱。其中所述目標(biāo)子圖形具有為標(biāo)準(zhǔn)生其中至少一個所述決定子圖形返回其中所述訂閱是指示用于觸發(fā)生成95、根據(jù)權(quán)利要求93所述的設(shè)備,其中所述訂閱是指示用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)和用于要被創(chuàng)建的父生成器的粘附訂閱特性的粘附訂閱。96、根據(jù)權(quán)利要求89所述的設(shè)備,其中所述多個決定子圖形中的至少一個決定子圖形返回向上聲明的生成器依賴性。97、根據(jù)權(quán)利要求89所述的設(shè)備,其中至少一些所述生成器依賴性聲明陳述標(biāo)識一個或多個參量依賴性和字段依賴性,其中參量依賴性使得將子生成器的輸出作為輸入?yún)?shù)映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。98、根據(jù)權(quán)利要求89所述的設(shè)備,其中方法關(guān)鍵字被用于區(qū)分所述方法,實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分所述生成器,其中用于每個生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和方法關(guān)鍵字。99、根據(jù)權(quán)利要求98所述的設(shè)備,其中所述實(shí)例是多個類的實(shí)例,其中類關(guān)鍵字被用于區(qū)分所述多個類,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的所述類關(guān)鍵字。100、根據(jù)權(quán)利要求98所述的設(shè)備,其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。101、根據(jù)權(quán)利要求89所述的設(shè)備,其中所述運(yùn)行時還包括生成器圖形視窗模塊,用于以圖形方式顯示所述當(dāng)前生成器圖形的表示。102、根據(jù)權(quán)利要求89所述的設(shè)備,其中所述運(yùn)行時還包括可配置交互生成器輸出布局圖形用戶界面模塊,用于以圖形方式顯示來自所述生成器圖形的輸出并允許與所述生成器圖形進(jìn)行交互。103、根據(jù)權(quán)利要求89所述的設(shè)備,其中所述自動生成器圖形生成模塊響應(yīng)于新的生成器命令,以及其中所述生成器圖形執(zhí)行模塊響應(yīng)于執(zhí)行命令。104、一種提供面向?qū)ο蟮拇a的機(jī)器存儲介質(zhì),所述面向?qū)ο蟮拇a包括多個類定義,每個所述類定義包括,一組一個或多個字段,一組一個或多個方法,和用于所述一組方法中的每個方法的生成器依賴性聲明,其中用于所述方法中的給定方法的所述生成器依賴性聲明在運(yùn)行時被使用以標(biāo)識一組一個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)至少包括在運(yùn)行時的多個類中的一個類的實(shí)例和所述類的方法;以及其中第一生成器具有偶然生成器依賴性,如下所述一組方法的第一方法是屬性方法,所述一組方法的第二方法具有基于所述屬性方法標(biāo)識屬性生成器的依賴性聲明陳述,以及具有用于基于所述屬性生成器的輸出而在第二生成器和第三生成器之間進(jìn)行選擇的代碼,以及所述一組方法的第三方法具有基于所述第二方法標(biāo)識依賴性確定生成器的生成器依賴性聲明陳述,其中所述第一生成器基于所述第三方法以及具有所述依賴性確定生成器當(dāng)前在所述第二生成器或第三生成器上返回的生成器依賴性。105、根據(jù)權(quán)利要求104所述的機(jī)器存儲介質(zhì),其中第四生成器具有對觸發(fā)生成器的訂閱依賴性,如下-所述一組方法的第四方法,其中所述第四生成器基于所述第四方法,所述一組方法的第五方法,所述第五方法具有指示用于觸發(fā)生成器的一組訂閱標(biāo)準(zhǔn)的代碼,其中訂閱生成器基于所述第五方法,以及所述一組方法的第六方法,其中所述觸發(fā)生成器基于所述第六方法,并且由于所述觸發(fā)生成器滿足所述一組訂閱標(biāo)準(zhǔn),所述訂閱依賴性被創(chuàng)建。106、根據(jù)權(quán)利要求105所述的機(jī)器存儲介質(zhì),其中所述一組訂閱標(biāo)準(zhǔn)是吸收訂閱標(biāo)準(zhǔn),以及其中所述第四方法具有標(biāo)識所述訂閱生成器的生成器依賴性聲明。107、根據(jù)權(quán)利要求105所述的機(jī)器存儲介質(zhì),其中所述一組訂閱標(biāo)準(zhǔn)是粘附訂閱標(biāo)準(zhǔn),其中所述第五方法也包括為父生成器指示一組粘附訂閱特性的代碼,其中所述觸發(fā)生成器滿足所述粘附訂閱標(biāo)準(zhǔn),以及其中所述第四生成器滿足所述粘附訂閱特性并且由于所述訂閱依賴性而被實(shí)例化。108、根據(jù)權(quán)利要求104所述的機(jī)器存儲介質(zhì),其中至少一個所述生成器依賴性聲明包括強(qiáng)約束的參量依賴性。109、根據(jù)權(quán)利要求104所述的機(jī)器存儲介質(zhì),其中至少一個所述生成器依賴性聲明包括強(qiáng)約束的字段依賴性。110、根據(jù)權(quán)利要求104所述的機(jī)器存儲介質(zhì),其中第四生成器具有對第五生成器的生成器依賴性,如下所述一組方法的第四方法,其中所述第四生成器基于所述第四方法,所述一組方法的第五方法,所述第五方法具有向上聲明生成器依賴性的代碼,以及所述一組方法的第六方法,所述第六方法具有基于所述第五方法來標(biāo)識依賴性確定生成器的生成器依賴性聲明,其中所述第五生成器基于所述第六方法并且具有對所述依賴性確定生成器的生成器依賴性,所述依賴性確定生成器返回所述第四生成器對所述第五生成器的生成器依賴性。111、根據(jù)權(quán)利要求104所述的機(jī)器存儲介質(zhì),其中方法關(guān)鍵字被用于區(qū)分所述一組方法,實(shí)例關(guān)鍵字被用于區(qū)分所述多個類定義的實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分生成器,其中用于每個生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和方法關(guān)鍵字。112、根據(jù)權(quán)利要求111所述的機(jī)器存儲介質(zhì),其中類關(guān)鍵字被用于區(qū)分所述多個類,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的所述類關(guān)鍵字。113、根據(jù)權(quán)利要求111所述的機(jī)器存儲介質(zhì),其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。114、一種提供面向?qū)ο蟮拇a的機(jī)器存儲介質(zhì),該機(jī)器存儲介質(zhì)包括具有多個類定義的程序,每個所述類定義包括一組一個或多個字段,一組一個或多個方法,和用于所述一組方法的每個的生成器依賴性聲明,其中用于所述方法的給定方法的所述生成器依賴性聲明在運(yùn)行時被使用以標(biāo)識一組零個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少在運(yùn)行時的多個類中的一個類的實(shí)例和所述類的方法;以及其中每個所述生成器的方法是轉(zhuǎn)換方法,并且程序不包括手動調(diào)用排序代碼,而是依賴于運(yùn)行時以從所述生成器依賴性聲明中自動發(fā)現(xiàn)對所述轉(zhuǎn)換方法的排序。115、根據(jù)權(quán)利要求114所述的機(jī)器存儲介質(zhì),其中至少一些所述生成器依賴性聲明包括動態(tài)生成器依賴性,其中動態(tài)生成器依賴性使所述一組零個或多個生成器在運(yùn)行時期間被動態(tài)地選擇。116、根據(jù)權(quán)利要求115所述的機(jī)器存儲介質(zhì),其中所述動態(tài)生成器依賴性包括偶然生成器依賴性,其中偶然生成器依賴性是對依賴性確定生成器的依賴性,所述依賴性確定生成器本身依賴于一個或多個其他生成器的輸出。117、根據(jù)權(quán)利要求115所述的機(jī)器存儲介質(zhì),其中所述動態(tài)生成器依賴性包括訂閱,其中訂閱標(biāo)識標(biāo)準(zhǔn),根據(jù)所述標(biāo)準(zhǔn)來比較生成器以確定所述生成器是否是觸發(fā)生成器,其中訂閱為觸發(fā)生成器標(biāo)識依賴性。118、根據(jù)權(quán)利要求117所述的機(jī)器存儲介質(zhì),其中一些所述訂閱是吸收訂閱,其中吸收訂閱使得動態(tài)地包括由所述生成器依賴性聲明標(biāo)識的所述一組零個或多個生成器中的任意觸發(fā)生成器。119、根據(jù)權(quán)利要求117所述的機(jī)器存儲介質(zhì),其中一些所述訂閱是粘附訂閱,其中粘附訂閱也標(biāo)識父生成器的特性,以及其中粘附訂閱對于每個放置的觸發(fā)生成器而使得實(shí)例化滿足所標(biāo)識的特性的父生成器,并將所述父生成器包括在生成器圖形中當(dāng)作對所述觸發(fā)生成器具有生成器依賴性。120、根據(jù)權(quán)利要求114所述的機(jī)器存儲介質(zhì),其中至少一些由所述生成器依賴性聲明所聲明的依賴性被指定為參量依賴性和字段依賴性,其中參量依賴性使得將子生成器的輸出作為輸入?yún)?shù)來映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。121、根據(jù)權(quán)利要求114所述的機(jī)器存儲介質(zhì),其中方法關(guān)鍵字被用于區(qū)分所述方法,實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分所述生成器,其中用于給定生成器的所述生成器關(guān)鍵字至少基于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和所述方法關(guān)鍵字。122、根據(jù)權(quán)利要求121所述的機(jī)器存儲介質(zhì),其中類關(guān)鍵字被用于區(qū)分所述多個類,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的所述類關(guān)鍵字。123、根據(jù)權(quán)利要求121所述的機(jī)器存儲介質(zhì),其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。124、根據(jù)權(quán)利要求114所述的機(jī)器存儲介質(zhì),其中至少一些所述生成器依賴性聲明包括向上聲明的依賴性。125、一種機(jī)器存儲介質(zhì),其上存儲有一組一個或多個類的一組一個或多個實(shí)例,其中每個類包括方法和用于所述方法的生成器依賴性聲明,其中所述一組實(shí)例的每個實(shí)例與其類的所有方法相關(guān)聯(lián),以及其中所述生成器依賴性聲明在運(yùn)行時上標(biāo)識一組一個或多個生成器之間的依賴性;生成器圖形結(jié)構(gòu),其中存儲有多個生成器,每個所述生成器是在運(yùn)行時被實(shí)例化的結(jié)構(gòu)且只包括所述一組實(shí)例中的一個實(shí)例和只包括與該實(shí)例相關(guān)的方法中的一個方法,多個鏈接,所述多個鏈接表示多個生成器的不同等級的圖形,其中所述多個鏈接為包括在多個生成器中的所述方法表示由所述生成器依賴性聲明所標(biāo)識的生成器圖形中的生成器之間的依賴性,用于所述多個生成器的每個生成器的生成器關(guān)鍵字,其中每個生成器關(guān)鍵字至少基于標(biāo)識所述一組實(shí)例中的一個實(shí)例和與該實(shí)例相關(guān)的所述方法中的一個方法的實(shí)例關(guān)鍵字和方法關(guān)鍵字,和在所述生成器圖形中的所述多個生成器的每個生成器的當(dāng)前輸出;以及實(shí)例跟蹤結(jié)構(gòu),在所述實(shí)例跟蹤結(jié)構(gòu)中存儲有所述實(shí)例關(guān)鍵字和所述一組實(shí)例之間的對應(yīng)關(guān)系。126、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中所述生成器圖形結(jié)構(gòu)表示由所述生成器圖形中的所述生成器的方法的生成器依賴性聲明所標(biāo)識的執(zhí)行的合適排序。127、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中所述生成器圖形結(jié)構(gòu)表示從所述感興趣生成器到是所述生成器圖形的端節(jié)點(diǎn)的那些生成器的所述生成器對于彼此的直接輸入至輸出依賴性。128、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中由所述生成器圖形結(jié)構(gòu)所表示的依賴性中的至少一些依賴性被指定為參量依賴性和字段依賴性,其中參量依賴性使所述運(yùn)行時將子生成器的輸出作為輸入?yún)?shù)映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。129、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中由所述生成器圖形結(jié)構(gòu)所表示的依賴性中的至少一些依賴性被指定為僅排序的依賴性,其中僅排序的依賴性需要輸出從子生成器到父生成器通過在所述子生成器的所述方法中的代碼而產(chǎn)生,其中在所述輸出需要在存在的情況下被提供,從而將所述輸出寫到所述父生成器的所述方法中的給定機(jī)構(gòu)和代碼以從所述給定機(jī)構(gòu)中讀取所述輸出。130、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中所述生成器圖形結(jié)構(gòu)還包括覆蓋生成器輸出修改,該覆蓋生成器輸出修改為所述多個生成器的每個生成器存儲所述生成器是否被覆蓋的指示和被覆蓋的輸出值。131、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),該機(jī)器存儲介質(zhì)上還存儲有以面向?qū)ο蟮拇a為一組類所寫的一組類定義,其中每個生成器依賴性聲明包括生成器依賴性聲明陳述,所述生成器依賴性聲明接近該生成器依賴性聲明所用于的方法中的一個方法。132、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。133、根據(jù)權(quán)利要求125所述的機(jī)器存儲介質(zhì),其中每個生成器關(guān)鍵字也至少基于標(biāo)識所述生成器的實(shí)例的類的類關(guān)鍵字。134、根據(jù)權(quán)利要求133所述的機(jī)器存儲介質(zhì),該機(jī)器存儲介質(zhì)上還存儲有在運(yùn)行時期間被裝載和自省的所述多個類的表示,所述表示包括所述方法和生成器依賴性聲明的自省的結(jié)果;類跟蹤結(jié)構(gòu),在所述類跟蹤結(jié)構(gòu)中存儲有類關(guān)鍵字和所述一組類的表示之間的對應(yīng)關(guān)系;以及方法跟蹤結(jié)構(gòu),在所述方法跟蹤結(jié)構(gòu)中存儲有方法關(guān)鍵字和自省所述方法的結(jié)果之間的對應(yīng)關(guān)系,以及關(guān)于自省所述生成器依賴性聲明的結(jié)果的信息。135、一種機(jī)器存儲介質(zhì),該機(jī)器存儲介質(zhì)上存儲有包括客戶端代碼的面向?qū)ο蟮脑创a,所述客戶端代碼包括生成器實(shí)例化命令,該生成器實(shí)例化命令具有用于感興趣生成器的生成器關(guān)鍵字并使得用于面向?qū)ο蟮拇a的運(yùn)行時自動發(fā)現(xiàn)、創(chuàng)建和可選擇地解析從所述感興趣生成器開始并具有多個等級的被發(fā)現(xiàn)生成器的當(dāng)前生成器圖形,其中每個所述生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)包括至少一個實(shí)例和與該實(shí)例相關(guān)聯(lián)的方法,其中所述運(yùn)行時自動實(shí)例化還沒有被實(shí)例化的所述當(dāng)前生成器圖形的生成器中的任意生成器,其中生成器關(guān)鍵字被用于區(qū)分所述生成器,其中方法關(guān)鍵字被用于區(qū)分所述方法,其中實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及其中用于每個生成器的生成器關(guān)鍵字至少基于用于所述生成器的實(shí)例和方法的所述實(shí)例關(guān)鍵字和所述方法關(guān)鍵字;執(zhí)行命令,每個所述執(zhí)行命令使用于面向?qū)ο蟮拇a的運(yùn)行時執(zhí)行所述當(dāng)前生成器圖形和緩存用于在所述當(dāng)前生成器圖形中執(zhí)行的每個生成器的當(dāng)前輸出;以及生成器輸出覆蓋命令,每個所述生成器輸出覆蓋命令具有生成器關(guān)鍵字和覆蓋值以及每個所述生成器輸出覆蓋命令使得用于面向?qū)ο蟮拇a的運(yùn)行時覆蓋被所述生成器關(guān)鍵字指定所述覆蓋值的所述生成器的輸出。136、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述運(yùn)行時客戶端還包括生成器輸出不覆蓋命令,每個所述生成器輸出不覆蓋命令具有已經(jīng)被覆蓋的一個所述生成器的生成器關(guān)鍵字以及每個所述生成器輸出不覆蓋命令使得用于面向?qū)ο蟮拇a的運(yùn)行時不覆蓋所述生成器的輸出。137、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述生成器實(shí)例化命令是新的生成器命令,以及其中所述生成器覆蓋命令是設(shè)定命令。138、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述生成器實(shí)例化命令和所述生成器輸出覆蓋命令通過由用于面向?qū)ο蟮拇a的運(yùn)行時所維持的日志間接引起。139、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述執(zhí)行命令的第一個命令引起初始執(zhí)行,以及所述執(zhí)行命令的每一個后續(xù)命令引起增量執(zhí)行。140、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述運(yùn)行時客戶端還包括實(shí)例實(shí)例化命令,該實(shí)例實(shí)例化命令具有所述感興趣生成器的實(shí)例關(guān)鍵字并使得面向?qū)ο蟮拇a的運(yùn)行時實(shí)例化所述感興趣生成器的實(shí)例。141、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中每組一個或多個生成器輸出覆蓋命令后面跟隨一個執(zhí)行命令。142、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中類關(guān)鍵字被用于區(qū)分多個類,所述實(shí)例是所述多個類的實(shí)例,以及其中用于每個生成器的所述生成器關(guān)鍵字也基于所述生成器的實(shí)例的類的類關(guān)鍵字。143、根據(jù)權(quán)利要求142所述的機(jī)器存儲介質(zhì),其中所述生成器實(shí)例化命令使得用于面向?qū)ο蟮拇a的運(yùn)行時通過經(jīng)由使用所述生成器實(shí)例化命令的生成器關(guān)鍵字的類關(guān)鍵字的類跟蹤結(jié)構(gòu)來訪問所述生成器的類、經(jīng)由使用所述生成器實(shí)例化命令的生成器關(guān)鍵字的實(shí)例關(guān)鍵字的實(shí)例跟蹤結(jié)構(gòu)來訪問所述生成器的實(shí)例、和經(jīng)由使用所述生成器實(shí)例化命令的生成器關(guān)鍵字的方法關(guān)鍵字的方法跟蹤結(jié)構(gòu)來訪問所述生成器的方法的生成器依賴性聲明而實(shí)例化所述感興趣生成器。144、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。145、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述客戶端代碼還包括附加的生成器實(shí)例化命令,該附加的生成器實(shí)例化命令使得用于面向?qū)ο蟮拇a的運(yùn)行時自動發(fā)現(xiàn)、創(chuàng)建和可選擇地解析其他當(dāng)前生成器圖形,其中每個所述執(zhí)行命令使得用于面向?qū)ο蟮拇a的所述運(yùn)行時執(zhí)行所有的當(dāng)前生成器圖形。146、根據(jù)權(quán)利要求135所述的機(jī)器存儲介質(zhì),其中所述面向?qū)ο蟮脑创a也包括類定義,其中所述類定義包括在具有生成器依賴性聲明的方法中表達(dá)的業(yè)務(wù)邏輯。147、根據(jù)權(quán)利要求146所述的機(jī)器存儲介質(zhì),其中所述生成器依賴性聲明在包括所述業(yè)務(wù)邏輯的類的定義期間而不是在所述類的實(shí)例被創(chuàng)建之后定義生成器之間的約束。148、一種用于生成器輸出布局的方法,該方法包括顯示包括生成器圖形中的生成器和所述生成器的輸出的類及其獲取屬性方法的列表,其中所述生成器圖形是基于感興趣生成器和用于類的方法的生成器依賴性聲明被自動生成和執(zhí)行的,其中生成器是運(yùn)行時可實(shí)例化的機(jī)構(gòu),該結(jié)構(gòu)至少包括類、該類的實(shí)例、和與該實(shí)例相關(guān)的該類的方法,其中在所述生成器圖形中的所述生成器的方法的每個所述生成器依賴性聲明標(biāo)識在所述生成器圖形中的一組零個或多個其他生成器,其中所述生成器圖形包括所述感興趣生成器和多個等級的其他生成器;顯示具有單元格的電子表格;接收一組一個或多個被顯示的類的多個被顯示的獲取屬性方法到所述電子表格的單元格的映射;以及用所述一組一個或多個實(shí)例的對應(yīng)的獲取屬性方法的輸出填充至少所述映射的單元格。149、根據(jù)權(quán)利要求148所述的方法,該方法還包括接收用于被自動填充的單元格中的一個單元格的值;覆蓋所述生成器的輸出,所述生成器的輸出當(dāng)前用所述值來填充所述單元格;在需要時至少以增量方式執(zhí)行所述生成器圖形并更新所述映射的單元格。150、根據(jù)權(quán)利要求148所述的方法,其中所述填充還包括接收選擇所述一組一個或多個實(shí)例的指示。151、根據(jù)權(quán)利要求150所述的方法,其中所述接收選擇所述一組一個或多個實(shí)例的指示包括接收至少所述一組實(shí)例的一個實(shí)例的實(shí)例關(guān)鍵字的指示。152、根據(jù)權(quán)利要求148所述的方法,其中所述填充還包括接收選擇多個要被應(yīng)用的過濾器中的一個過濾器的指示以選擇實(shí)例,所述實(shí)例至少是所述一組被顯示的類的第一個類的實(shí)例,其中所述多個過濾器中的每個過濾器允許以不同方式選擇。153、根據(jù)權(quán)利要求152所述的方法,其中所述填充還包括在所述接收選擇所述多個濾波器中的一個過濾器的指示之前,接收所述第一個類對所述電子表格的一個單元格的映射。154、根據(jù)權(quán)利要求153所述的方法,其中所述接收選擇所述多個濾波器中的一個過濾器的指示通過所述第一個類被映射到的所述電子表格的單元格而被執(zhí)行。155、根據(jù)權(quán)利要求154所述的方法,其中所述填充還包括在接收到選擇所述多個濾波器中的一個濾波器的指示之后,使用所選擇的濾波器通過所述第一個類被映射到的所述電子表格的單元格,來接收用于選擇所述第一個類的實(shí)例中的的一個實(shí)例的指示。156、根據(jù)權(quán)利要求155所述的方法,其中所述接收選擇所述第一個類的實(shí)例中的一個實(shí)例的指示還包括接收所述一組實(shí)例中的一個實(shí)例的實(shí)例關(guān)鍵字的指示。157、根據(jù)權(quán)利要求148所述的方法,其中所述填充還包括接收定義表格的區(qū)域的指示,其中所述表格包括所述電子表格的單元格的多個行和列;其中針對所述表格的一個邊緣上的一組單元格來執(zhí)行所述接收映射;用所述一組被顯示的類的第一個類的第一個實(shí)例的對應(yīng)的獲取屬性方法的輸出來填充所述一個邊緣上的一組單元格;以及用所述第一個類的另一個實(shí)例的對應(yīng)的獲取屬性方法的輸出來反復(fù)填充具有相同方向的每個鄰近組的單元格直到達(dá)到所述表格的相對邊緣。158、根據(jù)權(quán)利要求148所述的方法,其中至少一個所述生成器依賴性聲明包括動態(tài)生成器依賴性,其中動態(tài)生成器依賴性使得動態(tài)選擇由所述生成器依賴性聲明在運(yùn)行時期間標(biāo)識的所述一組零個或多個生成器。159、根據(jù)權(quán)利要求158所述的方法,其中所述動態(tài)生成器依賴性是偶然生成器依賴性,其中偶然生成器依賴性是對依賴性確定生成器的依賴性,所述依賴性確定生成器本身依賴于一個或多個其他生成器的輸出。160、根據(jù)權(quán)利要求158所述的方法,其中所述動態(tài)生成器返回訂閱。161、根據(jù)權(quán)利要求160所述的方法,其中所述訂閱是吸收訂閱,該吸收訂閱指示用于觸發(fā)生成器的吸收訂閱標(biāo)準(zhǔn)。162、根據(jù)權(quán)利要求160所述的方法,其中所述訂閱是粘附訂閱,該粘附訂閱指示用于觸發(fā)生成器的粘附訂閱標(biāo)準(zhǔn)和用于要被創(chuàng)建的所述父生成器的粘附訂閱特性。163、根據(jù)權(quán)利要求148所述的方法,其中至少一些所述生成器依賴性聲明標(biāo)識一個或多個參量依賴性和字段依賴性,其中參量依賴性使得子生成器的輸出作為輸入?yún)?shù)映射到父生成器,以及其中字段依賴性指示實(shí)例的字段的使用。164、根據(jù)權(quán)利要求148所述的方法,其中類關(guān)鍵字被用于區(qū)分所述類,其中方法關(guān)鍵字被用于區(qū)分所述方法,實(shí)例關(guān)鍵字被用于區(qū)分所述實(shí)例,以及生成器關(guān)鍵字被用于區(qū)分所述生成器,其中用于每個生成器的所述生成器關(guān)鍵字至少基于所述生成器的類、實(shí)例和方法的類關(guān)鍵字、實(shí)例關(guān)鍵字和方法關(guān)鍵字。165、根據(jù)權(quán)利要求164所述的方法,其中至少一些生成器的所述實(shí)例關(guān)鍵字保持對所述生成器的實(shí)例的引用。全文摘要一種用于面向生成器圖形的編程和執(zhí)行的方法和設(shè)備。根據(jù)本發(fā)明的一個方面,提供解釋用于方法的生成器依賴性聲明的運(yùn)行時。生成器依賴性聲明在運(yùn)行時標(biāo)識一組零個或多個生成器,其中生成器是運(yùn)行時可實(shí)例化的結(jié)構(gòu),該結(jié)構(gòu)至少包括實(shí)例和與該實(shí)例相關(guān)的方法。響應(yīng)于感興趣生成器的命名的接收,運(yùn)行時自動生成和執(zhí)行生成器圖形,所述感興趣生成器的方法具有生成器依賴性聲明。生成器圖形初始包括感興趣生成器并基于生成器圖形中已經(jīng)存在的生成器的方法的生成器依賴性聲明通過實(shí)例化而從感興趣生成器到源生成器被生成。運(yùn)行時對由生成器圖形指示的生成器圖形中的生成器的執(zhí)行進(jìn)行排序。文檔編號G06F9/44GK101617292SQ200780050659公開日2009年12月30日申請日期2007年11月30日優(yōu)先權(quán)日2006年12月1日發(fā)明者E·埃德,F·沙米耶申請人:莫雷克斯公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1