




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、面向?qū)ο蟮姆治鲞^程摘要分析了面向?qū)ο蠹夹g(shù)應(yīng)用于仿真領(lǐng)域的種種優(yōu)點(diǎn),亦即我們選擇采用面向?qū)ο蟮姆椒ㄟM(jìn)行改造的原因。一些面向?qū)ο蠓椒ù嬖诘牟蛔恪jP(guān)鍵詞:仿真,面向?qū)ο螅哆吋b箱起重機(jī),訓(xùn)練器面向?qū)ο蟮拈_發(fā)方法是以對(duì)象作為最基本的元素,它是分析問題、解決問題的核心。 面向?qū)ο?對(duì)象(Object)+ 分類(classification)+ 繼承(inheritance)+ 通過消息的通信 (communication with messages)從下圖中我們可以看出,面向?qū)ο蟮拈_發(fā)方法明顯不同。一個(gè)對(duì)象隨用圖比較結(jié)構(gòu)化范型和面向?qū)ο蠓缎兔嫦驅(qū)ο蟮姆抡鏋榉抡嫒藛T提供了開發(fā)模塊化可重用的仿真模型的工具
2、,它把系統(tǒng)看成由相互作用的對(duì)象所組成,而對(duì)象則往往表示現(xiàn)實(shí)系統(tǒng)中的真實(shí)實(shí)體。從而提高了仿真模型的可理解性、可擴(kuò)充性和模塊性,并且便于實(shí)現(xiàn)仿真與計(jì)算機(jī)圖形和人工智能的結(jié)合。 采用面向?qū)ο蟮姆椒ǎ蛉缦?:1 .可理解性面向?qū)ο蠓抡鎸?duì)設(shè)計(jì)者、 實(shí)現(xiàn)者,以及最終用戶來說都改進(jìn)了仿真的可理解性。因?yàn)榉抡嫦到y(tǒng)中的對(duì)象往往直接表示現(xiàn)實(shí)系統(tǒng)中的真實(shí)實(shí)體,這些實(shí)體在面向?qū)ο蟮姆抡嫦到y(tǒng)中可以用外觀上類似于人們熟悉的實(shí)際系統(tǒng)的對(duì)象的圖形或圖像來表示,用戶可以通過圖形界面與仿真模型進(jìn)行交互, 利用圖形或圖像來直接建立仿真模型,這對(duì)于熟悉實(shí)際系統(tǒng)的用戶來說是很容易理解的。2 .可重用性和可擴(kuò)充性在面向?qū)ο蟮姆抡嬷校?/p>
3、可以建立起一個(gè)模型庫用以保存以前建立的模型,模型庫中的模型可以作為建立新模型的可重用構(gòu)件,通過面向?qū)ο蠹夹g(shù)內(nèi)在的繼承機(jī)制可以容易地和系統(tǒng)地修改現(xiàn)有的對(duì)象(類)以創(chuàng)建新的對(duì)象。并且可以加入現(xiàn)有的類庫中。類庫提供了仿真建模 所需要的一般設(shè)施。通過修改現(xiàn)有的類,可以建立各種應(yīng)用中所需要的特殊對(duì)象。3 .模塊性面向?qū)ο蟮姆抡媸悄K化,特殊的過程來尋找相應(yīng)的信息,不會(huì)影響其它的對(duì)象。4 .圖形用戶界面對(duì)象作為模塊,對(duì)象的所有信息都保存在該對(duì)象中,在面向?qū)ο蟮姆抡嫦到y(tǒng)中往往表示實(shí)際系統(tǒng)中的真實(shí)實(shí)體,因而在系統(tǒng)中可以用相似的圖形或圖像來表示,因此更便于建立非常直觀的圖形用戶界面,用戶可以直接在屏幕上建立系統(tǒng)
4、的圖形概念,直觀地構(gòu)造仿真模型。5 .仿真與人工智能的結(jié)合在面向?qū)ο蟮姆抡嬷校瑢?duì)象封裝了它們的功能,而功能可以包含智能。因而利用人工智能和專家系統(tǒng)的方法可以在功能中嵌入智能,使對(duì)象也能具有決策和學(xué)習(xí)能力。仿真與人工智能的結(jié)合可以增強(qiáng)仿真的能力。在基于知識(shí)的仿真系統(tǒng)和專家仿真系統(tǒng)方面,許多學(xué)者己進(jìn)行了廣泛的研究,表明了人工智能和專家系統(tǒng)在輔助仿真建模、仿真結(jié)果的解釋和仿真模型靈敏度分析等方面的重要作用。6 .并行仿真由于對(duì)象封裝了所有的信息,因而每個(gè)對(duì)象都能分配給自己的處理程序執(zhí)行它的功能。這樣, 對(duì)象在某種程序上可以相對(duì)獨(dú)立的運(yùn)行。正是由于對(duì)象之間的這種相對(duì)獨(dú)立性,產(chǎn)生了并行仿真執(zhí)行的可能性。
5、仿真的并行執(zhí)行可以極大的降低仿真時(shí)間,允許仿真更多的對(duì)象,能夠?qū)崿F(xiàn)更詳細(xì)的仿真。3. 2 面向?qū)ο蟮姆椒ㄟx擇4. 2. 1 方法比較八十年代末以來,隨著面向?qū)ο蠹夹g(shù)成為研究的熱點(diǎn)出現(xiàn)了幾十種支持軟件開發(fā) 的面向?qū)ο蠓椒āO旅娼榻B幾種經(jīng)典的分析和設(shè)計(jì)方法:1 .OMT/RumbaughOMT(Object Modeling Technique)方法最早是由 Loomis,Shan 和 Rumbaugh 在 1987 年提出的,曾擴(kuò)展應(yīng)用于關(guān)系數(shù)據(jù)庫設(shè)計(jì)。J. Runmbaugh 在 1991 年正式把OMT 應(yīng)用于面向?qū)ο蟮姆治龊驮O(shè)計(jì)。這個(gè)方法是在實(shí)體關(guān)系模型上擴(kuò)展了類、繼承和行為而得到的。OM
6、T 覆蓋了分析、設(shè)計(jì)和實(shí)現(xiàn)三個(gè)階段。OMT 包括了一組定義的很好的并且相互關(guān)聯(lián)的概念,他們是類 (class)、對(duì)象(ob ject)、一般化(generalization)、繼承(inheritance)、鏈 (link)、鏈屬性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、場(chǎng)景(scene)、 屬性(attribute)、子系統(tǒng)(subsystem)、模塊(module)等。OMT 方法包含四個(gè)步驟:分析、系統(tǒng)設(shè)計(jì)、對(duì)象設(shè)計(jì)和實(shí)現(xiàn)。OMT 定義有三種模型,這些模型貫穿于每個(gè)步驟,在每個(gè)步驟中被不斷的凈化和擴(kuò)充。這三種模型是
7、:對(duì)象模型,用類和關(guān)系來刻畫系統(tǒng)的靜態(tài)結(jié)構(gòu)。動(dòng)態(tài)模型,用事件和對(duì)象刻畫系統(tǒng)的動(dòng)態(tài)特性。功能模型,按照對(duì)象的操作來描述如何從輸入給出輸出結(jié)果。OMT 是一種比較成熟的方法,用幾種不同的觀念來適應(yīng)不同的建模場(chǎng)合。但應(yīng)用 所有的 OMT 技術(shù)來建立一個(gè)一致的模型是非常困難的,而且各階段三個(gè)模型之間的關(guān)系也不是十分清晰。為建立一個(gè)一致的模型,OMT 的許多概念和語義還需要形式的定義。2. OOD/BoochOOD(Object Oriented Design) 方法是 Grady Booch 從 1983 開始研究,1991 年后走向成熟的一種方法。Booch 方法在面向?qū)ο蟮脑O(shè)計(jì)中主要強(qiáng)調(diào)多次重復(fù)和
8、開發(fā)者的創(chuàng)造性。方法本身是一組啟發(fā)性的過程式建議。方法并不依從硬性的條件限制,OOD 的一般過程如下:1) 在一定抽象層次上標(biāo)識(shí)類與對(duì)象。2)標(biāo)識(shí)類與對(duì)象的語義。3)標(biāo)識(shí)類與對(duì)象之間的關(guān)系。4)實(shí)現(xiàn)類與對(duì)象。這個(gè)過程是遞歸的。設(shè)計(jì)過程從發(fā)現(xiàn)類和對(duì)象,形成問題域的字典開始,直到不再發(fā)現(xiàn)新的抽象與機(jī)制,或者說, 所有發(fā)現(xiàn)的類和對(duì)象己經(jīng)可以由現(xiàn)有的復(fù)用類和對(duì)象實(shí)現(xiàn)為止。OOD 為開發(fā)者提供了豐富的圖形表示。從不同的側(cè)面觀察模型都可以獲得模型在某一方面特性的豐富視圖。OOD 方法并不是一個(gè)開發(fā)過程,只是在開發(fā)面向?qū)ο笙到y(tǒng)時(shí)應(yīng)遵循的一些技術(shù)和原則。OOD 方法是從外部開始,逐步求精每個(gè)類直到系統(tǒng)被實(shí)現(xiàn)。
9、它的缺點(diǎn)在于不能有效的找出每個(gè)對(duì)象和類的操作。3. RDD/Wirfs 一 BrockRDD(Responsibility-Driven Design) 方法是 Wirfs-Brock 在 1990 年提出的。這是一個(gè)按照類、責(zé)任以及合作關(guān)系對(duì)應(yīng)用進(jìn)行建模的方法。RDD 方法分為探索階段和精化階段。ftDD 的設(shè)計(jì)規(guī)范主要包括:類層次圖、合作圖、類規(guī)范、子系統(tǒng)規(guī)范、合同規(guī)范。RDD 是一種用非形式的技術(shù)和指導(dǎo)原則開發(fā)合適的設(shè)計(jì)方案的設(shè)計(jì)技術(shù)。尋找類及其特性的策略主要依賴設(shè)計(jì)者的個(gè)人技巧。RDD 用交互填寫CRC 卡的方法完成設(shè)計(jì),這對(duì)大型系統(tǒng)設(shè)計(jì)不太適用。 RDD 也引入了一些新的概念和技術(shù),
10、例如合同、子系統(tǒng)等,使得開發(fā)過程可以并發(fā) 完成。RDD 采用傳統(tǒng)的方法確定對(duì)象類,有一定的局限性。另外,均勻的把行為分配給 類也是十分困難的。4. GOAD/Coad 一 YoordonOOAD(Object-Oriented Analysis and Design)方法是由 Peter Coad 和 Ed Yourdon 在 1991 年提出的。這是一種逐步進(jìn)階的面向?qū)ο蠼7椒āOA 使用了基本的結(jié)構(gòu)化原則,并把他們同面向?qū)ο蟮挠^點(diǎn)結(jié)合起來。OOA 方法主要包括下面五個(gè)步驟:確定類與對(duì)象、標(biāo)識(shí)結(jié)構(gòu)、定義主題、定義屬性、定義服務(wù)。其結(jié)果是結(jié)構(gòu)化的圖文擋。 模型自頂向下包括五個(gè)層次:主題層(
11、只有主題);類與對(duì)象層(上層中加入類與對(duì)象):結(jié)構(gòu)層(上層中加入結(jié)構(gòu));屬性層(上層中加入屬性);服務(wù)層(上層中加入服務(wù));OOA 沒有特別的支持來刻畫對(duì)象的動(dòng)態(tài)特性。 OOA 完成系統(tǒng)分析。OOD 負(fù)責(zé)系統(tǒng)設(shè)計(jì)。OOD 包括四個(gè)步驟:1)設(shè)計(jì)問題域(細(xì)化分析結(jié)果);2)設(shè)計(jì)人機(jī)交互部分(設(shè)計(jì)用戶界面);3)設(shè)計(jì)任務(wù)管理部分(確定系統(tǒng)資源的分配):4)設(shè)計(jì)數(shù)據(jù)管理部分(確定持久對(duì)象的存儲(chǔ))。OOA 把系統(tǒng)橫向劃分為五個(gè)層次,OOD 把系統(tǒng)縱向劃分為四個(gè)部分,從而形成一個(gè)清晰的系統(tǒng)模型。5.OOSE/JacobsonOOSE(Object-Oriented Software Engineerin
12、g) 是 Jacobson 在 1992 年提出的一種用例 驅(qū)動(dòng)的面向?qū)ο箝_發(fā)方法。每個(gè)用例都是使用系統(tǒng)的一條途徑。用例的一個(gè)執(zhí)行過程可以看作是用例的實(shí)例。系統(tǒng)開發(fā)是一個(gè)復(fù)雜的任務(wù)。通過在不同層次逐步構(gòu)造模型可以控制這種復(fù)雜性。OOSE 開發(fā)過程中有五種模型,這些模型是自然過渡和緊密禍合的。包括:需求模型、分析模型、設(shè)計(jì)模型、實(shí)現(xiàn)模型、測(cè)試模型。DOSE 是一種實(shí)用的面向?qū)ο蟮南到y(tǒng)開發(fā)方法。其中,Booch, Coad/Yourdon, OMT ,和Jacobson的方法在面向?qū)ο筌浖_發(fā)界得 到了廣泛的認(rèn)可。特別值得一提的是統(tǒng)一的建模語言UML (Unified Modeling Langu
13、age),該方法結(jié)合了Booch, OMT ,和 Jacobson 方法的優(yōu)點(diǎn),統(tǒng)一了符號(hào)體系,并從其它的方法和工程實(shí)踐中吸收了許多經(jīng)過實(shí)際檢驗(yàn)的概念和技術(shù)。UML 現(xiàn)在是一個(gè)國(guó)際標(biāo)準(zhǔn),它正在對(duì)象管理小組(Object Management Group)的指導(dǎo)下進(jìn)行修訂和擴(kuò)展。準(zhǔn)確的說,UML是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示。3. 2. 2 UML 及其工具介紹UML 作為用于創(chuàng)建系統(tǒng)的邏輯模型的一般語法,通常隨著在分析和設(shè)計(jì)期間對(duì)各種要點(diǎn)的理解,來描述計(jì)算機(jī)系統(tǒng)。它獨(dú)立于其他任何特定的目標(biāo)語言、軟件工程或工具,但它具有充分的一般性和靈活性,用用戶定義的擴(kuò)展能對(duì)其進(jìn)行裁剪,以適合幾乎所有的語
14、一言、工具或過程需求。對(duì)我們使用者來講,UML 就是一組標(biāo)準(zhǔn)化了的標(biāo)記模型、設(shè)計(jì)的符號(hào)。更具體的說,實(shí)際上就是一些圖。所謂的使用UML 描述設(shè)計(jì),展現(xiàn)的就是一系列相互協(xié)調(diào)的圖。UML 共有五類九種圖,最重要的就是四種圖,也就是UML 語法中最重要的四種模型:1) 用例圖: 用用例捕捉用戶使用系統(tǒng)的方式。以用戶和開發(fā)者能理解的方式,用這樣的用例形成對(duì)計(jì)算機(jī)系統(tǒng)的需求的外在定義。2)類圖:用類圖定義系統(tǒng)的靜態(tài)結(jié)構(gòu)模型。靜態(tài)結(jié)構(gòu)模型識(shí)別對(duì)象、類以及他們之間的關(guān)系。3)交互圖(通常為順序圖):用交互圖捕捉功能需求。把他們用作工具,用以幫助決定怎樣在類(對(duì)象)間分布支持用例所必需的功能。他們也可以作為一
15、種機(jī)制,用一種方式把必需的系統(tǒng)功能映射到對(duì)象上,以產(chǎn)生在功能上的內(nèi)聚的、可維護(hù)的、可復(fù)用的和可擴(kuò)展的類。4)狀態(tài)(動(dòng)態(tài))圖 :用狀態(tài)圖捕獲系統(tǒng)的動(dòng)態(tài)視圖。構(gòu)成模型的狀態(tài)圖表示系統(tǒng)狀態(tài)上的功能性依賴。從以對(duì)象為中心的觀點(diǎn)(而不是以用例為中心的觀點(diǎn))來看,他們也表示系統(tǒng)的功能。 這有助于進(jìn)行詳細(xì)設(shè)計(jì),以確保對(duì)操作的條件限制進(jìn)行正確地編碼、對(duì)封裝動(dòng)態(tài)狀態(tài)的類編碼而言,這也體現(xiàn)了可維護(hù)性、內(nèi)聚和健壯性。忽略了這點(diǎn),整體上就喪失了對(duì)各個(gè)體的功能項(xiàng)的深入理解。比較常用的兩種UML 工具分別是:Rational 公司的Rose, 一種是微軟公司的Vision Rose 一度成為UML 的代名詞,但由于Vis
16、io 和微軟的Office 套件的結(jié)合比較緊密,便于生成文檔報(bào)告,后者更為流行。在“岸邊集裝箱起重機(jī)”訓(xùn)練器的仿真建模中我們應(yīng)用 Visio 作為輔助工具。3. 3 用例建模面向?qū)ο蠓治鲇扇齻€(gè)步驟組成:用例建模:用一個(gè)用例圖(use-case diagram那口相關(guān)的情景形式表示這個(gè)信息。這個(gè)步 驟有時(shí)稱為功能建模,他在很大程度上是面向行為的。類建模 :確定類和他們的屬性以及類之間的相互關(guān)系和交互作用。以類圖的形式表示這個(gè)信息。這個(gè)步驟很大程度上是面向數(shù)據(jù)的。動(dòng)態(tài)建模:確定由每個(gè)類或子類發(fā)出的或?qū)λ麄冞M(jìn)行的行為(動(dòng)作)。 以狀態(tài)圖的形式表示這個(gè)信息。這個(gè)步驟是面向行為的。第一步是收集用戶的需求
17、,用用例描述岸邊集裝箱起重機(jī)的工作情景。根據(jù)我們對(duì)現(xiàn)場(chǎng)的觀察,相關(guān)資料的查閱,以及與用戶的溝通,最終得到系統(tǒng)的用例圖。3.4 面向?qū)ο蟮能浖^程軟件工程過程規(guī)定了在獲取、供應(yīng)、開發(fā)、操作和維護(hù)軟件時(shí),要實(shí)施的過程、活動(dòng)和任務(wù)。 其目的是為各種人員提供一個(gè)公共的框架,以便用相同的語一言進(jìn)行交流。這框架由幾個(gè)重要的過程組成,這些主要過程包含獲取、供應(yīng)、 開發(fā)、 操作和維護(hù)軟件所用的基本的、一致的要求。軟件工程的開發(fā)過程可分為瀑布模型法、原型法、螺旋模型法、噴泉模型法等。噴泉模型是一種以用戶需求為動(dòng)力,以對(duì)象作為驅(qū)動(dòng)的模型,適合于面向?qū)ο蟮拈_發(fā)方法。它克服了瀑布模型不支持軟件重用和多項(xiàng)開發(fā)活動(dòng)集成的
18、局限性。噴泉模型使開發(fā)過程具有迭代性和無間隙性。 迭代意味著模型中的開發(fā)活動(dòng)常常需要多次重復(fù),在迭代過程中,相關(guān)功能不斷的隨之加入演化的系統(tǒng),完善軟件系統(tǒng)。無間隙是指在分析、設(shè)計(jì)、實(shí)現(xiàn)等開發(fā)活動(dòng)之間不存在明顯的界限。也就是說,它不像瀑布模型那樣,需求分析活動(dòng)結(jié)束后刁 開始設(shè)計(jì)活動(dòng),設(shè)計(jì)活動(dòng)結(jié)束后刁開始編碼活動(dòng),而是允許各開發(fā)活動(dòng)交叉、 迭代地進(jìn)行。 這也體現(xiàn)了面向?qū)ο箝_發(fā)技術(shù)在縮短開發(fā)時(shí)間、降低開發(fā)費(fèi)用方面的優(yōu)越性。如圖1-3描述了面向?qū)ο蟮拈_發(fā)過程。圖1-3噴泉模型圖I-4則更為詳細(xì)的描述了面向?qū)ο筌浖^程(OOSP)的生命周期,它由一系列過程模式組成。編護(hù)和史哥,圖1-4面向?qū)ο缶图^程的
19、生命周期1. 4面向?qū)ο蠹夹g(shù)在仿真領(lǐng)域的研究現(xiàn)狀與發(fā)展進(jìn)入 90 年代以來,面向?qū)ο蠓抡婕夹g(shù)的研究和開發(fā)有了驚人的進(jìn)步,目前在許多領(lǐng)域開發(fā)的仿真建模語一言和環(huán)境大部分支持OOS (Object Oriented Simulation) 。在通信系統(tǒng)、計(jì)算機(jī)系統(tǒng)、電力系統(tǒng)、軍事系統(tǒng)、環(huán)境和生態(tài)系統(tǒng)等領(lǐng)域已經(jīng)開發(fā)出不少面向?qū)ο蠓抡姝h(huán)境, 例如 :多媒體圖形仿真,建立大規(guī)模多用戶3D 應(yīng)用的分布式交互仿真環(huán)境等。現(xiàn)在許多面向?qū)ο笳Z言都支持仿真類庫的開發(fā),有時(shí), 也可以使用一些特殊的面向?qū)ο蠓抡嬲Z一言和仿真環(huán)境,這些仿真語啟 和環(huán)境還提供了對(duì)數(shù)據(jù)庫及其它軟件和硬件設(shè)備的集成和通信工具。 美國(guó) Carn
20、egie Mellon 大學(xué)首先開始研究基于知識(shí)的仿真系統(tǒng)(KBS), 相繼推出了仿真建模專家系統(tǒng)(ESS),自動(dòng)生成仿真模型的專家系統(tǒng)(MGES)等。近十幾年來,我國(guó)的面向?qū)ο蠓抡嫜芯俊㈤_發(fā)和應(yīng)用也有很大的進(jìn)展,支撐OOS 的工具己不少實(shí)現(xiàn)商品化了。例如:(1)網(wǎng)絡(luò)仿真技術(shù)被用在基于共享的仿真環(huán)境,如虛擬工廠教學(xué)系統(tǒng);(2)面向?qū)ο蠓抡嬖谔幚韽?fù)雜系統(tǒng)模型時(shí),是一個(gè)極好的工具。將這類模型分成幾個(gè)子模型,做到仿真程序結(jié)構(gòu)與真實(shí)系統(tǒng)結(jié)構(gòu)相似。如解決互相聯(lián)系的異步電動(dòng)機(jī)組的仿真控制問題等。同時(shí),在科技、生產(chǎn)、社會(huì)各方面面向?qū)ο蠓抡婕夹g(shù)的應(yīng)用,使仿真技術(shù)的應(yīng)用能力拓展,滲透性增加,無處不在,無孔不入。
21、第三章面向?qū)ο蠓抡娼C嫦驅(qū)ο蟮姆抡?Object-Oriented Simulation) 在理論上突破了傳統(tǒng)仿真方法的觀念,它根據(jù)組成系統(tǒng)的對(duì)象及其相互作用關(guān)系來構(gòu)造仿真模型,模型的對(duì)象通常表示實(shí)際系統(tǒng)中相應(yīng)的實(shí)體, 從而彌補(bǔ)了模型和實(shí)際系統(tǒng)之間的差距。面向?qū)ο蟮姆抡婢哂袃?nèi)在的可擴(kuò)充性和可重用性。 因而為仿真大規(guī)模的復(fù)雜系統(tǒng)提供了極為方便的手段。仿真建模的主要任務(wù)是構(gòu)造能夠反映系統(tǒng)的結(jié)構(gòu)和行為的模型,構(gòu)造仿真模型的一種自然的方式是使模型的結(jié)構(gòu)盡可能與實(shí)際系統(tǒng)的結(jié)構(gòu)一致,因而要求構(gòu)造模型的基本模塊與實(shí)際系統(tǒng)的組成部分相對(duì)應(yīng),面向?qū)ο蟮姆抡嫣峁┝藢?shí)現(xiàn)這種建模方法的途徑。3. 1 面向?qū)ο蟮幕?/p>
22、概念面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、消息傳遞、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。這種方法是計(jì)算機(jī)的求解更接近人的思維方式。它使得軟件開發(fā)的設(shè)計(jì)階段更加緊密的與實(shí)現(xiàn)階段相聯(lián)系。3.1.1 對(duì)象對(duì)象是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物,他可以是有形的,也可以是無形的。對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它具有自己的靜態(tài)特征和動(dòng)態(tài)特征。靜態(tài)特征即可以用某種數(shù)據(jù)來描述的特性,動(dòng)態(tài)特性即對(duì)象所表現(xiàn)的行為或?qū)ο笏哂械墓δ堋R粋€(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成。屬性是用來描述對(duì)象靜態(tài)特性的一個(gè)數(shù)據(jù)項(xiàng)。服務(wù)是用來描述對(duì)象動(dòng)態(tài)特性的一個(gè)操作序列。一個(gè)對(duì)象可以有多項(xiàng)屬性和多項(xiàng)服務(wù)。一個(gè)
23、對(duì)象的屬性和服務(wù)被封裝成一個(gè)整體,對(duì)象的屬性值只能由這個(gè)對(duì)象的服務(wù)存取。3. 1 .2 類類是具有相同屬性和服務(wù)的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分。在面向?qū)ο缶幊陶Z一言中,類是一個(gè)獨(dú)立的程序單元,它應(yīng)該有一個(gè)類名并包括屬性說明和服務(wù)說明兩個(gè)主要部分。類的作用是定義對(duì)象。類與對(duì)象的關(guān)系如同一個(gè)模具與用這個(gè)模具鑄造出來的鑄件之間的關(guān)系。類給出了屬于該類的全部對(duì)象的抽象定義,而對(duì)象則是符合這種定義的一個(gè)實(shí)體。所以一個(gè)對(duì)象是一個(gè)類的實(shí)例。事物既具有共同性,也有特殊性。運(yùn)用抽象的原則舍棄對(duì)象的特殊性,抽取其共同性,則得到一個(gè)適應(yīng)一批對(duì)象的類。同
24、時(shí), 我們也可以這樣來理解類與對(duì)象的概念。現(xiàn)實(shí)世界中的事物可分為兩大類,即物質(zhì)和意識(shí)。物質(zhì)表達(dá)的是具體的事物;意識(shí)描述的是某一抽象的概念。例如 “自行車”和 “這輛白色的自行車”, “這輛白色的自行車”是物質(zhì),它是具體的客觀存在;“自行車”是意識(shí),它是一個(gè)抽象的概念,是對(duì)客觀存在的事物的一種概括。這些現(xiàn)實(shí)世界中的事物可直接映射到面向?qū)ο笾械摹皩?duì)象”,現(xiàn)實(shí)世界中的意識(shí)可對(duì)應(yīng)面向?qū)ο笙到y(tǒng)中的抽象概念一一“類”。“自行車”在面向?qū)ο笙到y(tǒng)中可用自行車類來表示, “一輛白色的自行車”在面向?qū)ο笙到y(tǒng)中則是一個(gè)具體的對(duì)象,是自行車類的一個(gè)實(shí)例。3. 1. 3 封裝、信息隱藏封裝是面向?qū)ο蠓椒ǖ囊粋€(gè)重要原則。
25、它有兩個(gè)含義: 第一,把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象 );第二個(gè)涵義也稱作“信息隱藏”,即盡可能隱藏對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界(或者說形成一道屏障),只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。這主要是指對(duì)象的外部不能直接的存取對(duì)象的屬性,只能通過幾個(gè)允許外部使用的服務(wù)與對(duì)象發(fā)生聯(lián)系。確切的說,封裝就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。3. 1. 4 消息消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求。當(dāng)一個(gè)對(duì)象給另一個(gè)對(duì)象發(fā)送消息時(shí),發(fā)送者請(qǐng)求消息接受者執(zhí)行指定的操作,并(有可能 )返回信息。當(dāng)接受者接收消息時(shí),它以它所知道的方
26、式執(zhí)行被請(qǐng)求的操作。這樣的請(qǐng)求不規(guī)定如何執(zhí)行一個(gè)操作。來自發(fā)送者的這種信息總是被隱藏的。3. 1. 5 繼承、泛化繼承是面向?qū)ο蟮囊粋€(gè)重要特色,是代碼重用的重要方法。繼承關(guān)系是子對(duì)象可以完全或部分的復(fù)用父對(duì)象的屬性和操作。子對(duì)象可以用自己的操作替代父對(duì)象的操作。繼承可能會(huì)帶來另一個(gè)問題一一多態(tài),這在下面闡述。泛化是較通用的類和較具體的類之間的一種關(guān)系,子類是超類的一個(gè)種類,子類的一個(gè)對(duì)象可以在超類被允許的任何地方時(shí)用。泛化是“is a”關(guān)系。泛化使得重新陳述已經(jīng)定義的特性變得不必要了,為超類定義的屬性和操作可以在子類中重用,子類被成為繼承了他的父類的屬性和方法。聚合和組合如同世間萬物存在著千絲
27、萬縷的聯(lián)系,作為現(xiàn)實(shí)世界的反映,對(duì)象相互之間也存在著相互關(guān)聯(lián)的關(guān)系。聚合是關(guān)聯(lián)的“一部分”關(guān)系 (即“ is part of" ) 。表示超集類和子集類之間的全體與部分關(guān)系。一個(gè)超集類包含一個(gè)自己類(或一組類)。這個(gè)包含特性可以是強(qiáng)的(值聚合)或弱的(引用聚合),在UML 中,值聚合成為組合,而引用聚合成為聚合。從系統(tǒng)建模的觀點(diǎn)看,聚合是一種特殊的并含有其他語義的關(guān)聯(lián)。特別地,聚合是傳遞的和反對(duì)稱的。組合有另外一個(gè)存在依賴特性,一個(gè)子集類的對(duì)象不能在沒有被連接到其他超類對(duì)象的情況下存在,這就意味著如果一個(gè)超集對(duì)象被刪除,則他的自己對(duì)象也必須被刪除。多態(tài)多態(tài) : 不同的對(duì)象可以以不同的
28、方式響應(yīng)同一消息,是對(duì)象間可以交互而不需要知道他們的確切類型。表現(xiàn)在程序?qū)崿F(xiàn)上,就是不同的對(duì)象可以調(diào)用相同名稱的函數(shù),并可導(dǎo)致完全不同的行為的現(xiàn)象,稱之為多態(tài)。這大大提高了我們解決復(fù)雜問題的能力。在代碼實(shí)現(xiàn)時(shí),它常用虛函數(shù)來實(shí)現(xiàn)。繼承帶來多態(tài),綁定操作的工作必須延遲到運(yùn)行是進(jìn)行,這就是動(dòng)態(tài)綁定。多態(tài)是通過動(dòng)態(tài)綁定實(shí)現(xiàn)的。3. 4 類建模在這個(gè)步驟,提取類和他們的屬性。確定類的一個(gè)方法是從用例推斷他們,即仔細(xì)研究全部情景,不管是正常的還是異常的,并確定在用例中發(fā)揮的作用。它屬于系統(tǒng)的靜態(tài)特征。我們?cè)谡业搅祟愔螅_定其屬性、操作,以及類之間的關(guān)系。在面向?qū)ο蠼V校@是非常重要、非常關(guān)鍵的一步
29、。類的提取,類之間關(guān)系的確定,將直接影響后面代碼的實(shí)現(xiàn)。3. 4. 1 類提取識(shí)別對(duì)象是任何面向?qū)ο蠓椒ㄖ凶钪匾彩亲罾щy的一步。通過同問題域?qū)<业慕换ナ綄?duì)話在問題域中識(shí)別所有的“潛在對(duì)象”。在尋找對(duì)象的嘗試中,正確的運(yùn)用抽象原則,舍棄那些與系統(tǒng)責(zé)任無關(guān)的事務(wù),同時(shí),對(duì)于與系統(tǒng)責(zé)任有關(guān)的事務(wù),并不是把他們的任何特征都在相應(yīng)的對(duì)象中表達(dá)出來。發(fā)現(xiàn)對(duì)象以后,經(jīng)過分析,我們提取出有用的屬性,以及相關(guān)的方法,將其封裝在一個(gè)類中。在類提取時(shí),我們要按照一定的原則,選取合適的粒度和層次。根據(jù)類描述的抽象層次的不同,它們的粒度是不同的。簡(jiǎn)而言之,避免大類長(zhǎng)方法,也就是說要避免包含許多方法、許多屬性的大類。最
30、重要的是要有一個(gè)良好的類層次結(jié)構(gòu)。3. 4. 2 聚合圖。 -4 中,菱形實(shí)心箭頭個(gè)表示的是類之間的聚合關(guān)系。箭頭指向整體類,另-端則是部分類。聚合關(guān)系也稱為整體一部分關(guān)系,組裝一部分關(guān)系。識(shí)別聚合關(guān)系的常用方法是尋找“由 , 構(gòu)成” , “包含” , “是 , 的一部分”等詞句。聚合減少了復(fù)雜性。我們可以看出,在岸邊集裝箱起重機(jī)系統(tǒng)中存在的聚合關(guān)系有:1 . 訓(xùn)練系統(tǒng)由裝卸設(shè)備和裝卸設(shè)備組成;2 .岸邊集裝箱起重機(jī)是由大車、小車、吊具、大梁俯仰、指示燈組成的:3 .大車運(yùn)行機(jī)構(gòu)和夾軌器是大車的一部分;4 .吊具是由旋鎖、導(dǎo)板、鋼絲繩組成的。3. 4. 3 繼承一個(gè)類是可以獨(dú)立的,也可以位于一
31、個(gè)繼承層次,繼承層次由一些具有父子關(guān)系的類組成。繼承是一種非常方便高效的機(jī)制,通過創(chuàng)建子類,對(duì)父類進(jìn)行特化或擴(kuò)展。圖中,空心三角形箭頭則表示泛化/特化關(guān)系,即繼承關(guān)系,繼承允許類之間共享同一代碼。在圖 3-4 中, 泛化被畫成連接到父類傷得連線端點(diǎn)上的一個(gè)空心三角形。也就是說,帶空心三角形的箭傘示繼承關(guān)系。箭頭指向父類,另一端指向子類。子類繼承了父類的屬性和操作。值得注意的是,繼承作用到類上而不是對(duì)象上,而且它作用到類型上而不是值上。在“岸邊集裝箱起重機(jī)”系統(tǒng)中的泛化特化 :1 . 裝卸設(shè)備父類有岸邊集裝箱起重機(jī)類和龍門起重機(jī)類兩個(gè)子類;裝卸工具類的子類一龍門起重機(jī)類,在此處設(shè)置該子類,是為了
32、今后開發(fā)“龍門起重機(jī)仿真訓(xùn)練器”留下接口,在以后的開發(fā)中,利用代碼重用,可以大大降低開發(fā)成本,縮短開發(fā)時(shí)間,充分體現(xiàn)面向?qū)ο笱芯糠椒ǖ膬?yōu)越性。2 .船舶類、集卡類、集裝箱類繼承了裝卸工具類中承載能力屬性、位置屬性等,在子類中不需要再對(duì)這些屬性進(jìn)行定義;3 .集裝箱類根據(jù)編號(hào)方法不同又有板上集裝箱類,板下集裝箱類,以及一種特殊的艙蓋板類 ;4 .指示燈父類有著箱燈類,開鎖燈類,閉鎖燈類三個(gè)子類。著箱燈類、開鎖燈類、閉鎖燈類中無需再對(duì)狀態(tài)屬性進(jìn)行定義,因?yàn)樗麄兝^承自指示燈類,在指示燈類中已經(jīng)做了定義。3. 4. 4 封裝和數(shù)據(jù)隱藏面向?qū)ο缶幊讨心K的基本單元是類,通過類這種機(jī)制,我們將數(shù)據(jù)和處理這些數(shù)據(jù)的過程封裝為一個(gè)有機(jī)的整體一一類。在類圖中,每個(gè)類單元中間為他們的屬性,第三欄為他們的處理屬性及操作。如大梁俯仰類,我們將其運(yùn)動(dòng)速度屬性、俯仰角度屬性以及拉起大梁操作、放下大量操作封裝在一個(gè)單元中,封裝在其中的屬性是隱藏的,并對(duì)不隱藏的封裝成員函數(shù)提供支持。前面的"#"表示 protected, 表示 private, " + "表示 publico public 即對(duì)用戶是可見的。private對(duì)用戶是不可見的。接口暴露給用戶,而實(shí)現(xiàn)對(duì)用戶隱藏。面向?qū)ο笳Z言中的類是支持信息隱藏的模塊。C+語言使用關(guān)鍵字public和private來對(duì)類的屬性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全國(guó)川教版信息技術(shù)七年級(jí)下冊(cè)第6課《文件查找》教學(xué)設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)發(fā)言稿20字(18篇)
- 小學(xué)教師工作業(yè)務(wù)培訓(xùn)計(jì)劃范文(4篇)
- 愛國(guó)主題詩歌朗誦(8篇)
- 《高效學(xué)習(xí)方法探索》課件
- 社會(huì)實(shí)踐招生心得體會(huì)范文(18篇)
- 《全球知名品牌》課件
- 大一學(xué)習(xí)心得體會(huì)范文(7篇)
- 畢業(yè)鑒定表的自我鑒定(20篇)
- 小學(xué)政治 (道德與法治)人教部編版四年級(jí)下冊(cè)第一單元 同伴與交往2 說話要算數(shù)教案
- 總包單位與分包單位臨時(shí)用電管理協(xié)議書
- 2025屆浙江省溫州市高三二模數(shù)學(xué)試題及答案
- 2025年浙江國(guó)企湖州新倫供電服務(wù)有限公司招聘筆試參考題庫含答案解析
- 四川成都農(nóng)業(yè)科技中心招聘考試真題2024
- 淄博藝術(shù)中考試題及答案
- 2025北京豐臺(tái)高三一模化學(xué)試題及答案
- 云南省氣象局歷年招聘考試真題庫
- 江蘇省南通市、宿遷、連云港、泰州、揚(yáng)州、徐州、淮安蘇北七市2025屆高三第二次調(diào)研英語英語參考答案及聽力材料、評(píng)分標(biāo)準(zhǔn)
- 2025廣東醫(yī)科大學(xué)輔導(dǎo)員考試題庫
- 石油天然氣(海洋石油)工程AI智能應(yīng)用行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2024年7月國(guó)家開放大學(xué)專本科《法律文書》期末紙質(zhì)考試試題及答案
評(píng)論
0/150
提交評(píng)論