freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

swarm用戶手冊(參考版)

2024-11-05 16:05本頁面
  

【正文】 標準的 Swarm 程序采用這樣的方法。別把“所有的頭文件”都包含進去。用戶可以創(chuàng)建 List 對象并使用之,但不能創(chuàng)建 Swarm List 類的變體來適應自己項目的需要。 需要著重指出的是:并非所有的 Swarm 協(xié)議都允許被子類化。 以上可歸結為兩條法則: ? 如果用戶在自己的程序中使用了符合 某種協(xié)議的類(例如 List)來創(chuàng)建對象,則需要包含相關的通用頭文件。由于用戶的頭文件聲明了正在創(chuàng)建的用戶類,并引用了超類,因此在頭文件中必須包含與超類相關的所有頭文件。 則無需在頭文件中包含 ,僅在用戶類的實現(xiàn)文件中包含進去就可以了。這是由于在該頭文件中找不到名為List 的類或者協(xié)議的定義,因此編譯器認為這是一個編輯錯誤。例如,如果想聲明一個采用 List 協(xié)議的對象,就需要在頭文件中包含對應的通用頭文件 ,如: id List aList。 用戶在自己編寫的 .h(頭)和 .m(實現(xiàn))文件中必須將 “通用目的”的頭文件包含進去嗎?一般來說,只是 .m 文件才需要這樣做,因為正是在 .m 文件中創(chuàng)建對象的。例如,要創(chuàng)建 List 對象,需要包含 。 “通用目的”的頭文件位于 Swarm 的 include 目錄下,計有: ? ? ? ? ? ? ? ? ? 在《 Swarm 參考指南》中,可以看到很多協(xié)議都采用了 CREATETABLE 協(xié)議,這意味著用戶可以在自己的代碼中用它們創(chuàng)建對象。相反,需要包含“通用目的”的頭文件,這些頭文件對應了 Swarm 庫的主要部分。 在 Swarm的樣例代碼中,經(jīng)??梢钥吹较裆厦孢@樣的代碼。如下所示: id listOfFriends?;蛘吒侠淼卣f, Swarm 庫提供對象的方式往往不是那么明顯的。 [self getZone 將返回 bug所在的內(nèi)存區(qū)域名字,即 heatbugModelSwarm。 類型為 SwarmObject 的對象并非內(nèi)存區(qū)域,因此當在繼承于 SwarmObject 的類中創(chuàng)建對象時,必須有申請內(nèi)存的命令: bugPixmap = [Pixmap createBegin: [self geZone]]。 如果深入到 文件的內(nèi)部,會發(fā)現(xiàn) createBegin 命令,該命令初始化了很多實例變量和對象。 看看 theTopLevelSwarm 的 buildObjects 方法的內(nèi)部代碼,發(fā)現(xiàn)了什么?隨著 Heatbugs 代碼版本的不同,可能會發(fā)現(xiàn): heatbugModelSwarm = [HeatbugModelSwarm create:self]。 [theTopLevelSwarm activeIn: nil]。最后,剛剛被創(chuàng)建的對象需要連續(xù)執(zhí)行: [theTopLevelSwarm buildObjects]。 在 swarm 體系結構頂層的對象( Swarm 或 GUISwarm)有權為對象創(chuàng)建它們可以生存于其中的空間。在 ModelSwarm 中可以發(fā)現(xiàn): probeMap = [EmptyProbeMap createBegin: self]。隨后最頂層的 Swarm 被創(chuàng)建在globalZone 中。 theTopLevelSwarm = [HeatbugObserverSwarm createBegin: globalZone]。實例存在于內(nèi)存區(qū)域中,由 Swarm 庫管理。 下面將討論很多相關的例子,并將貫穿到 Swarm 的樣例程序中。 在 Swarm 中, create 語句一般如此使用: someUserCreateObject = [SomeSwarmLibraryObject create: someMemoryZoneHere]。 createBegin 和 create 命令被用來分配內(nèi)存,用戶無須考慮對象被存在 RAM 何處。如果被分配的內(nèi)存忘記了釋放,這 被稱為“內(nèi)存發(fā)生了泄漏”,因為程序忘記通知操作系統(tǒng)有些內(nèi)存不再使用了。要正確的使用動態(tài)內(nèi)存需要十二萬分的小心。如果沒有這樣的需要,完全可以使用 create 就行了。 實際上, 發(fā)送 create 消息就可以使消息的接收者執(zhí)行 createBegin 和 createEnd 方法。 } 在上面的代碼中,首先執(zhí)行的是 createEnd 方法,這可以確保在其中初始化的變量被正確地賦值。 age = 0。例如,假定有一個變量 age。最后, 通過調(diào)用 createEnd,進一步執(zhí)行定義對象元素的命令。這些變量首先被設置是因為其它的變量取決于它們的值。在 createBegin 階段,通??梢园l(fā)現(xiàn)設置對象的永久屬性的命令,可能還包括一些初始化實例化變量的方法。顯式地調(diào)用 createEnd 方法,就可以確保超類的createEnd 方法被執(zhí)行,這樣做的重要性在于這些步驟初始化了本類所繼承的某些變量。 } 如上例所示,由于超類被隱藏在 Swarm 庫中,因此很難準確地說出為什么需要 createEnd 這個命令。因此,文件 SwarmProcess中的相關代碼就是調(diào)用 super 的方法時所執(zhí)行的代碼。 讀者研究 Swarm的相關源代碼,就會發(fā)現(xiàn) GUISwarm通過一個類體系鏈繼承了創(chuàng)建內(nèi)存區(qū)域和對象的能力。然后語句 return obj 將所創(chuàng)建的對象返回給調(diào)用代碼 —— 在本例中就是。 超類的 createBegin 方法被調(diào)用,并將所創(chuàng)建的對象置于 aZone 中, aZone 是從 傳遞進來的內(nèi)存空間名字。由于類之間彼此聯(lián)結成為一個體系結構,每一個更高層的類都會執(zhí)行自己的 createBegin 語句。由于 HeatbugObserverSwarm 是 GUISwarm 的子類,因此必須確保 GUISwarm 對象中所有的重要變量都被初始化了,并被 HeatbugObserverSwarm 所繼承。 } 上述例子很好地 展示了 Swarm 是如何處理對象創(chuàng)建的。 objdisplayFrequency = 1。 id ProbeMap probeMap。 createBegin 前面的加號表明該方法不能被 HeatbugModelSwarm 類的實例執(zhí)行,只能被類工廠對象執(zhí)行。 詳細了解 createBegin/createEnd 現(xiàn)在看 中調(diào)用的 createBegin 和 createEnd 方法。同樣,使用階段的方法只能在 createEnd 之后使用。創(chuàng)建階段的方法和宏只能在 createBegin 和 createEnd 之間使用。 在 Swarm 參考指南中,很多協(xié)議的方法屬于三個階段之一:“創(chuàng)建”,“設置”和“使用”。第二個命令是一個保存窗口位置的宏,在 createBegin 和 createEnd 中設置是因為它設置的是對象的永久屬性。 } 在大括 號中的第一個命令通知 HeatbugObserverSwarm 類執(zhí)行 createBegin 方法,并返回名為theTopLevelSwarm 的對象。 SET_WINDOW_GEOMETRY_NAME (theTopLevelSwarm)。 缺省情況下,編譯和執(zhí)行 heatbugs 應用,將使用 GUI 模式。 從頭開始 選一個 Swarm 應用,如 Heatbugs。在 Next 系統(tǒng)的 Objective C 手冊中,能夠找到 init和 alloc 這樣的方法,但在 Swarm 中則找不到。在一種系統(tǒng)上用 GNU 編譯器編譯的 Objective C應用程序與 Next 系統(tǒng)上的 Objective C 應用并非完全一致。在 swarmapps 包中的應用程序 Heatbugs 是一個功能豐富、可執(zhí)行的仿真樣例,且充分體現(xiàn)了教程中提到的思想。但有時需要了解實現(xiàn)的細 節(jié),此時可以深入到Swarm 本身的源代碼中去。要知道某個類的對象會響應哪些消息,首先可以查看 API: Swarm Reference Guide。在 Heatbug的代碼中有使用批處理模式的例子。但是,設計的 Swarm 應用程序并不一定必須有圖形顯示。控制圖形顯示是 ObserverSwarm 中的命令。在 simpleObserverBug中的 Word 類是 Swarm 中 Grid2d 類的子類。 ? 總是需要一個“持續(xù)記錄”的類 。如果需要,可以為 ModelSwarm 類創(chuàng)建名為 doStuff 的方法,然后按照如下的形式調(diào)用: [modelSwarm doStuff]。 [modelSwarm buildActions]。在 Swarm 中,用于創(chuàng)建類的方法通常被按照功能分組。 ? 代碼整潔清楚 ??梢詾閷ο笃鹑魏蚊?,習慣上,對象名字用小寫,如 bugList 是 List 的實例, modelSchedule 是 Schedule 的實例對象。 ? 大小寫。用戶使用 create 或 createBegin 時會為對象申請內(nèi)存,調(diào)用 drop 時會釋放相關內(nèi)存。注意到?jīng)]有, 在 Swarm 代碼中,沒有 malloc 等標準的 C 語言內(nèi)存管理函數(shù)。了解這些類是非常重要的。 ? Swarm 有很多使得建模工作更易進行的類 。 如何對 bug進行建模并不重要,重要的是要明白: Swarm 提供了進行建模練習的架構。 從教程中可以學習到些什么? 那么,在研究了 20 小時后,又會怎樣呢?應該了解所有有關 Swarm 用法的細節(jié)了。 8. simpleObserverBug2: 本例增加了探針視圖,用戶可以點擊圖形獲取內(nèi)部信息。 7. simpleObserverBug: 基于 Swarm 的 SwarmGUI 類創(chuàng)建了一個新類 ObserverSwarm,然后創(chuàng)建了該類的實例,名為 observerSwarm。 5. simpleSwarmBug2: 引入了類 List 的實例 bugList,并演示了多主體仿真的組織方式。以 Swarm 庫中的 Swarm 類為基礎,該代碼創(chuàng)建了子類 ModelSwarm,然后創(chuàng)建了 ModelSwarm 的實例,名為 modelSwarm(在 中)。 3. simpleObjCBug2: 增加了 FoodSpace 類。 教程的大綱如下: 1. simpleCBug: Bug的簡單代碼,用 C 語言寫成。 教程的安排 本教程是這樣安排的:首先是一個 比“ hello world”稍微復雜一些的 C 語言程序,是有關一只溜達的 bug的。也就是說,雖然后續(xù)章節(jié)的很多 Swarm 概念是用 Objective C 描述的,但大部分概念也適用于 Java 語言的情況,只有語法格式上的些微不同。 不會再提到 Java 了 從此往后,本指南將只會使用用 Objective C 語言編寫的樣例程序。即使你是一個專家級的程序員,該教程也同樣是最佳起點。 swarmapps 軟件包提供了一些值得學習的 swarm 樣例程序,還提供了 bug仿真的教程,這是所有的 swarm 用戶都必須閱讀、編輯、編譯、學習、試驗、探索和研究的一系列練習。上述練習位于 SDG 站點的 swarmapps 軟件包中。 第二部分 Swarm 應用:樣例演示 第六章 Swarm 教程 很多 Swarm 用戶共享建模的術語和觀點,從而 可以就彼此的建模項目進行交流。 ? 紅色的 hide 按鈕可用于隱藏不想再顯示的類。用鼠標第一個按鈕點擊,將得到 self 的拖拽表示;如果用鼠標的第三個鍵點擊,則得到 self 的 CompleteProbeDisplay。 ? 還有,如果某個實例變量 /參數(shù)槽容納的是一個對象,則可以通過第三個鼠標按鈕來查看該變量 /參數(shù)槽的值。如果試圖對之進行修改,機器會發(fā)出蜂鳴聲。 圖 56 CustomProbeMap 使用 GUI的 ProbeDisplay 標準的 ProbeDisplay 和 CompleteProbeDisplay 之間的共同點有: ? 在 ProbeDisplay 中的不同域可以通過輸入新值并按回車進行更新。如果指定了探針圖,則隨后的 ProbeDisplay 將嚴格地遵守探針圖的指定。如果指定了要探測的窗口的同時并沒有指定任何探針圖,則生成的 ProbeDisplay會提供一個 DefaultProbeDisplay 類的窗口,該窗口將會顯示在類的結構中所有的變量。除了提供了用戶可以操作的圖形窗口,探針還有其他作用,但是本節(jié)將主要涉及前者,其他的作用將留給后續(xù)章節(jié)。這種觀點在下列情況時尤顯重要:用戶暫停了仿真,與之進行單獨交互,從而可以查看和修改主體的內(nèi)部值。 調(diào)度的多級合并意味著模型實際上可以被視為多級模型的嵌套。最后所有的調(diào)度都被合并到最頂層的 Swarm。 Swarm 的一個優(yōu)點就是維護了一個一致的主調(diào)度。 調(diào)度的合并 如上所提到的,在很多不同的類中都可以有 buildActions 方法。通知主體或系列主體執(zhí)行各自方 法的命令被放在 ActionGroup 類對象中,這意味著只要重復動作組,這些命令就會被重復執(zhí)行。例如,在 ObserverSwarm 中,有刷新圖形顯示的命令,也有命令指示下一級的主體執(zhí)行其自己的 buildActions 方法。第一行代碼創(chuàng)建了 ModelSwarm 對象(即 forestModelSwarm),最后一
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1