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

正文內(nèi)容

swarm中文手冊(cè)(編輯修改稿)

2025-07-26 08:23 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 nd對(duì),可以簡(jiǎn)單地處理為:aBug = [Bug crate: self]在基于老版本的Swarm的代碼中,語(yǔ)法有所不同:aBug = [Bug create: [self getZone]]。在Objective C中,這種用法仍然是有效的,但是不鼓勵(lì)這么做。由于現(xiàn)在屬于Swarm類型的對(duì)象,跟ModelSwarm一樣,都是內(nèi)存區(qū)域,因此無(wú)需再申請(qǐng)一個(gè)放置Bug對(duì)象的區(qū)域了。 實(shí)例化:Java風(fēng)格Java使用構(gòu)造函數(shù)來(lái)創(chuàng)建類的實(shí)例。創(chuàng)建Java對(duì)象Bug的最簡(jiǎn)單方法如下所示:aBug = Bug (())。這等價(jià)于前面所述的Objective C樣例。Objective C JavaaBug = [Bug create: [self getZone]]。 aBug = Bug (())。注意在Objective C需要明確指出的create:方法在Java中是隱含的。備注:在Java中仍然可能使用create和createBegin/createEnd這種模式,但由于Java是強(qiáng)類型的語(yǔ)言,因而需要更多的工作才能使用上述模式。詳細(xì)情況將在后續(xù)版本的指南中討論。 簡(jiǎn)要的澄清:Objective C中的類和協(xié)議讀者需要仔細(xì)研究的一點(diǎn),是Objective C允許創(chuàng)建叫做協(xié)議的實(shí)體。協(xié)議,是一個(gè)對(duì)象可以執(zhí)行的方法列表。Swarm的結(jié)構(gòu)由協(xié)議組成,因此在Swarm的參考材料中,將庫(kù)看作是類的集合,每一個(gè)類又與給定的協(xié)議集保持一致。對(duì)Swarm用戶來(lái)說(shuō),很多情況下都不必區(qū)分類和協(xié)議。最重要的Swarm協(xié)議,如類型Swarm(來(lái)自objectbase/)或Swarmobject(來(lái)自objectbase/),可以將之當(dāng)作類一樣的使用。在Swarm的參考指南中,有所有的協(xié)議的列表。采用CREATABLE協(xié)議的協(xié)議,可以將之視為類工廠對(duì)象。例如,EZGraph協(xié)議采用了CREATABLE協(xié)議,因此當(dāng)用戶要?jiǎ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í)例對(duì)象將能響應(yīng)createEnd,drop以及協(xié)議中列出的其他方法。使用協(xié)議的一個(gè)原則性好處是在編譯的過(guò)程中,如果用戶代碼試圖向?qū)ο蟀l(fā)送非法的消息,編譯器將發(fā)揮警告信息。例如,有消息通知對(duì)象執(zhí)行方法goOutside,但是主體所采用的所有協(xié)議中都沒(méi)有該方法,此時(shí)編譯器將對(duì)此給出警告。粗略地說(shuō),采用協(xié)議就好比廣而告之了某個(gè)類所能完成的功能,隨后編譯器確保了個(gè)中的“誠(chéng)信”。如果編譯的標(biāo)志中包含WERROR,也就是將警告視為錯(cuò)誤,那么出現(xiàn)的警告信息將停止編譯過(guò)程。事實(shí)上,Swarm庫(kù)的很多重要部件都組織為協(xié)議,但是早期版本的Swarm不如當(dāng)前版本在這方面那么突出。由于協(xié)議的引入,使用約定發(fā)生了改變。在Swarm中,有一個(gè)可用于創(chuàng)建集合的類List。使用老版本的Swarm,程序設(shè)計(jì)者可以創(chuàng)建屬于List類的靜態(tài)類型對(duì)象,如下的代碼所示:List * listofPuppies。lisofPuppies = [List create: [self getZone]]。Swarm已經(jīng)不允許用戶采用上述方式靜態(tài)的定位對(duì)象。這樣的代碼將使得編譯器崩潰,因?yàn)樵赟warm中沒(méi)有名為L(zhǎng)ist的類,只有上述命名的協(xié)議。從Swarm參考指南中我們知道協(xié)議List采用了CREATABLE協(xié)議,因此錯(cuò)誤不是由于使用List創(chuàng)建listOfPuppies引起的。實(shí)際上,錯(cuò)誤源自listOfPuppies的聲明本身。如果需要定義的變量listOfPuppies由List類項(xiàng)目組成,推薦的方法是創(chuàng)建一個(gè)類型為id的變量,然后用尖括號(hào)指明對(duì)象所采用的協(xié)議:id List listOfPuppies。listOfPuppies=[List create: [self getZone]]。將listOfPuppies定義為為一般對(duì)象也是合法的:id List listOfPuppies。listOfPuppies=[List create: [self getZone]]。這種用法是合法的,編譯也不會(huì)存在任何問(wèn)題。唯一的缺點(diǎn)是如果往listOfPuppies中的對(duì)象發(fā)送了任何不正確的消息都不會(huì)得到警告。由于幾乎所有的Swarm庫(kù)重要功能都以協(xié)議的形式實(shí)現(xiàn)并且采用了CREATABLE,因此了解上述細(xì)節(jié)就顯得尤其重要。但是,這并沒(méi)有對(duì)程序設(shè)計(jì)的方法進(jìn)行大的改變。Swarm的實(shí)體仍然可以被視為類。 第四章 Swarm的開發(fā)思想如前所述,設(shè)計(jì)Swarm的目的是創(chuàng)建層次化的計(jì)算機(jī)對(duì)象。首先,observer類的swarm被創(chuàng)建,從而創(chuàng)建了用戶接口并實(shí)例化model類swarrn,后者創(chuàng)建了后續(xù)層次的對(duì)象,并對(duì)主體的活動(dòng)進(jìn)行調(diào)度。Swarm項(xiàng)目的初始目的之一就是幫助用戶方便地創(chuàng)建高質(zhì)量的代碼。Swarm庫(kù)提供了一系列的類:創(chuàng)建仿真對(duì)象,管理內(nèi)存以及調(diào)度主體的活動(dòng)。 主要主體和輔助主體由于計(jì)算機(jī)程序員使用“主體”的方式與科學(xué)家不一樣,因此需要對(duì)術(shù)語(yǔ)的含義進(jìn)行澄清。對(duì)于科學(xué)家來(lái)說(shuō),主體是指仿真中被建模的具有重要理論意義的實(shí)體;對(duì)于程序員來(lái)說(shuō),主體的用法就比較廣泛了,有時(shí)候含義等同于對(duì)象。這樣,在對(duì)“基于主體建?!钡挠懻撝杏袝r(shí)會(huì)發(fā)生錯(cuò)位的現(xiàn)象,因此大家對(duì)術(shù)語(yǔ)“主體”的理解不一樣。為此,我們定義類兩類主體:主要主體和輔助主體,以有利于進(jìn)行相關(guān)的討論。所謂的主要主體是指研究中首先要建模的東西,在理論中得到了描述,并具有實(shí)在的重要性。通常在這個(gè)意義上,可以對(duì)重要的“角色”以及角色之間在其中進(jìn)行交互的世界進(jìn)行表示。讓很多新手感到驚訝的是,為了方便主要主體的工作,還需要?jiǎng)?chuàng)建輔助主體。例如,在一個(gè)遵守多數(shù)票當(dāng)選的選舉模型中,可以有像投票者和候選人這樣的主要主體,還可能需要名為計(jì)票員的輔助主體,以便對(duì)選票進(jìn)行計(jì)數(shù)。在大多數(shù)情況下,我們提到多主體系統(tǒng)時(shí),是指主要主體。 (Swarm)面向?qū)ο蟪绦蛟O(shè)計(jì)方式在Swarm中,ObserverSwarm和ModelSwarm的設(shè)計(jì)方式大致一樣。在大多數(shù)類中都會(huì)出現(xiàn)的方法,包括:Objective C Java createBegin。 createEnd。 buildObjects。 createBegin()。 createEnd()。 buildObjects()。 buildActions。 activateIn。 buildActions()。 activateIn()。此外還有涉及對(duì)象的信息的輸入/輸出的方法。習(xí)慣上,這些方法的名字都有前綴get或set。例如:Objective C JavasetParameterValue: (int) value。 (int) Object setParameterValue (int value)。 intgetParameterValue。 getParameterValue()。方法setParameterValue能夠?qū)?duì)象的內(nèi)部參數(shù)進(jìn)行賦值;而getParameterValue則使得主體匯報(bào)自己的參數(shù)值。除此之外,還應(yīng)該有針對(duì)于研究問(wèn)題本質(zhì)的方法。ModelSwarm對(duì)象通常直接子類化于Swarm,是負(fù)責(zé)創(chuàng)建主體的主要對(duì)象,還給主體提供了內(nèi)存區(qū)域,嗯并能對(duì)主體的活動(dòng)進(jìn)行調(diào)度。 Swarm中的內(nèi)存管理在任何仿真項(xiàng)目中,內(nèi)存的申請(qǐng)和釋放都是必需的特性,也是軟件設(shè)計(jì)中最容易出問(wèn)題的地方。Swarm在內(nèi)存管理方面性能比較卓越,提供了對(duì)用戶透明的相關(guān)庫(kù)。在Swarm中,對(duì)象的創(chuàng)建和銷毀涉及一個(gè)概念是內(nèi)存區(qū)域,申請(qǐng)內(nèi)存的“臟活”由庫(kù)來(lái)處理。在下一部分中,我們將討論對(duì)象的創(chuàng)建方式以及對(duì)存儲(chǔ)區(qū)域的占用。當(dāng)不再需要這些對(duì)象時(shí),程序可以對(duì)對(duì)象發(fā)送drop消息,將之從內(nèi)存中卸載。 buildObjects方法中要做些什么?用戶只須查看幾個(gè)Swarm樣例程序,就會(huì)清楚地發(fā)現(xiàn)創(chuàng)建對(duì)象的重要性。在buildObjects方法中,人們可以發(fā)現(xiàn)不僅有創(chuàng)建在當(dāng)前類中使用的對(duì)象的命令,還有指示下一層主體創(chuàng)建其對(duì)象的命令。以Arborgames模型為例,在其ObserverSwarm的buildObjects方法中,首先是很多用于創(chuàng)建圖形顯示對(duì)象的命令,接著是創(chuàng)建仿真控制面板的命令,仿真控制面板呈現(xiàn)在屏幕上,為用戶提供了開始和停止仿真的能力。需要特別指出的是,在ObserverSwarm的buildObjects方法還觸發(fā)了下一層主體的創(chuàng)建——?jiǎng)?chuàng)建了一個(gè)內(nèi)存區(qū)域,并在區(qū)域中創(chuàng)建了一個(gè)ModelSwarm。代碼的樣子大體如下:Objective C JavaforestModelSwarm = [ForestModelSwarm create: self]。 forestModelSwarm = ForestModelSwarm [forestModelSwarm buildObjects]。 ( () )。 ()。在Objective C中,用戶可以發(fā)現(xiàn)舊風(fēng)格的代碼,沒(méi)有考慮ObserverSwarm本身就是一個(gè)內(nèi)存區(qū)域的事實(shí)。modelZone = [Zone create: [self getZone]]。forestModelSwarm = [ForestModelSwarm create: modelZone]。[forestModelSwarm buildObjects]。注意上述代碼最后一行的重要性。第一行代碼創(chuàng)建了ModelSwarm對(duì)象(即forestModelSwarm),最后一行代碼則通知forestModelSwarm執(zhí)行其buildObjects方法。 在buildActions方法中要做些什么?在標(biāo)準(zhǔn)情況下,buildActions有兩個(gè)重要的部件,創(chuàng)建了兩類對(duì)象:l ActionGroup:“刺激”事件序列l(wèi) Schedule:決定了如何執(zhí)行在ActionGroup中的事件在Arborgames模型的buildActions方法中,有很多有趣的例子。例如,在ObserverSwarm中,有刷新圖形顯示的命令,也有命令指示下一級(jí)的主體執(zhí)行其自己的buildActions方法。在ModelSwarm的buildActions中,通??梢园l(fā)現(xiàn)仿真的本質(zhì)性動(dòng)作。通知主體或系列主體執(zhí)行各自方法的命令被放在ActionGroup類對(duì)象中,這意味著只要重復(fù)動(dòng)作組,這些命令就會(huì)被重復(fù)執(zhí)行。這種重復(fù)是由創(chuàng)建調(diào)度以及指定重復(fù)次數(shù)的命令控制的。 調(diào)度的合并如上所提到的,在很多不同的類中都可以有buildActions方法。由于在每一個(gè)buildActions方法中都可以創(chuàng)建動(dòng)作組和調(diào)度,因此如何以一種合乎邏輯的方式協(xié)調(diào)這些活動(dòng)就顯得尤為重要。Swarm的一個(gè)優(yōu)點(diǎn)就是維護(hù)了一個(gè)一致的主調(diào)度。每一個(gè)子swarm的調(diào)度都被合并到高一層的調(diào)度中。最后所有的調(diào)度都被合并到最頂層的Swarm。當(dāng)每一層swarm的activateIn方法被調(diào)用時(shí),活動(dòng)的同步是由Swarm Activity庫(kù)管理的。調(diào)度的多級(jí)合并意味著模型實(shí)際上可以被視為多級(jí)模型的嵌套。圖41 swarm的嵌套體系結(jié)構(gòu)將Swarm視為一個(gè)虛擬計(jì)算機(jī)圖42 Swarm虛擬計(jì)算機(jī)在更抽象的層次上講,Swarm庫(kù)可以被看作是在操作系統(tǒng)內(nèi)核之上的一層。這種觀點(diǎn)在下列情況時(shí)尤顯重要:用戶暫停了仿真,與之進(jìn)行單獨(dú)交互,從而可以查看和修改主體的內(nèi)部值。 第五章 圖形用戶接口 Swarm GUI的組成元素Swarm提供了很多用于生成圖形用戶接口的類和協(xié)議,包括:圖51 線條圖(這里是時(shí)間序列)圖52 柱狀圖圖53 離散二維數(shù)據(jù)的柵狀圖圖54 探針圖上述類型的圖,除了最后一種,將在后續(xù)章節(jié)詳細(xì)討論,這里主要描述探針是如何呈現(xiàn)在運(yùn)行仿真的用戶面前,以及用戶如何操作它們。除了提供了用戶可以操作的圖形窗口,探針還有其他作用,但是本節(jié)將主要涉及前者,其他的作用將留給后續(xù)章節(jié)。 GUI探針顯示圖形探針使得用戶可以查看仿真程序中任何對(duì)象的圖形快照,包括兩種類型:l DefaultProbeMaps。如果指定了要探測(cè)的窗口的同時(shí)并沒(méi)有指定任何探針圖,則生成的ProbeDisplay會(huì)提供一個(gè)DefaultProbeDisplay類的窗口,該窗口將會(huì)顯示在類的結(jié)構(gòu)中所有的變量。圖55 缺省的探針圖l CustomProbeMap。如果指定了探針圖,則隨后的ProbeDisplay將嚴(yán)格地遵守探針圖的指定。此時(shí)ProbeDisplay會(huì)生成查看對(duì)象的接口。圖56 CustomProbeMap 使用GUI的ProbeDisplay標(biāo)準(zhǔn)的ProbeDisplay和CompleteProbeDisplay之間的共同點(diǎn)有:l 在ProbeDisplay中的不同域可以通過(guò)輸入新值并按回車進(jìn)行更新。然而,也有些域(包括指針和id)不能被修改。如果試圖對(duì)之進(jìn)行修改,機(jī)器會(huì)發(fā)出蜂鳴聲。l 如果某個(gè)實(shí)例變量或者參數(shù)槽容納的是一個(gè)對(duì)象,則該變量可以通過(guò)拖拽到另外一個(gè)變量或者參數(shù)槽。l 還有,如果某個(gè)實(shí)例變量/參數(shù)槽容納的是一個(gè)對(duì)象,則可以通過(guò)第三個(gè)鼠標(biāo)按鈕來(lái)查看該變量/參數(shù)槽的值。下面的特性只在自定義的ProbeDisplay中才有
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1