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

正文內(nèi)容

swarm用戶手冊(cè)-文庫吧資料

2024-11-09 16:05本頁面
  

【正文】 行代碼則通知 forestModelSwarm 執(zhí)行其 buildObjects 方法。 [forestModelSwarm buildObjects]。 modelZone = [Zone create: [self getZone]]。 ()。 forestModelSwarm = ForestModelSwarm [forestModelSwarm buildObjects]。 需要特別指出的是,在 ObserverSwarm 的 buildObjects 方法還觸發(fā)了下一層主體的創(chuàng)建 —— 創(chuàng)建了一個(gè)內(nèi)存區(qū)域,并在區(qū)域中創(chuàng)建了一個(gè) ModelSwarm。在 buildObjects 方法中,人們可以發(fā)現(xiàn)不僅有創(chuàng)建在當(dāng)前類中使用的 對(duì)象的命令,還有指示下一層主體創(chuàng)建其對(duì)象的命令。當(dāng)不再需要這些對(duì)象時(shí),程序可以對(duì)對(duì)象發(fā)送 drop消息,將之從內(nèi)存中卸載。 在 Swarm 中,對(duì)象的創(chuàng)建和銷毀涉及一個(gè)概念是內(nèi)存區(qū)域,申請(qǐng)內(nèi)存的“臟活”由庫來處理。 Swarm 中的內(nèi)存管理 在任何仿真項(xiàng)目中,內(nèi)存的申請(qǐng)和釋放都是必需的特性,也是軟 件設(shè)計(jì)中最容易出問題的地方。 除此之外,還應(yīng)該有針對(duì)于研究問題本質(zhì)的方法。 getParameterValue()。 (int) Object setParameterValue (int value)。習(xí)慣上,這些方法的名字都有前綴 get 或 set。 activateIn()。 activateIn。 buildObjects()。 createBegin()。 createEnd。 ( Swarm)面向?qū)ο蟪绦蛟O(shè)計(jì)方式 在 Swarm 中, ObserverSwarm 和 ModelSwarm 的設(shè)計(jì)方式大致一樣。例如,在 一個(gè)遵守多數(shù)票當(dāng)選的選舉模型中,可以有像投票者和候選人這樣的主要主體,還可能需要名為計(jì)票員的輔助主體,以便對(duì)選票進(jìn)行計(jì)數(shù)。通常在這個(gè)意義上,可以對(duì)重要的“角色”以及角色之間在其中進(jìn)行交互的世界進(jìn)行表示。 為此,我們定義類兩類主體:主要主體和輔助主體,以有利于進(jìn)行相關(guān)的討論。對(duì)于科學(xué)家來說,主體 是指仿真中被建模的具有重要理論意義的實(shí)體;對(duì)于程序員來說,主體的用法就比較廣泛了,有時(shí)候含義等同于對(duì)象。 Swarm 庫提供了一系列的類:創(chuàng)建仿真對(duì)象,管理內(nèi)存以及調(diào)度主體的活動(dòng)。首先, observer 類的 swarm 被創(chuàng)建,從而創(chuàng)建了用戶接口并實(shí)例化 model 類 swarrn,后者創(chuàng)建了后續(xù)層次的對(duì)象,并對(duì)主體的活動(dòng)進(jìn)行調(diào)度。 Swarm 的實(shí)體仍然可以被視為類。 由于幾乎所有的 Swarm 庫重要功能都以協(xié)議的形式實(shí)現(xiàn)并且采用了 CREATABLE,因此了解上述細(xì)節(jié)就顯得尤其重要。 這種用法是合法的,編譯也不會(huì)存在任何問題。 將 listOfPuppies 定義為為一般對(duì)象也是合法的: id List listOfPuppies。如果需要定義的變量 listOfPuppies 由List 類項(xiàng)目組成,推薦的方法是創(chuàng)建一個(gè)類型為 id 的變量,然后用尖括號(hào)指明對(duì)象所采用的協(xié)議: id List listOfPuppies。 從 Swarm 參考指南中我們知道協(xié)議 List 采用了 CREATABLE 協(xié)議,因此錯(cuò)誤不是由于使用 List 創(chuàng)建listOfPuppies 引起的。 Swarm 已經(jīng)不允許用戶采用上述方式靜態(tài)的定位對(duì)象。使用老版本的Swarm,程序設(shè)計(jì)者可以創(chuàng)建屬于 List 類的靜態(tài)類型對(duì)象,如下的代碼所示: List * listofPuppies。由于協(xié)議的引入,使用約定發(fā)生了改變。如果編譯的標(biāo)志中包含 WERROR,也就是將警告視為錯(cuò)誤,那么出現(xiàn)的警告信息將停止編譯過程。例如,有消息通知對(duì)象執(zhí)行方法 goOutside,但是主體所采用的所有協(xié)議中都沒有該方法,此時(shí)編譯器將對(duì)此給出警告。這意味著 SwarmObject 可以被視為一個(gè)類,SwarmObject 將響應(yīng) createBegin 消息, SwarmObject 創(chuàng) 建的實(shí)例對(duì)象將能響應(yīng) createEnd, drop 以及協(xié)議中列出的其他方法。 幾乎所有的 Swarm 協(xié)議都采用了 CREATABLE 協(xié)議,因此可以將之視為類一樣的使用。例如, EZGraph 協(xié)議采用了 CREATABLE 協(xié)議,因此當(dāng)用戶要?jiǎng)?chuàng)建該協(xié)議的實(shí)例時(shí),就可以直接使用。在Swarm 的參考指南中,有所有的協(xié)議的列表。 對(duì) Swarm 用戶來說,很多情況下都不必區(qū)分類和協(xié)議。協(xié)議,是一個(gè)對(duì)象可以執(zhí)行的方法列表。詳細(xì)情況將在后續(xù)版本的指南中討論。 注意在 Objective C 需要明確指出的 create:方法在 Java 中是隱含的。 Objective C Java aBug = [Bug create: [self getZone]]。創(chuàng)建 Java 對(duì)象 Bug的最簡(jiǎn)單方法如下所示: aBug = Bug (())。由于現(xiàn)在屬于 Swarm 類型的對(duì)象,跟ModelSwarm 一樣,都是內(nèi)存區(qū)域,因此無需再申請(qǐng)一個(gè)放置 Bug對(duì)象的區(qū)域了。 創(chuàng)建對(duì)象的實(shí)例不一定要用 createBegin/createEnd 對(duì),可以簡(jiǎn)單地處理為: aBug = [Bug crate: self] 在基于老版本的 Swarm 的代碼中,語法有所不同: aBug = [Bug create: [self getZone]]。然后對(duì)象aBug被創(chuàng)建,可選的屬性被加入。 // 設(shè)置主體的永久特性的代碼 bug = [Bug createEnd]。例如: // 摘自 ,創(chuàng)建 Bug的實(shí)例 import // {其它的輸入和代碼 } buildObjects { id aBug。 假定已經(jīng)存在 和 ,現(xiàn)在想創(chuàng)建類的實(shí)例。 實(shí)例化: Objective C 風(fēng)格 仿真中的角色對(duì)象通常是 SwarmObject 類的子類。 ? 在 Java 中,使用 this 而不是 self( super 在兩種語言中的含義和語法都是相同的)。除此之外, Objective C 和 Java 代碼之間的最主要區(qū)別純粹是因?yàn)檎Z法的不同。這是由于 Java 語言是強(qiáng)類型語言。 } } (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ù)類型。 } public return_type look(direction_type d) (7) { return_type returnval。 return this。 public Object setX$Y (int x,int y) (5) { xPos = x。 int worldXsize, worldYSize。 下面的 Java 代碼等同于樣例 31 中的 Objective C 代碼。} Java 基礎(chǔ) Objective C 和 Java 之間的最主要區(qū)別是 Java 并不類分成“聲明”(頭文件)和“實(shí)現(xiàn)”(實(shí)現(xiàn)文件)兩部分。 return self。[location[i]]=0。 [p while (val[tmp_loc]!=0) 。 } getRandLoc]。 do { rand_move: p { id loc。 } 與之相比, C 函數(shù)一般如下所示: (type) name ( (type) arg1, (type) arg2) ) { (body) return returnval。一種方法可以返回C 函數(shù)可以返回的任何類 型,此外,方法還可以返回 id(嚴(yán)格地說,是對(duì)象的指針)。例如下面的代碼: [collectBugs addLast: [aBug look: aDirection] ]。不像在 C 語言中一般返回 void,程序員可以返回 self。例如,假設(shè)某個(gè)程序創(chuàng)建了類 Bug的實(shí)例 aBug。 命令 return self 一般用于兩種情況。這意味著將返回缺省類型 id。當(dāng)方法 look 被調(diào)用時(shí),調(diào)用方法的代碼必須能夠接收所返回類型的變量。首先,注 意方法 look 指定了返回類型為( return_type)。 //body of method return returnval。 } step { //body return self。 yPos = y。 (7) end 在上面的代碼中, (1) 實(shí)例變量和方法的聲明 (2) 子類 (3) 超類 (4) 實(shí)例變量 (5) 聲明方法 set,有兩個(gè)參數(shù) (6) 聲明方法 step (7) 聲明方法 look,有一個(gè)類型為 direction_type 的參數(shù),返回值類型為 return_type 實(shí)現(xiàn)文件:定義一個(gè)類 每一個(gè)實(shí)現(xiàn)文件都必須輸入對(duì)應(yīng)的頭文件。 (5) step。 (4) int foodSpace。 樣例 31 Objective C 類 (1)interface Bug (2) : SwarmObject (3) { int xPos, yPos。 圖 Objective C 基礎(chǔ) 如圖 所示,接口聲明了類的名字和超類的名字,然后給出了包含在大括號(hào)內(nèi)的變量列表,然后是該類實(shí)現(xiàn)的方法列表。例如: [super updateRecords] 接口文件:類的聲明 查看有 Objective C 代碼的目錄就會(huì)發(fā)現(xiàn),文件總是成對(duì)出現(xiàn)的,如 和 , 和 等。 時(shí), updateRecords 命令將被執(zhí)行,從而更新了所有的實(shí)例變量。如果在代碼中定義了某個(gè)對(duì)象,程序設(shè)計(jì)者想要該對(duì)象執(zhí)行某種方法,標(biāo)識(shí) self 就顯得很有必要。可將之視為一種特殊的變量類型(實(shí)際上是指向一個(gè)特殊數(shù)據(jù)結(jié)構(gòu) —— 對(duì)象 —— 的指針)。由于 Swarm 被組織成協(xié)議的形式,這減少了程序崩潰的可能性,因?yàn)榫幾g器在檢查的時(shí)候發(fā)現(xiàn)聲明某個(gè)協(xié)議的類中并沒有實(shí)現(xiàn)指定的方 法,會(huì)提出警告。這樣處理的好處是,無需知道命令接收者的詳細(xì)情況,就可以在代碼加入要求接受者執(zhí)行的命令,如此得到的代碼,允許環(huán)境和對(duì)象集合變化和演化。這意味著,例如,可以編寫這樣的程序:首先創(chuàng)建一個(gè)對(duì)象列表,然后給每個(gè)對(duì)象都發(fā)送一條消息。 ? Objective C 允許運(yùn)行時(shí)綁定 。 Objective C 在大家都很熟悉的 C 語言的基礎(chǔ)上增加了一些簡(jiǎn)單的特性。 為什么用 Objective C 編寫 Swarm? Objective C 并非一種主流程序設(shè)計(jì)語言,因此很自然地要問為什么選擇 Objective C 來實(shí)現(xiàn) Swarm。 Swarm(實(shí)際上, Swarm 還可以擴(kuò)展到如 Scheme 或 C++這樣的語言)的 Java 層將 Swarm 庫的協(xié)議( protocol)映射為 Java 接口( interface)。 1992 年以后隨著 WWW 的發(fā)展, Oak 被重新命名為 Java,目標(biāo)也調(diào)整為Web 市場(chǎng)。 Java 從 Swarm 開始,建模者可以使用 Java。 Robson, 1989]風(fēng)格的擴(kuò)展。用 Objective C 編寫的模型都具有良好得性能,因?yàn)樗鞘褂帽镜鼗木哂写a優(yōu)化功能編譯器 —— 即 GCC—— 編譯的。 Swarm 是一系列可以從中選取特性的庫。 3 輸出的實(shí)現(xiàn)通常留給程序設(shè)計(jì)者自己。下面是用過程語言編寫的仿真樣例: 過程語言編寫的仿真樣例 偽代碼 1. 獲得參數(shù) 2. 初始化 1 3. for 1 to 時(shí)間步驟總數(shù) do : a. for 1 to 主體總數(shù) do : 主體 i 進(jìn)行某些活動(dòng) 2 b. 呈現(xiàn)狀態(tài) 3 4. 退出 1 一般是設(shè) 置數(shù)據(jù)結(jié)構(gòu)以及對(duì)輸出的支持。 所以, Swarm 中的建模過程與使用非面向?qū)ο笳Z言如 Fortran 或 Pascal 的仿真建模具有很大的不同。對(duì)象被創(chuàng)建出來,然后根據(jù)某種調(diào)度機(jī)制進(jìn)行交互。在子類 GroceryStore 中的方法將重載超類中對(duì)該方法的定義。那么類 GroceryStore的所有實(shí)例都會(huì)對(duì) takeMoney 響應(yīng)。子類可以自動(dòng)擁有父類的所有變量和方法,同時(shí)還可以增加新的方法和變量。 Swarm 庫在 object 類的基礎(chǔ)上創(chuàng)建子類,再創(chuàng)建子類的子類,如此反復(fù),直到 Swarm 項(xiàng)目的程序員可以創(chuàng)建角色的新類為止,新類是 SwarmObject 的子類。 繼承能夠發(fā)揮作用,是因?yàn)槊恳粋€(gè)代碼類都被設(shè)計(jì)為某個(gè)超類的 子類。接口聲明了對(duì)象可以執(zhí)行的方法,而實(shí)現(xiàn)的細(xì)節(jié)則被隱藏起來(見圖 22),用戶只需熟悉對(duì)象的接口,而不是它的實(shí)現(xiàn)。例如,如果對(duì)象 g
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1