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

正文內(nèi)容

swarm用戶手冊(編輯修改稿)

2024-12-07 16:05 本頁面
 

【文章內(nèi)容簡介】 FoodSpace foodSpace。 public Object setX$Y (int x,int y) (5) { xPos = x。 yPos = y。 return this。 } public Object step()(6) { // body of step() code return this。 } public return_type look(direction_type d) (7) { return_type returnval。 // body of look() code return returnval。 } } (1) 完整的類定義 (2) 子類 (3) 超類 (4) 實(shí)例變量 (5) 聲明方法 setX$Y(),有兩個(gè)參數(shù) (6) 聲明方法 step(),無參數(shù) (7) 聲明方法 look(),有一個(gè)類型為 direction_type 的參數(shù),返回值類型為 return_type 注意在 Java 中并沒有 id 這種類型或其他一般的數(shù)據(jù)類型。所有的變量都必須被分配一種類型,在上例中,實(shí)例變量 foodSpace 被聲明為 FoodSpace。這是由于 Java 語言是強(qiáng)類型語言。編譯器會檢查所有變量的所有類型,以確保所有的接收代碼能夠?qū)Φ玫降南⑦M(jìn)行響應(yīng)。除此之外, Objective C 和 Java 代碼之間的最主要區(qū)別純粹是因?yàn)檎Z法的不同。例如, ? 在 Objective C 中,方法名字和參數(shù)是散布的;在 Java 中完整的方法名字必須列在參數(shù)之前。 ? 在 Java 中,使用 this 而不是 self( super 在兩種語言中的含義和語法都是相同的)。 類的實(shí)例化 實(shí)現(xiàn)類的代碼(也就是 Objective C 的 .h和 .m 文件, Java 的 .java 文件)后,還要做的工作就是創(chuàng)建類的實(shí)例。 實(shí)例化: Objective C 風(fēng)格 仿真中的角色對象通常是 SwarmObject 類的子類。通常使用一對命 令來創(chuàng)建對象: createBegin 和 createEnd,這不屬于 Objective C 語法,是 Swarm 特有的。 假定已經(jīng)存在 和 ,現(xiàn)在想創(chuàng)建類的實(shí)例。在文件 中,建立一個(gè)典型的方法buildObjects,在其中完成所有的對象創(chuàng)建。例如: // 摘自 ,創(chuàng)建 Bug的實(shí)例 import // {其它的輸入和代碼 } buildObjects { id aBug。 bug = [Bug createBegin: self]。 // 設(shè)置主體的永久特性的代碼 bug = [Bug createEnd]。 } 類工廠對象 Bug被告知在 ModelSwarm 提供的內(nèi)存區(qū)中創(chuàng)建一個(gè)對象( ModelSwarm 就是 self)。然后對象aBug被創(chuàng)建,可選的屬性被加入。在后面的部分將深入討論上述細(xì)節(jié)(也可參考附錄 B)。 創(chuàng)建對象的實(shí)例不一定要用 createBegin/createEnd 對,可以簡單地處理為: aBug = [Bug crate: self] 在基于老版本的 Swarm 的代碼中,語法有所不同: aBug = [Bug create: [self getZone]]。 在 Objective C 中,這種用法仍然是有效的,但是不鼓勵這么做。由于現(xiàn)在屬于 Swarm 類型的對象,跟ModelSwarm 一樣,都是內(nèi)存區(qū)域,因此無需再申請一個(gè)放置 Bug對象的區(qū)域了。 實(shí)例化: Java 風(fēng)格 Java 使用構(gòu)造函數(shù)來創(chuàng)建類的實(shí)例。創(chuàng)建 Java 對象 Bug的最簡單方法如下所示: aBug = Bug (())。 這等價(jià)于前面所述的 Objective C 樣例。 Objective C Java aBug = [Bug create: [self getZone]]。 aBug = Bug (())。 注意在 Objective C 需要明確指出的 create:方法在 Java 中是隱含的。 備注:在 Java 中仍然可能使用 create 和 createBegin/createEnd 這種模式,但由于 Java 是強(qiáng)類型的語言,因而需要更多的工作才能使用上述模式。詳細(xì)情況將在后續(xù)版本的指南中討論。 簡要的澄清: Objective C 中的類和協(xié)議 讀者需要仔細(xì)研究的一點(diǎn),是 Objective C 允許創(chuàng)建叫做協(xié)議的實(shí)體。協(xié)議,是一個(gè)對象可以執(zhí)行的方法列表。 Swarm 的結(jié)構(gòu)由協(xié)議組成,因此在 Swarm 的參考材料中,將庫看作是類的集合,每一個(gè)類又與給定的協(xié)議集保持一致。 對 Swarm 用戶來說,很多情況下都不必區(qū)分類和協(xié)議。最重要的 Swarm 協(xié)議,如類型 Swarm(來自objectbase/)或 Swarmobject(來自 objectbase/),可以將之當(dāng)作類一樣的使用。在Swarm 的參考指南中,有所有的協(xié)議的列表。采用 CREATABLE 協(xié) 議的協(xié)議,可以將之視為類工廠對象。例如, EZGraph 協(xié)議采用了 CREATABLE 協(xié)議,因此當(dāng)用戶要創(chuàng)建該協(xié)議的實(shí)例時(shí),就可以直接使用。這樣, observer swarm 文件就可以用 EZGraph 創(chuàng)建圖。 幾乎所有的 Swarm 協(xié)議都采用了 CREATABLE 協(xié)議,因此可以將之視為類一樣的使用。例如協(xié)議SwarmObject,采用的協(xié)議包括 Create, Drop 和 CREATABLE。這意味著 SwarmObject 可以被視為一個(gè)類,SwarmObject 將響應(yīng) createBegin 消息, SwarmObject 創(chuàng) 建的實(shí)例對象將能響應(yīng) createEnd, drop 以及協(xié)議中列出的其他方法。 使用協(xié)議的一個(gè)原則性好處是在編譯的過程中,如果用戶代碼試圖向?qū)ο蟀l(fā)送非法的消息,編譯器將發(fā)揮警告信息。例如,有消息通知對象執(zhí)行方法 goOutside,但是主體所采用的所有協(xié)議中都沒有該方法,此時(shí)編譯器將對此給出警告。粗略地說,采用協(xié)議就好比廣而告之了某個(gè)類所能完成的功能,隨后編譯器確保了個(gè)中的“誠信”。如果編譯的標(biāo)志中包含 WERROR,也就是將警告視為錯(cuò)誤,那么出現(xiàn)的警告信息將停止編譯過程。 事實(shí)上, Swarm 庫的很多重要部件 都組織為協(xié)議,但是早期版本的 Swarm 不如當(dāng)前版本在這方面那么突出。由于協(xié)議的引入,使用約定發(fā)生了改變。在 Swarm 中,有一個(gè)可用于創(chuàng)建集合的類 List。使用老版本的Swarm,程序設(shè)計(jì)者可以創(chuàng)建屬于 List 類的靜態(tài)類型對象,如下的代碼所示: List * listofPuppies。 lisofPuppies = [List create: [self getZone]]。 Swarm 已經(jīng)不允許用戶采用上述方式靜態(tài)的定位對象。這樣的代碼將使得編譯器崩潰,因?yàn)樵?Swarm 中沒有名為 List 的類,只有上述命 名的協(xié)議。 從 Swarm 參考指南中我們知道協(xié)議 List 采用了 CREATABLE 協(xié)議,因此錯(cuò)誤不是由于使用 List 創(chuàng)建listOfPuppies 引起的。實(shí)際上,錯(cuò)誤源自 listOfPuppies 的聲明本身。如果需要定義的變量 listOfPuppies 由List 類項(xiàng)目組成,推薦的方法是創(chuàng)建一個(gè)類型為 id 的變量,然后用尖括號指明對象所采用的協(xié)議: id List listOfPuppies。 listOfPuppies=[List create: [self getZone]]。 將 listOfPuppies 定義為為一般對象也是合法的: id List listOfPuppies。 listOfPuppies=[List create: [self getZone]]。 這種用法是合法的,編譯也不會存在任何問題。唯一的缺點(diǎn)是如果往 listOfPuppies 中的對象發(fā)送了任何不正確的消息都不會得到警告。 由于幾乎所有的 Swarm 庫重要功能都以協(xié)議的形式實(shí)現(xiàn)并且采用了 CREATABLE,因此了解上述細(xì)節(jié)就顯得尤其重要。但是,這并沒有對程序設(shè)計(jì)的方法進(jìn)行大的改變。 Swarm 的實(shí)體仍然可以被視為類。 第四章 Swarm 的開發(fā)思想 如前所述,設(shè)計(jì) Swarm 的目的是創(chuàng)建層次化的計(jì)算機(jī)對象。首先, observer 類的 swarm 被創(chuàng)建,從而創(chuàng)建了用戶接口并實(shí)例化 model 類 swarrn,后者創(chuàng)建了后續(xù)層次的對象,并對主體的活動進(jìn)行調(diào)度。 Swarm 項(xiàng)目的初始目的之一就是幫助用戶方便地創(chuàng)建高質(zhì)量的代碼。 Swarm 庫提供了一系列的類:創(chuàng)建仿真對象,管理內(nèi)存以及調(diào)度主體的活動。 主要主體和輔助主體 由于計(jì)算機(jī)程序員使用“主體”的方式與科學(xué)家不一樣,因此需要對術(shù)語的含義進(jìn)行澄清。對于科學(xué)家來說,主體 是指仿真中被建模的具有重要理論意義的實(shí)體;對于程序員來說,主體的用法就比較廣泛了,有時(shí)候含義等同于對象。這樣,在對“基于主體建模”的討論中有時(shí)會發(fā)生錯(cuò)位的現(xiàn)象,因此大家對術(shù)語“主體”的理解不一樣。 為此,我們定義類兩類主體:主要主體和輔助主體,以有利于進(jìn)行相關(guān)的討論。所謂的主要主體是指研究中首先要建模的東西,在理論中得到了描述,并具有實(shí)在的重要性。通常在這個(gè)意義上,可以對重要的“角色”以及角色之間在其中進(jìn)行交互的世界進(jìn)行表示。 讓很多新手感到驚訝的是,為了方便主要主體的工作,還需要創(chuàng)建輔助主體。例如,在 一個(gè)遵守多數(shù)票當(dāng)選的選舉模型中,可以有像投票者和候選人這樣的主要主體,還可能需要名為計(jì)票員的輔助主體,以便對選票進(jìn)行計(jì)數(shù)。 在大多數(shù)情況下,我們提到多主體系統(tǒng)時(shí),是指主要主體。 ( Swarm)面向?qū)ο蟪绦蛟O(shè)計(jì)方式 在 Swarm 中, ObserverSwarm 和 ModelSwarm 的設(shè)計(jì)方式大致一樣。在大多數(shù)類中都會出現(xiàn)的方法,包括: Objective C Java createBegin。 createEnd。 buildObjects。 createBegin()。 createEnd()。 buildObjects()。 buildActions。 activateIn。 buildActions()。 activateIn()。 此外還有涉及對象的信息的輸入 /輸出的方法。習(xí)慣上,這些方法的名字都有前綴 get 或 set。例如: Objective C Java setParameterValue: (int) value。 (int) Object setParameterValue (int value)。 int getParameterValue。 getParameterValue()。 方法 setParameterValue 能夠?qū)ο蟮膬?nèi)部參數(shù)進(jìn)行賦值;而 getParameterValue 則使得主體匯報(bào)自己的參數(shù)值。 除此之外,還應(yīng)該有針對于研究問題本質(zhì)的方法。 ModelSwarm 對象通常直接子類化于 Swarm,是負(fù)責(zé)創(chuàng)建主體的主要對象,還給主體提供了內(nèi)存區(qū)域,嗯并能對主體的活動進(jìn)行調(diào)度。 Swarm 中的內(nèi)存管理 在任何仿真項(xiàng)目中,內(nèi)存的申請和釋放都是必需的特性,也是軟 件設(shè)計(jì)中最容易出問題的地方。 Swarm 在內(nèi)存管理方面性能比較卓越,提供了對用戶透明的相關(guān)庫。 在 Swarm 中,對象的創(chuàng)建和銷毀涉及一個(gè)概念是內(nèi)存區(qū)域,申請內(nèi)存的“臟活”由庫來處理。在下一部分中,我們將討論對象的創(chuàng)建方式以及對存儲區(qū)域的占用。當(dāng)不再需要這些對象時(shí),程序可以對對象發(fā)送 drop消息,將之從內(nèi)存中卸載。 buildObjects 方法中要做些什么? 用戶只須查看幾個(gè) Swarm 樣例程序,就會清楚地發(fā)現(xiàn)創(chuàng)建對象的重要性。在 buildObjects 方法中,人們可以發(fā)現(xiàn)不僅有創(chuàng)建在當(dāng)前類中使用的 對象的命令,還有指示下一層主體創(chuàng)建其對象的命令。 以 Arbames 模型為例,在其 ObserverSwarm 的 buildObjects 方法中,首先是很多用于創(chuàng)建圖形顯示對象的命令,接著是創(chuàng)建仿真控制面板的命令,仿真控制面板呈現(xiàn)在屏幕上,為用戶提供了開始和停止仿真的能力。 需要特別指出的是,在 ObserverSwarm 的 buildObjects 方法還觸發(fā)了下一層主體的創(chuàng)建 —— 創(chuàng)建了一個(gè)內(nèi)存區(qū)域,并在區(qū)域中創(chuàng)建了一個(gè) ModelSwarm。代碼的樣子大體如下: Objective C Java forestModelSwarm = [ForestModelSwarm create: self]。 forestModelSwarm = ForestModelSwarm [forestModelSwarm buildObjects]。 ( () )。 ()。 在 Objective C 中,用戶可以發(fā)現(xiàn)舊風(fēng)格的代碼,沒有考慮 ObserverSwarm 本身就是一個(gè)內(nèi)存區(qū)域的
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1