第7章_面向?qū)ο笤O(shè)計(jì)_第1頁
第7章_面向?qū)ο笤O(shè)計(jì)_第2頁
第7章_面向?qū)ο笤O(shè)計(jì)_第3頁
第7章_面向?qū)ο笤O(shè)計(jì)_第4頁
第7章_面向?qū)ο笤O(shè)計(jì)_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第7章章 面向?qū)ο笤O(shè)計(jì)面向?qū)ο笤O(shè)計(jì)Object-Oriented Design (OOD)軟件設(shè)計(jì)概述軟件設(shè)計(jì)概述面向?qū)ο笤O(shè)計(jì)建模面向?qū)ο笤O(shè)計(jì)建模系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)對(duì)象設(shè)計(jì)對(duì)象設(shè)計(jì)面向?qū)ο笤O(shè)計(jì)示例面向?qū)ο笤O(shè)計(jì)示例7.1 軟件設(shè)計(jì)概述軟件設(shè)計(jì)概述 (Overview of Software Design )7.1.1 軟件設(shè)計(jì)的概念軟件設(shè)計(jì)的概念1. 模塊與構(gòu)件模塊與構(gòu)件(Module and Component)模塊模塊(Module)是一個(gè)擁有明確定義的輸入、是一個(gè)擁有明確定義的輸入、輸出和特性的程序?qū)嶓w輸出和特性的程序?qū)嶓w。它可以單獨(dú)命名且。它可以單獨(dú)命名且可通過名字來訪問。如高級(jí)語言中的

2、函數(shù)、可通過名字來訪問。如高級(jí)語言中的函數(shù)、過程、子程序、類等。過程、子程序、類等。軟件構(gòu)件軟件構(gòu)件( Software Component )是可重復(fù)是可重復(fù)使用的軟件組件使用的軟件組件。 軟件構(gòu)件可以是子系統(tǒng),也可以是模塊。軟件構(gòu)件可以是子系統(tǒng),也可以是模塊。2. 抽象與細(xì)化抽象與細(xì)化 ( Abstraction and Refinement )抽象抽象(Abstraction)是控制復(fù)雜性的基本策略是控制復(fù)雜性的基本策略之一。之一。在軟件工程中,從系統(tǒng)定義到實(shí)現(xiàn),每進(jìn)展在軟件工程中,從系統(tǒng)定義到實(shí)現(xiàn),每進(jìn)展一步都可以看做是對(duì)軟件解決方法的抽象化過一步都可以看做是對(duì)軟件解決方法的抽象化過程

3、的一次細(xì)化。在軟件需求分析階段,在最高程的一次細(xì)化。在軟件需求分析階段,在最高抽象級(jí)別上,用抽象級(jí)別上,用“做什么做什么”來描述問題。然后來描述問題。然后不斷具體化;從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)的過程中,不斷具體化;從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)的過程中,抽象化的層次逐次降低,當(dāng)產(chǎn)生源程序時(shí)到達(dá)抽象化的層次逐次降低,當(dāng)產(chǎn)生源程序時(shí)到達(dá)最低抽象層次。最低抽象層次。細(xì)化細(xì)化( Refinement )是與抽象相反而又是與抽象相反而又互補(bǔ)的一個(gè)概念。細(xì)化的實(shí)質(zhì)就是分互補(bǔ)的一個(gè)概念。細(xì)化的實(shí)質(zhì)就是分解,解,“自頂向下、逐步細(xì)化自頂向下、逐步細(xì)化”是結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本原理之一。化程序設(shè)計(jì)的基本原理之一。3. 信息

4、隱藏信息隱藏 ( Information Hiding )模塊內(nèi)部的數(shù)據(jù)和過程,應(yīng)該對(duì)不需要了解模塊內(nèi)部的數(shù)據(jù)和過程,應(yīng)該對(duì)不需要了解這些數(shù)據(jù)和過程的模塊隱藏起來這些數(shù)據(jù)和過程的模塊隱藏起來。信息隱蔽是為了提高模塊的獨(dú)立性。在將來信息隱蔽是為了提高模塊的獨(dú)立性。在將來修改軟件時(shí),偶然引入錯(cuò)誤所造成的影響就可修改軟件時(shí),偶然引入錯(cuò)誤所造成的影響就可以局限在一個(gè)或幾個(gè)模塊內(nèi)部,不致于波及到以局限在一個(gè)或幾個(gè)模塊內(nèi)部,不致于波及到軟件的其它部分。軟件的其它部分。4. 軟件復(fù)用軟件復(fù)用( Software Reuse )開發(fā)人員能充分利用已有的現(xiàn)成構(gòu)件,不開發(fā)人員能充分利用已有的現(xiàn)成構(gòu)件,不必一切都從

5、頭做起。必一切都從頭做起。7.1.2 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù) 把分析階段產(chǎn)生的分析模型轉(zhuǎn)換為用適當(dāng)手段把分析階段產(chǎn)生的分析模型轉(zhuǎn)換為用適當(dāng)手段表示的軟件設(shè)計(jì)模型。表示的軟件設(shè)計(jì)模型。 軟件設(shè)計(jì)一般都包括軟件設(shè)計(jì)一般都包括數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)和過程設(shè)計(jì)計(jì)、接口設(shè)計(jì)和過程設(shè)計(jì)等。等。 軟件設(shè)計(jì)分兩個(gè)階段完成軟件設(shè)計(jì)分兩個(gè)階段完成: (1)概要設(shè)計(jì)概要設(shè)計(jì):進(jìn)行結(jié)構(gòu)設(shè)計(jì)和接口設(shè)計(jì)進(jìn)行結(jié)構(gòu)設(shè)計(jì)和接口設(shè)計(jì),并編寫,并編寫概要設(shè)計(jì)文檔。概要設(shè)計(jì)文檔。 (2)詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì):確定確定各個(gè)軟件部件的操作各個(gè)軟件部件的操作(算法算法)和和數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu),編寫詳細(xì)設(shè)計(jì)文檔

6、。,編寫詳細(xì)設(shè)計(jì)文檔。7n數(shù)據(jù)設(shè)計(jì)的主要任務(wù)是:數(shù)據(jù)設(shè)計(jì)的主要任務(wù)是: 分析階段創(chuàng)建的信息模型分析階段創(chuàng)建的信息模型實(shí)現(xiàn)軟件所需要實(shí)現(xiàn)軟件所需要的數(shù)據(jù)結(jié)構(gòu)。的數(shù)據(jù)結(jié)構(gòu)。n體系結(jié)構(gòu)設(shè)計(jì)的主要任務(wù)是:體系結(jié)構(gòu)設(shè)計(jì)的主要任務(wù)是: 定義軟件主要組成部件之間的關(guān)系。定義軟件主要組成部件之間的關(guān)系。n接口設(shè)計(jì)的主要任務(wù)是:接口設(shè)計(jì)的主要任務(wù)是: 描述軟件內(nèi)部、軟件和接口系統(tǒng)之間以及軟描述軟件內(nèi)部、軟件和接口系統(tǒng)之間以及軟件與人之間的通信方式(包括數(shù)據(jù)流和控制件與人之間的通信方式(包括數(shù)據(jù)流和控制流)。流)。n過程設(shè)計(jì)的主要任務(wù)是:過程設(shè)計(jì)的主要任務(wù)是: 將軟件體系結(jié)構(gòu)的組成部件將軟件體系結(jié)構(gòu)的組成部件對(duì)軟

7、件的過程對(duì)軟件的過程性描述。性描述。7.1.3 模塊化設(shè)計(jì)模塊化設(shè)計(jì) ( Modular Design ) 模塊化設(shè)計(jì)是按照規(guī)定的原則把大型模塊化設(shè)計(jì)是按照規(guī)定的原則把大型軟件劃分為一個(gè)個(gè)較小的、相對(duì)獨(dú)立但軟件劃分為一個(gè)個(gè)較小的、相對(duì)獨(dú)立但又相互關(guān)聯(lián)的模塊又相互關(guān)聯(lián)的模塊。 We say that a system is modular when each activity of the system is performed by exactly one component , and when the inputs and outputs of each component are wel

8、l-defined .(我們稱一個(gè)系統(tǒng)是模塊化的,是指系(我們稱一個(gè)系統(tǒng)是模塊化的,是指系統(tǒng)中的每個(gè)活動(dòng)可以被并且僅被一個(gè)模統(tǒng)中的每個(gè)活動(dòng)可以被并且僅被一個(gè)模塊或構(gòu)件正確地執(zhí)行,并且已經(jīng)對(duì)構(gòu)件塊或構(gòu)件正確地執(zhí)行,并且已經(jīng)對(duì)構(gòu)件的輸入和輸出進(jìn)行了良好的定義。)的輸入和輸出進(jìn)行了良好的定義。)1. 分解(分解(Decomposition) 模塊化模塊化 把一個(gè)復(fù)雜的問題分解為幾個(gè)較小的問題,把一個(gè)復(fù)雜的問題分解為幾個(gè)較小的問題,能夠減少解題所需要的工作量。用數(shù)學(xué)式表示能夠減少解題所需要的工作量。用數(shù)學(xué)式表示為:為: C(P1+P2) C(P1) + C(P2) E(P1+P2) E(P1) + E

9、(P2)其中其中, C為問題的復(fù)雜度,為問題的復(fù)雜度,E為解題所需要的工為解題所需要的工作量。作量。 模塊劃分越多,雖然塊內(nèi)的工作量減少了,模塊劃分越多,雖然塊內(nèi)的工作量減少了,但模塊之間接口的工作量增加了。因此,存在但模塊之間接口的工作量增加了。因此,存在一個(gè)最小成本區(qū),把模塊數(shù)控制在這一范圍,一個(gè)最小成本區(qū),把模塊數(shù)控制在這一范圍,可以使總的工作量保持最小(見圖可以使總的工作量保持最?。ㄒ妶D4.1)。 圖圖7.1 模塊數(shù)與開發(fā)工作量的關(guān)系模塊數(shù)與開發(fā)工作量的關(guān)系n模塊獨(dú)立性模塊獨(dú)立性指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,而和系統(tǒng)中其它模塊的聯(lián)系最少且接的子功

10、能,而和系統(tǒng)中其它模塊的聯(lián)系最少且接口簡(jiǎn)單??诤?jiǎn)單。n模塊獨(dú)立性從兩個(gè)方面來度量,即模塊本身的模塊獨(dú)立性從兩個(gè)方面來度量,即模塊本身的內(nèi)聚性和模塊之間的耦合性內(nèi)聚性和模塊之間的耦合性。n內(nèi)聚性內(nèi)聚性(Cohesion): 模塊內(nèi)部各個(gè)成分之間的聯(lián)模塊內(nèi)部各個(gè)成分之間的聯(lián)系,也稱塊內(nèi)聯(lián)系系,也稱塊內(nèi)聯(lián)系。n耦合性耦合性(Coupling): 一個(gè)模塊與其他模塊之間的一個(gè)模塊與其他模塊之間的聯(lián)系聯(lián)系 , 也稱塊間聯(lián)系也稱塊間聯(lián)系。n模塊獨(dú)立性越高,則塊內(nèi)聯(lián)系越強(qiáng)(高內(nèi)聚),模塊獨(dú)立性越高,則塊內(nèi)聯(lián)系越強(qiáng)(高內(nèi)聚),塊間聯(lián)系越弱(低耦合)。塊間聯(lián)系越弱(低耦合)。 2. 模塊獨(dú)立性(模塊獨(dú)立性(Mo

11、dule Independence)(1) 內(nèi)聚性(內(nèi)聚性(Cohesion) 一個(gè)模塊內(nèi)部各成分在功能上相互關(guān)聯(lián)一個(gè)模塊內(nèi)部各成分在功能上相互關(guān)聯(lián)的強(qiáng)度。的強(qiáng)度。偶然偶然 邏輯邏輯 時(shí)間時(shí)間 過程過程 通信通信 順序順序 功能功能內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚內(nèi)聚性內(nèi)聚性模塊獨(dú)立性模塊獨(dú)立性高高高高低低低低(1)偶然內(nèi)聚偶然內(nèi)聚(Coincidental Cohesion): 塊內(nèi)各組成成分在功能上是互不相關(guān)的。塊內(nèi)各組成成分在功能上是互不相關(guān)的。 比如比如, 當(dāng)幾個(gè)模塊內(nèi)正好有一段代碼是相同時(shí)當(dāng)幾個(gè)模塊內(nèi)正好有一段代碼是相同時(shí),將它們將它們抽取出來形成

12、單獨(dú)的模塊抽取出來形成單獨(dú)的模塊, 即為偶然內(nèi)聚模塊。這種模即為偶然內(nèi)聚模塊。這種模塊沒有獨(dú)立功能,各部分之間沒有聯(lián)系,或聯(lián)系很松散。塊沒有獨(dú)立功能,各部分之間沒有聯(lián)系,或聯(lián)系很松散。(2)邏輯內(nèi)聚邏輯內(nèi)聚(Logical Cohesion): 模塊內(nèi)由若干個(gè)邏輯功能相似的成分組成模塊內(nèi)由若干個(gè)邏輯功能相似的成分組成。 這種模塊把幾種相關(guān)的功能組合在一起,每這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。該模塊應(yīng)執(zhí)行哪一種功能。計(jì)算最高分計(jì)算最高分計(jì)算平均分計(jì)算平均分平均平均/ /最高最高調(diào)用模塊調(diào)用

13、模塊被調(diào)用被調(diào)用模塊模塊(3)時(shí)間內(nèi)聚時(shí)間內(nèi)聚( Temporal Cohesion ): 模塊內(nèi)所包含的成分,通常要求必須模塊內(nèi)所包含的成分,通常要求必須在相同的時(shí)間段內(nèi)執(zhí)行。在相同的時(shí)間段內(nèi)執(zhí)行。 例如,初始化一組變量、同時(shí)打開若例如,初始化一組變量、同時(shí)打開若干文件、同時(shí)關(guān)閉若干文件等等,都與干文件、同時(shí)關(guān)閉若干文件等等,都與特定時(shí)間有關(guān)系特定時(shí)間有關(guān)系。(4)過程內(nèi)聚過程內(nèi)聚( Procedural Cohesion )使模塊內(nèi)所包含的一組任務(wù)必須以某種使模塊內(nèi)所包含的一組任務(wù)必須以某種特定的次序執(zhí)行。特定的次序執(zhí)行。讀入讀入成績(jī)單成績(jī)單讀入并讀入并審查成績(jī)單審查成績(jī)單審查審查成績(jī)單成

14、績(jī)單統(tǒng)計(jì)統(tǒng)計(jì)成績(jī)成績(jī)打印打印成績(jī)成績(jī)統(tǒng)計(jì)并統(tǒng)計(jì)并打印成績(jī)單打印成績(jī)單(5)通信內(nèi)聚通信內(nèi)聚(Communicational Cohesion): 模塊內(nèi)部的各個(gè)成分都使用相同的輸入數(shù)模塊內(nèi)部的各個(gè)成分都使用相同的輸入數(shù)據(jù),或產(chǎn)生相同的輸出數(shù)據(jù),它們靠公用數(shù)據(jù),或產(chǎn)生相同的輸出數(shù)據(jù),它們靠公用數(shù)據(jù)聯(lián)系在一起,故稱為通信內(nèi)聚模塊據(jù)聯(lián)系在一起,故稱為通信內(nèi)聚模塊打印打印檢驗(yàn)結(jié)檢驗(yàn)結(jié)果果讀文件讀文件文件文件計(jì)算計(jì)算A計(jì)算計(jì)算B合并合并修改修改文件文件新文件新文件A結(jié)果結(jié)果B結(jié)果結(jié)果加工記錄加工記錄(6)順序內(nèi)聚順序內(nèi)聚(Sequential Cohesion): 模塊中個(gè)組成成分是順序執(zhí)行的,模塊中個(gè)

15、組成成分是順序執(zhí)行的,通常情況下上一個(gè)組成成分的輸出就是通常情況下上一個(gè)組成成分的輸出就是下一個(gè)組成成分的輸入。下一個(gè)組成成分的輸入。建立方程組系數(shù)矩陣建立方程組系數(shù)矩陣高斯消去法高斯消去法回代回代順序性順序性模塊模塊(7)功能內(nèi)聚功能內(nèi)聚(Functional Cohesion): 模塊內(nèi)所有組成成分結(jié)合在一起完成一個(gè)單模塊內(nèi)所有組成成分結(jié)合在一起完成一個(gè)單一的功能一的功能(模塊所有成分共同完成一個(gè)功能,模塊所有成分共同完成一個(gè)功能,缺一不可缺一不可)。例如為完成。例如為完成“對(duì)一個(gè)數(shù)開平方對(duì)一個(gè)數(shù)開平方”、“求一組數(shù)中的最大值求一組數(shù)中的最大值”、“從鍵盤上讀入從鍵盤上讀入一行數(shù)據(jù)一行數(shù)據(jù)

16、”等功能所構(gòu)成模塊均屬于功能性等功能所構(gòu)成模塊均屬于功能性模塊。模塊。這種模塊的內(nèi)聚性最強(qiáng),具有與其它模塊聯(lián)這種模塊的內(nèi)聚性最強(qiáng),具有與其它模塊聯(lián)系少等優(yōu)點(diǎn)。系少等優(yōu)點(diǎn)?!耙粋€(gè)模塊一個(gè)功能一個(gè)模塊一個(gè)功能”,即追求高內(nèi)聚性是,即追求高內(nèi)聚性是進(jìn)行模塊化設(shè)計(jì)的基本準(zhǔn)則。進(jìn)行模塊化設(shè)計(jì)的基本準(zhǔn)則。212. 耦合性耦合性 ( Coupling ) 模塊之間相對(duì)獨(dú)立(相互依賴)的程模塊之間相對(duì)獨(dú)立(相互依賴)的程度度。模塊的獨(dú)立性越高,則模塊的耦合模塊的獨(dú)立性越高,則模塊的耦合性就越低。性就越低。 模塊耦合強(qiáng)度所依賴的因素主要包括:模塊耦合強(qiáng)度所依賴的因素主要包括:一模塊對(duì)另一模塊的引用;一模塊向一模

17、塊對(duì)另一模塊的引用;一模塊向另一模塊傳遞的數(shù)據(jù)量;一模塊施加另一模塊傳遞的數(shù)據(jù)量;一模塊施加到另一模塊的控制的數(shù)量;模塊間接到另一模塊的控制的數(shù)量;模塊間接口的復(fù)雜程度。口的復(fù)雜程度。 模塊之間的耦合性可劃分為如下七類:模塊之間的耦合性可劃分為如下七類: 非直接非直接數(shù)據(jù)數(shù)據(jù) 特征特征 控制控制 外部外部 公共公共 內(nèi)容內(nèi)容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合耦合性耦合性模塊獨(dú)立性模塊獨(dú)立性低低高高低低高高(1)非直接耦合(非直接耦合( No-direct Coupling): 兩個(gè)模塊之間沒有直接的信息傳遞,它們兩個(gè)模塊之間沒有直接的信息傳遞,它們之間的聯(lián)系

18、完全是通過上層模塊的控制和調(diào)用之間的聯(lián)系完全是通過上層模塊的控制和調(diào)用來實(shí)現(xiàn)的。來實(shí)現(xiàn)的。 非直接耦合的模塊獨(dú)立性最強(qiáng)。非直接耦合的模塊獨(dú)立性最強(qiáng)。主模塊主模塊ABCEFGXYZ(2)數(shù)據(jù)耦合數(shù)據(jù)耦合(Data Coupling): 兩個(gè)模塊之間傳遞的是簡(jiǎn)單變量?jī)蓚€(gè)模塊之間傳遞的是簡(jiǎn)單變量。 數(shù)據(jù)耦合相當(dāng)于數(shù)據(jù)耦合相當(dāng)于C語言中函數(shù)之間的值傳遞。語言中函數(shù)之間的值傳遞。(3)特征耦合特征耦合 (又稱標(biāo)記耦合,又稱標(biāo)記耦合,Stamp Coupling): 兩個(gè)模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)兩個(gè)模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)。 特征耦合相當(dāng)于特征耦合相當(dāng)于C語言中函數(shù)之間的地址傳遞,傳語言中函數(shù)之間的地址傳

19、遞,傳遞的是指針、數(shù)組名、記錄名等。遞的是指針、數(shù)組名、記錄名等。計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi)計(jì)算應(yīng)扣款計(jì)算應(yīng)扣款用水量用水量水費(fèi)水費(fèi)用電量用電量電費(fèi)電費(fèi)計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi)計(jì)算應(yīng)扣款計(jì)算應(yīng)扣款房租水電房租水電=房房租租+用水量用水量+用電量用電量水費(fèi)水費(fèi)電費(fèi)電費(fèi)房租水電房租水電=房房租租+用水量用水量+用電量用電量(4)控制耦合控制耦合(Control Coupling): 兩個(gè)模塊之間傳遞的兩個(gè)模塊之間傳遞的不是一般的數(shù)據(jù),而不是一般的數(shù)據(jù),而是是用作控制信號(hào)的開關(guān)值或標(biāo)志量用作控制信號(hào)的開關(guān)值或標(biāo)志量。 在控制耦合中,一個(gè)模塊通過傳送開關(guān)、標(biāo)志在控制耦合中,一個(gè)模塊通過傳

20、送開關(guān)、標(biāo)志等控制參數(shù),控制選擇另一模塊的功能。等控制參數(shù),控制選擇另一模塊的功能。A AB B:計(jì)算平均分計(jì)算平均分或最高分或最高分平均平均/ /最高最高( (控制信號(hào)控制信號(hào)) )成績(jī)成績(jī)B B計(jì)算平均分計(jì)算平均分平均平均/最高最高讀入分?jǐn)?shù)讀入分?jǐn)?shù)計(jì)算最高分計(jì)算最高分輸出結(jié)果輸出結(jié)果26 去除模塊間控制耦合的方法:去除模塊間控制耦合的方法:將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊;將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊;被調(diào)用模塊分解成若干單一功能模塊。被調(diào)用模塊分解成若干單一功能模塊。例如可將上例的控制耦合改造成如下的調(diào)例如可將上例的控制耦合改造成如下的調(diào)用形式。用形式。A AB1B1計(jì)算平均分計(jì)

21、算平均分平均成績(jī)平均成績(jī)最高成績(jī)最高成績(jī)B2B2計(jì)算最高分計(jì)算最高分(5)外部耦合外部耦合(External Coupling): 一組模塊都訪問同一個(gè)全局簡(jiǎn)單變量。一組模塊都訪問同一個(gè)全局簡(jiǎn)單變量。(6)公共耦合公共耦合(Common Coupling): 一組模塊都訪問同一個(gè)全局?jǐn)?shù)據(jù)結(jié)構(gòu)一組模塊都訪問同一個(gè)全局?jǐn)?shù)據(jù)結(jié)構(gòu)。 公共耦合的復(fù)雜程度隨耦合模塊個(gè)數(shù)的增加而增加。公共耦合的復(fù)雜程度隨耦合模塊個(gè)數(shù)的增加而增加。如如: int com = 0; void a( ) com = com + 2; void main( ) a( ); com = com + 5; printf( “ com

22、= %d ”, com ); com (公共數(shù)據(jù)區(qū)公共數(shù)據(jù)區(qū))amain28 公共耦合存在的問題:公共耦合存在的問題:使軟件的可理解性降低;使軟件的可理解性降低;診斷軟件錯(cuò)誤困難;診斷軟件錯(cuò)誤困難;軟件的可維護(hù)性差;軟件的可維護(hù)性差;軟件可靠性差軟件可靠性差( (公共數(shù)據(jù)區(qū)及全程公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施變量無保護(hù)措施) )。F請(qǐng)?jiān)谲浖猩饔霉矓?shù)據(jù)區(qū)和全請(qǐng)?jiān)谲浖猩饔霉矓?shù)據(jù)區(qū)和全程變量程變量!(7)內(nèi)容耦合內(nèi)容耦合(Content Coupling):如果一個(gè)模塊直接調(diào)用另一個(gè)模塊中的數(shù)據(jù)如果一個(gè)模塊直接調(diào)用另一個(gè)模塊中的數(shù)據(jù); 或者一或者一個(gè)模塊直接轉(zhuǎn)移到另一個(gè)模塊中去(不通過正常入

23、口轉(zhuǎn)個(gè)模塊直接轉(zhuǎn)移到另一個(gè)模塊中去(不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部)到另一模塊內(nèi)部),就稱它們之間的耦合為內(nèi)容耦合。就稱它們之間的耦合為內(nèi)容耦合。 內(nèi)容耦合往往出現(xiàn)在匯編語言程序設(shè)計(jì)中。內(nèi)容耦合往往出現(xiàn)在匯編語言程序設(shè)計(jì)中。AB直接調(diào)用另一個(gè)模塊直接調(diào)用另一個(gè)模塊中的數(shù)據(jù)中的數(shù)據(jù)entry1 entry2 模塊有多個(gè)入口模塊有多個(gè)入口30如何降低模塊間耦合度:如何降低模塊間耦合度:盡量使用數(shù)據(jù)耦合;少用控制耦合;限制公共耦盡量使用數(shù)據(jù)耦合;少用控制耦合;限制公共耦合的范圍;堅(jiān)決避免使用內(nèi)容耦合。合的范圍;堅(jiān)決避免使用內(nèi)容耦合。降低接口的復(fù)雜性。降低接口的復(fù)雜性。內(nèi)聚性與耦合性密切相關(guān),同其它模

24、塊具有強(qiáng)耦內(nèi)聚性與耦合性密切相關(guān),同其它模塊具有強(qiáng)耦合性的模塊意味者其具有弱內(nèi)聚性;強(qiáng)內(nèi)聚性模塊合性的模塊意味者其具有弱內(nèi)聚性;強(qiáng)內(nèi)聚性模塊意味著它與其它模塊間具有松散的耦合性。意味著它與其它模塊間具有松散的耦合性。模塊化設(shè)計(jì)的目標(biāo)是:力爭(zhēng)強(qiáng)內(nèi)聚、弱耦合。模塊化設(shè)計(jì)的目標(biāo)是:力爭(zhēng)強(qiáng)內(nèi)聚、弱耦合。耦合性、內(nèi)聚性與模塊獨(dú)立性的關(guān)系:耦合性與耦合性、內(nèi)聚性與模塊獨(dú)立性的關(guān)系:耦合性與內(nèi)聚性都是模塊獨(dú)立性的定性標(biāo)準(zhǔn),都反映了模塊內(nèi)聚性都是模塊獨(dú)立性的定性標(biāo)準(zhǔn),都反映了模塊獨(dú)立性的良好程度。但耦合性是直接的主導(dǎo)因素,獨(dú)立性的良好程度。但耦合性是直接的主導(dǎo)因素,而內(nèi)聚性則輔助耦合性共同對(duì)模塊的獨(dú)立性進(jìn)行衡

25、而內(nèi)聚性則輔助耦合性共同對(duì)模塊的獨(dú)立性進(jìn)行衡量。量。(思考題)(思考題)下圖是某系下圖是某系學(xué)生成績(jī)管理的一部分,學(xué)生成績(jī)管理的一部分,(a)和和(b) 是兩個(gè)不同的設(shè)計(jì)方案,你認(rèn)是兩個(gè)不同的設(shè)計(jì)方案,你認(rèn)為哪一個(gè)設(shè)計(jì)方案較好?為什么?為哪一個(gè)設(shè)計(jì)方案較好?為什么?A(取班級(jí)成績(jī)?nèi)“嗉?jí)成績(jī))B(取平均成績(jī)?nèi)∑骄煽?jī)或最高成績(jī)或最高成績(jī))C(取個(gè)人成績(jī)?nèi)€(gè)人成績(jī))平均平均最高最高平均成績(jī)平均成績(jī)/最高成績(jī)最高成績(jī)學(xué)號(hào)學(xué)號(hào)個(gè)人成績(jī)個(gè)人成績(jī)(a) 方案方案A(取班級(jí)成績(jī)?nèi)“嗉?jí)成績(jī))B1(取平均成績(jī))取平均成績(jī))C(取個(gè)人成績(jī)?nèi)€(gè)人成績(jī)) 最高成績(jī)最高成績(jī)學(xué)號(hào)學(xué)號(hào)(b) 方案方案B2(取最高成績(jī)?nèi)∽罡?/p>

26、成績(jī))平均成績(jī)平均成績(jī)個(gè)人成績(jī)個(gè)人成績(jī)學(xué)號(hào)學(xué)號(hào)個(gè)人成績(jī)個(gè)人成績(jī)班級(jí)班級(jí)成績(jī)匯總成績(jī)匯總班級(jí)班級(jí)成績(jī)匯總成績(jī)匯總思考題答案思考題答案答答: (b)方案較好。理由如下:方案較好。理由如下: 1. 內(nèi)聚性:內(nèi)聚性: (a)方案中,方案中,B 模塊為邏輯內(nèi)聚模塊;模塊為邏輯內(nèi)聚模塊; (b)方案中,方案中,B1模塊和模塊和B2模塊均為功能內(nèi)聚模塊。模塊均為功能內(nèi)聚模塊。 2. 耦合性:耦合性: (a)方案中,方案中,A和和B模塊之間為控制耦合;模塊之間為控制耦合; (b)方案中,方案中,A與與B1模塊之間、模塊之間、A與與B2模塊之間均模塊之間均為數(shù)據(jù)耦合。為數(shù)據(jù)耦合。 所以,所以, (b)方案具有高

27、內(nèi)聚、低耦合的優(yōu)點(diǎn)。方案具有高內(nèi)聚、低耦合的優(yōu)點(diǎn)。補(bǔ)充習(xí)題:補(bǔ)充習(xí)題:內(nèi)聚性有哪些類型內(nèi)聚性有哪些類型(按由弱到強(qiáng)的順按由弱到強(qiáng)的順序列舉序列舉)?耦合性有哪些類型耦合性有哪些類型(按由弱到強(qiáng)的順按由弱到強(qiáng)的順序列舉序列舉)?7.2 面向?qū)ο笤O(shè)計(jì)建模(面向?qū)ο笤O(shè)計(jì)建模(OOD Modeling)與傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)一樣,面向?qū)ο笈c傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)一樣,面向?qū)ο笤O(shè)計(jì)的任務(wù)是將分析階段建立的分析設(shè)計(jì)的任務(wù)是將分析階段建立的分析模型轉(zhuǎn)變?yōu)檐浖O(shè)計(jì)模型。面向?qū)ο竽P娃D(zhuǎn)變?yōu)檐浖O(shè)計(jì)模型。面向?qū)ο笤O(shè)計(jì)模型由子系統(tǒng)設(shè)計(jì)層、類及對(duì)象設(shè)計(jì)模型由子系統(tǒng)設(shè)計(jì)層、類及對(duì)象設(shè)計(jì)層、消息設(shè)計(jì)層和責(zé)任設(shè)計(jì)層等設(shè)計(jì)層、消息設(shè)計(jì)

28、層和責(zé)任設(shè)計(jì)層等4個(gè)抽象層次組成。如下圖所示:個(gè)抽象層次組成。如下圖所示:7.2.1 面向?qū)ο蟮脑O(shè)計(jì)模型面向?qū)ο蟮脑O(shè)計(jì)模型責(zé)任設(shè)計(jì)責(zé)任設(shè)計(jì)屬性、操作、協(xié)作屬性、操作、協(xié)作對(duì)象對(duì)象-行為模型行為模型對(duì)象對(duì)象-關(guān)系模型關(guān)系模型類類/對(duì)象對(duì)象模型模型使用使用實(shí)例實(shí)例消息設(shè)計(jì)消息設(shè)計(jì)類及對(duì)象設(shè)計(jì)類及對(duì)象設(shè)計(jì)子系統(tǒng)設(shè)計(jì)子系統(tǒng)設(shè)計(jì)分析模型分析模型 設(shè)計(jì)模型設(shè)計(jì)模型圖圖7.12 7.12 從從OOOO分析模型轉(zhuǎn)換到分析模型轉(zhuǎn)換到OOOO設(shè)計(jì)模型設(shè)計(jì)模型系統(tǒng)設(shè)計(jì)層:描述了整個(gè)系統(tǒng)的總體結(jié)系統(tǒng)設(shè)計(jì)層:描述了整個(gè)系統(tǒng)的總體結(jié)構(gòu),給出了各個(gè)子系統(tǒng)的表示;構(gòu),給出了各個(gè)子系統(tǒng)的表示;類及對(duì)象設(shè)計(jì)層:包含類層次關(guān)系和對(duì)

29、類及對(duì)象設(shè)計(jì)層:包含類層次關(guān)系和對(duì)每個(gè)對(duì)象的設(shè)計(jì)表示;每個(gè)對(duì)象的設(shè)計(jì)表示;消息設(shè)計(jì)層:描述對(duì)象間的消息模型,消息設(shè)計(jì)層:描述對(duì)象間的消息模型,建立了系統(tǒng)的外部和內(nèi)部接口,使得每個(gè)建立了系統(tǒng)的外部和內(nèi)部接口,使得每個(gè)對(duì)象能夠和其協(xié)作者通信;對(duì)象能夠和其協(xié)作者通信;責(zé)任設(shè)計(jì)層:包含針對(duì)每個(gè)對(duì)象的所有責(zé)任設(shè)計(jì)層:包含針對(duì)每個(gè)對(duì)象的所有屬性和操作的數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計(jì)。屬性和操作的數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計(jì)。7.2.2面向?qū)ο笤O(shè)計(jì)的特點(diǎn)面向?qū)ο笤O(shè)計(jì)的特點(diǎn)在面向?qū)ο蠓治龊兔嫦驅(qū)ο蟮脑O(shè)計(jì)之間沒有明在面向?qū)ο蠓治龊兔嫦驅(qū)ο蟮脑O(shè)計(jì)之間沒有明顯的界限,它們都是不斷迭代的過程,很難精顯的界限,它們都是不斷迭代的過程,很

30、難精確區(qū)分兩個(gè)階段。但是確區(qū)分兩個(gè)階段。但是OOA是一個(gè)分類活動(dòng),是一個(gè)分類活動(dòng),即分析問題領(lǐng)域以確定可應(yīng)用的對(duì)象類以及對(duì)即分析問題領(lǐng)域以確定可應(yīng)用的對(duì)象類以及對(duì)象關(guān)系和行為;而象關(guān)系和行為;而OOD則主要考慮則主要考慮“如何實(shí)現(xiàn)如何實(shí)現(xiàn)”的問題,其注意的焦點(diǎn)從問題空間轉(zhuǎn)移到解空的問題,其注意的焦點(diǎn)從問題空間轉(zhuǎn)移到解空間。間。面向?qū)ο笤O(shè)計(jì)也是基于抽象、信息隱蔽、功能面向?qū)ο笤O(shè)計(jì)也是基于抽象、信息隱蔽、功能獨(dú)立和模塊化等重要的軟件設(shè)計(jì)概念的,但其獨(dú)立和模塊化等重要的軟件設(shè)計(jì)概念的,但其模塊化不僅僅局限于過程處理部分,而是通過模塊化不僅僅局限于過程處理部分,而是通過將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,

31、來共同完將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一起,來共同完成信息和處理的雙重模塊化的。成信息和處理的雙重模塊化的。39從從OOA到到OOD逐漸擴(kuò)充模型的過程逐漸擴(kuò)充模型的過程 傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)方法將設(shè)計(jì)分為傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)方法將設(shè)計(jì)分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。OOD方法將設(shè)計(jì)分為系統(tǒng)設(shè)計(jì)(高方法將設(shè)計(jì)分為系統(tǒng)設(shè)計(jì)(高層設(shè)計(jì))和對(duì)象設(shè)計(jì)(低層設(shè)計(jì))層設(shè)計(jì))和對(duì)象設(shè)計(jì)(低層設(shè)計(jì))兩個(gè)層次,其中系統(tǒng)設(shè)計(jì)的主要目?jī)蓚€(gè)層次,其中系統(tǒng)設(shè)計(jì)的主要目標(biāo)是表示軟件體系結(jié)構(gòu),對(duì)象設(shè)計(jì)標(biāo)是表示軟件體系結(jié)構(gòu),對(duì)象設(shè)計(jì)著重于對(duì)象及其相互交互的描述。著重于對(duì)象及其相互交互的描述。7.3 系統(tǒng)設(shè)計(jì)(系

32、統(tǒng)設(shè)計(jì)(System Design)7.3.1 系統(tǒng)設(shè)計(jì)過程系統(tǒng)設(shè)計(jì)過程系統(tǒng)設(shè)計(jì)主要由以下步驟組成:系統(tǒng)設(shè)計(jì)主要由以下步驟組成: 劃分子系統(tǒng);劃分子系統(tǒng); 確定需要并發(fā)運(yùn)行的子系統(tǒng)并為它們確定需要并發(fā)運(yùn)行的子系統(tǒng)并為它們分配處理器;分配處理器; 描述子系統(tǒng)之間的通信;描述子系統(tǒng)之間的通信; 確定系統(tǒng)資源的管理和控制;確定系統(tǒng)資源的管理和控制; 確定人機(jī)交互構(gòu)件;確定人機(jī)交互構(gòu)件; 選擇實(shí)現(xiàn)數(shù)據(jù)管理和任務(wù)管理的基本選擇實(shí)現(xiàn)數(shù)據(jù)管理和任務(wù)管理的基本策略。策略。 在系統(tǒng)設(shè)計(jì)過程中必須定義四種重要的設(shè)計(jì)結(jié)構(gòu)在系統(tǒng)設(shè)計(jì)過程中必須定義四種重要的設(shè)計(jì)結(jié)構(gòu)(子系統(tǒng)):(子系統(tǒng)):?jiǎn)栴}域部分問題域部分直接負(fù)責(zé)實(shí)

33、現(xiàn)客戶需求的子系統(tǒng);直接負(fù)責(zé)實(shí)現(xiàn)客戶需求的子系統(tǒng);人機(jī)交互部分人機(jī)交互部分實(shí)現(xiàn)用戶界面的子系統(tǒng)(包括可實(shí)現(xiàn)用戶界面的子系統(tǒng)(包括可復(fù)用的復(fù)用的GUI子系統(tǒng));子系統(tǒng));任務(wù)管理部分任務(wù)管理部分負(fù)責(zé)控制和協(xié)調(diào)并發(fā)任務(wù)的子系負(fù)責(zé)控制和協(xié)調(diào)并發(fā)任務(wù)的子系統(tǒng),任務(wù)可能被包裝在一個(gè)子系統(tǒng)中或不同的子統(tǒng),任務(wù)可能被包裝在一個(gè)子系統(tǒng)中或不同的子系統(tǒng)間;系統(tǒng)間;數(shù)據(jù)管理部分?jǐn)?shù)據(jù)管理部分負(fù)責(zé)對(duì)象的存儲(chǔ)和檢索的子系統(tǒng)負(fù)責(zé)對(duì)象的存儲(chǔ)和檢索的子系統(tǒng)。42主題層主題層結(jié)構(gòu)層結(jié)構(gòu)層類及對(duì)象層類及對(duì)象層屬性層屬性層方法層方法層問題域問題域 部分部分( (PDC) )人機(jī)交人機(jī)交互部分互部分( (HIC) )任務(wù)管任務(wù)管理部

34、分理部分( (TMC) )數(shù)據(jù)管數(shù)據(jù)管理部分理部分( (DMC) )OOD階段建立階段建立OOA 階段模型階段模型OODOOD由四個(gè)活動(dòng)組成由四個(gè)活動(dòng)組成7.3.2 子系統(tǒng)設(shè)計(jì)子系統(tǒng)設(shè)計(jì) 在在OOOO系統(tǒng)設(shè)計(jì)中,通常用子系統(tǒng)來描述實(shí)現(xiàn)客戶系統(tǒng)設(shè)計(jì)中,通常用子系統(tǒng)來描述實(shí)現(xiàn)客戶需求的組件以及實(shí)現(xiàn)客戶需求所需要的支持環(huán)境需求的組件以及實(shí)現(xiàn)客戶需求所需要的支持環(huán)境;可將每個(gè)子系統(tǒng)看成一個(gè)高層次的模塊,通過;可將每個(gè)子系統(tǒng)看成一個(gè)高層次的模塊,通過模塊的外部接口與系統(tǒng)進(jìn)行通信。模塊的外部接口與系統(tǒng)進(jìn)行通信。 系統(tǒng)設(shè)計(jì)的第一步是從系統(tǒng)設(shè)計(jì)的第一步是從OOAOOA的各個(gè)模塊導(dǎo)出相應(yīng)的各個(gè)模塊導(dǎo)出相應(yīng)的子系

35、統(tǒng),這時(shí)應(yīng)考慮的主要問題為:的子系統(tǒng),這時(shí)應(yīng)考慮的主要問題為:各個(gè)子系統(tǒng)所負(fù)責(zé)的客戶需求;各個(gè)子系統(tǒng)所負(fù)責(zé)的客戶需求;應(yīng)將應(yīng)將OOAOOA中的對(duì)象分配哪個(gè)子系統(tǒng);中的對(duì)象分配哪個(gè)子系統(tǒng);哪些子系統(tǒng)必須并發(fā)運(yùn)行,由什么系統(tǒng)構(gòu)件協(xié)調(diào)和哪些子系統(tǒng)必須并發(fā)運(yùn)行,由什么系統(tǒng)構(gòu)件協(xié)調(diào)和控制這些子系統(tǒng)的并發(fā)運(yùn)行;控制這些子系統(tǒng)的并發(fā)運(yùn)行;全局資源如何被子系統(tǒng)管理等。全局資源如何被子系統(tǒng)管理等。1 1、劃分子系統(tǒng)、劃分子系統(tǒng)子系統(tǒng)是由分析模型中的類、關(guān)系和行為映子系統(tǒng)是由分析模型中的類、關(guān)系和行為映射而來的,但它既不是一個(gè)對(duì)象,也不是一射而來的,但它既不是一個(gè)對(duì)象,也不是一個(gè)功能,而是類、關(guān)聯(lián)、操作、事件和約

36、束個(gè)功能,而是類、關(guān)聯(lián)、操作、事件和約束的內(nèi)聚集合。設(shè)計(jì)子系統(tǒng)時(shí)除了應(yīng)遵循軟件的內(nèi)聚集合。設(shè)計(jì)子系統(tǒng)時(shí)除了應(yīng)遵循軟件設(shè)計(jì)的基本策略(如模塊化、功能獨(dú)立、信設(shè)計(jì)的基本策略(如模塊化、功能獨(dú)立、信息隱藏等)之外,還應(yīng)考慮如下原則:息隱藏等)之外,還應(yīng)考慮如下原則:q 子系統(tǒng)中的類應(yīng)擁有共同特性和目的、提子系統(tǒng)中的類應(yīng)擁有共同特性和目的、提供相似的服務(wù)類型;供相似的服務(wù)類型;q 子系統(tǒng)應(yīng)具有良好的接口;子系統(tǒng)應(yīng)具有良好的接口;q 除少數(shù)除少數(shù)“通信類通信類”外,子系統(tǒng)中的類應(yīng)只外,子系統(tǒng)中的類應(yīng)只與該子系統(tǒng)中的其它類協(xié)作;與該子系統(tǒng)中的其它類協(xié)作;q 子系統(tǒng)數(shù)目不應(yīng)太多。子系統(tǒng)數(shù)目不應(yīng)太多。例如例如

37、:顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)某顯像管生產(chǎn)線監(jiān)測(cè)系統(tǒng)的光電管采集數(shù)據(jù)的某顯像管生產(chǎn)線監(jiān)測(cè)系統(tǒng)的光電管采集數(shù)據(jù)的流程如下:流程如下:當(dāng)一個(gè)顯像管在流水線上經(jīng)過光電管時(shí),光電當(dāng)一個(gè)顯像管在流水線上經(jīng)過光電管時(shí),光電管就根據(jù)其形狀判斷是哪種規(guī)格的顯像管,由管就根據(jù)其形狀判斷是哪種規(guī)格的顯像管,由一個(gè)一個(gè)PLCPLC計(jì)數(shù)器進(jìn)行累計(jì)。累計(jì)數(shù)據(jù)每計(jì)數(shù)器進(jìn)行累計(jì)。累計(jì)數(shù)據(jù)每3030秒傳送秒傳送給工控機(jī)一次,工控機(jī)每隔半小時(shí)取出一個(gè)累給工控機(jī)一次,工控機(jī)每隔半小時(shí)取出一個(gè)累計(jì)數(shù)據(jù)保存到數(shù)據(jù)庫,同時(shí)將半小時(shí)數(shù)據(jù)供大計(jì)數(shù)據(jù)保存到數(shù)據(jù)庫,同時(shí)將半小時(shí)數(shù)據(jù)供大屏幕顯示。為使管理人員隨時(shí)了解各班生產(chǎn)情屏幕顯示。

38、為使管理人員隨時(shí)了解各班生產(chǎn)情況,通過班數(shù)據(jù)處理將半小時(shí)數(shù)據(jù)匯總成一個(gè)況,通過班數(shù)據(jù)處理將半小時(shí)數(shù)據(jù)匯總成一個(gè)班的班的8 8小時(shí)數(shù)據(jù)。小時(shí)數(shù)據(jù)。 顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)的顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)的CFD圖。圖。 翻屏翻屏 人工驅(qū)動(dòng)信息人工驅(qū)動(dòng)信息時(shí)鐘時(shí)鐘半小時(shí)半小時(shí) 半分鐘半分鐘 某型號(hào)累加某型號(hào)累加 物品經(jīng)過物品經(jīng)過 信號(hào)信號(hào)半分鐘數(shù)據(jù)半分鐘數(shù)據(jù)光電管光電管采集采集計(jì)數(shù)計(jì)數(shù)傳送傳送工控機(jī)工控機(jī)處理處理實(shí) 時(shí) 數(shù)實(shí) 時(shí) 數(shù)據(jù)顯示據(jù)顯示班數(shù)據(jù)班數(shù)據(jù)處理處理半小時(shí)數(shù)據(jù)半小時(shí)數(shù)據(jù)班數(shù)據(jù)班數(shù)據(jù) 例如例如:顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)的子系統(tǒng)。顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)的子系統(tǒng)。用戶界面子系統(tǒng)用戶界面子系統(tǒng)數(shù)據(jù)查詢子系統(tǒng)數(shù)據(jù)查詢子

39、系統(tǒng)展示數(shù)據(jù)展示數(shù)據(jù)()數(shù)據(jù)采集子系統(tǒng)數(shù)據(jù)采集子系統(tǒng)采集數(shù)據(jù)采集數(shù)據(jù)()基礎(chǔ)數(shù)據(jù)維護(hù)子系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)子系統(tǒng)基礎(chǔ)資源基礎(chǔ)資源()數(shù)據(jù)生成子系統(tǒng)數(shù)據(jù)生成子系統(tǒng)時(shí)間間隔時(shí)間間隔標(biāo)識(shí)標(biāo)識(shí)()482 2、處理并發(fā)操作、處理并發(fā)操作 在在OOAOOA模型中,對(duì)象模型中,對(duì)象- -行為模型可能包含存在行為模型可能包含存在于子系統(tǒng)或?qū)ο笾g的并發(fā)事件的信息。對(duì)于子系統(tǒng)或?qū)ο笾g的并發(fā)事件的信息。對(duì)于不是同時(shí)活動(dòng)的對(duì)象或子系統(tǒng),可以在同于不是同時(shí)活動(dòng)的對(duì)象或子系統(tǒng),可以在同一處理器硬件上實(shí)現(xiàn),不需要并發(fā)處理;而一處理器硬件上實(shí)現(xiàn),不需要并發(fā)處理;而對(duì)于那些同步作用于事件的并發(fā)對(duì)象或子系對(duì)于那些同步作用于事件的

40、并發(fā)對(duì)象或子系統(tǒng),必須考慮同步措施。處理并發(fā)操作的方統(tǒng),必須考慮同步措施。處理并發(fā)操作的方案為:案為:將并發(fā)子系統(tǒng)分配到不同的處理器。將并發(fā)子系統(tǒng)分配到不同的處理器。將并發(fā)子系統(tǒng)分配到相同的處理器并由系將并發(fā)子系統(tǒng)分配到相同的處理器并由系統(tǒng)提供同步控制。統(tǒng)提供同步控制。49 例如例如:考察顯像管生產(chǎn)檢測(cè)系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)考察顯像管生產(chǎn)檢測(cè)系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)的狀態(tài)圖如下,請(qǐng)標(biāo)識(shí)其并發(fā)操作,并給出解的狀態(tài)圖如下,請(qǐng)標(biāo)識(shí)其并發(fā)操作,并給出解決方案。決方案。20秒到秒到/翻屏翻屏生成最新數(shù)據(jù)生成最新數(shù)據(jù)/翻屏翻屏 半小時(shí)到半小時(shí)到/ 工控處理工控處理半分鐘到半分鐘到/傳送傳送空閑空閑/采集采集物品經(jīng)過物品

41、經(jīng)過/計(jì)數(shù)計(jì)數(shù)采集采集PLC計(jì)數(shù)計(jì)數(shù)傳送傳送工控處理工控處理實(shí)時(shí)翻屏實(shí)時(shí)翻屏50 從上圖可發(fā)現(xiàn):從上圖可發(fā)現(xiàn): 每隔半分鐘會(huì)接到工控處理事件,觸發(fā)半分鐘數(shù)據(jù)每隔半分鐘會(huì)接到工控處理事件,觸發(fā)半分鐘數(shù)據(jù)轉(zhuǎn)換為半小時(shí)數(shù)據(jù);轉(zhuǎn)換為半小時(shí)數(shù)據(jù); 大屏幕每大屏幕每20秒實(shí)時(shí)翻屏一次,它會(huì)讀取實(shí)時(shí)數(shù)據(jù);秒實(shí)時(shí)翻屏一次,它會(huì)讀取實(shí)時(shí)數(shù)據(jù); 人工觸發(fā)的數(shù)據(jù)處理和日數(shù)據(jù)處理隨時(shí)會(huì)發(fā)生。人工觸發(fā)的數(shù)據(jù)處理和日數(shù)據(jù)處理隨時(shí)會(huì)發(fā)生。 因此對(duì)實(shí)時(shí)數(shù)據(jù)對(duì)象存在并發(fā)操作:因此對(duì)實(shí)時(shí)數(shù)據(jù)對(duì)象存在并發(fā)操作: 考慮到半分鐘數(shù)據(jù)的轉(zhuǎn)換頻繁發(fā)生,而且持續(xù)時(shí)間考慮到半分鐘數(shù)據(jù)的轉(zhuǎn)換頻繁發(fā)生,而且持續(xù)時(shí)間較長(zhǎng),可采用將它分配到一個(gè)獨(dú)立的

42、處理器上的方較長(zhǎng),可采用將它分配到一個(gè)獨(dú)立的處理器上的方案;案; 對(duì)于其它并發(fā)活動(dòng),每個(gè)表示為一個(gè)獨(dú)立的控制線對(duì)于其它并發(fā)活動(dòng),每個(gè)表示為一個(gè)獨(dú)立的控制線程,并定義為獨(dú)立的任務(wù)。程,并定義為獨(dú)立的任務(wù)。513 3、描述子系統(tǒng)間通信、描述子系統(tǒng)間通信 子系統(tǒng)間的協(xié)作可用如下的模型描述:子系統(tǒng)間的協(xié)作可用如下的模型描述:客戶端客戶端子系統(tǒng)子系統(tǒng)服務(wù)器端服務(wù)器端子系統(tǒng)子系統(tǒng)請(qǐng)求請(qǐng)求端子系統(tǒng)端子系統(tǒng)端子系統(tǒng)端子系統(tǒng)請(qǐng)求請(qǐng)求請(qǐng)求請(qǐng)求子系統(tǒng)間協(xié)作的模型子系統(tǒng)間協(xié)作的模型 確定子系統(tǒng)間交互方式的步驟如下:確定子系統(tǒng)間交互方式的步驟如下: 列出所有可能接收到的請(qǐng)求,按子系統(tǒng)組列出所有可能接收到的請(qǐng)求,按子系統(tǒng)

43、組織這些請(qǐng)求,并在一個(gè)或多個(gè)合約(子系織這些請(qǐng)求,并在一個(gè)或多個(gè)合約(子系統(tǒng)間交互的方式)中定義。統(tǒng)間交互的方式)中定義。 對(duì)每個(gè)合約,列出完成每個(gè)請(qǐng)求所需的操對(duì)每個(gè)合約,列出完成每個(gè)請(qǐng)求所需的操作(繼承的和私有的),將操作和子系統(tǒng)作(繼承的和私有的),將操作和子系統(tǒng)內(nèi)的特定類相關(guān)聯(lián)。內(nèi)的特定類相關(guān)聯(lián)。 將每個(gè)合約填入如下所示的表。將每個(gè)合約填入如下所示的表。 對(duì)復(fù)雜的交互模式,可創(chuàng)建子系統(tǒng)協(xié)作圖對(duì)復(fù)雜的交互模式,可創(chuàng)建子系統(tǒng)協(xié)作圖,如下所示。,如下所示。 合合約約 類型類型(客戶(客戶/服務(wù)器服務(wù)器或端對(duì)斷)或端對(duì)斷)協(xié)作子協(xié)作子系統(tǒng)系統(tǒng)類類操操作作消息消息格式格式數(shù)據(jù)采集數(shù)據(jù)采集子系統(tǒng)子系

44、統(tǒng)數(shù)據(jù)生成數(shù)據(jù)生成子系統(tǒng)子系統(tǒng)數(shù)據(jù)查詢數(shù)據(jù)查詢子系統(tǒng)子系統(tǒng)生 成 計(jì)生 成 計(jì)算 數(shù) 據(jù)算 數(shù) 據(jù)請(qǐng)求請(qǐng)求采 集 所采 集 所缺 數(shù) 據(jù)缺 數(shù) 據(jù)請(qǐng)求請(qǐng)求生 成 數(shù)生 成 數(shù)據(jù) 報(bào) 表據(jù) 報(bào) 表請(qǐng)求請(qǐng)求544 4、資源管理構(gòu)件、資源管理構(gòu)件 對(duì)于系統(tǒng)中的共享資源(外部實(shí)體、系對(duì)于系統(tǒng)中的共享資源(外部實(shí)體、系統(tǒng)實(shí)現(xiàn)部件),若不進(jìn)行有效管理,可統(tǒng)實(shí)現(xiàn)部件),若不進(jìn)行有效管理,可能會(huì)引起沖突;每個(gè)資源應(yīng)該由某能會(huì)引起沖突;每個(gè)資源應(yīng)該由某“保保護(hù)者對(duì)象護(hù)者對(duì)象”擁有,保護(hù)者對(duì)象是該資源擁有,保護(hù)者對(duì)象是該資源的門衛(wèi),控制對(duì)資源的訪問并協(xié)調(diào)對(duì)資的門衛(wèi),控制對(duì)資源的訪問并協(xié)調(diào)對(duì)資源請(qǐng)求的沖突。源請(qǐng)求的

45、沖突。555 5、人機(jī)交互設(shè)計(jì)、人機(jī)交互設(shè)計(jì) 雖然一個(gè)好的人機(jī)交互部分不可能挽救一個(gè)雖然一個(gè)好的人機(jī)交互部分不可能挽救一個(gè)功能很差的軟件功能很差的軟件, , 但性能很差的人機(jī)交互部但性能很差的人機(jī)交互部分將會(huì)使一個(gè)功能很強(qiáng)的產(chǎn)品變得不可接受分將會(huì)使一個(gè)功能很強(qiáng)的產(chǎn)品變得不可接受! ! 在需求分析階段,通過用例模型已描述了用在需求分析階段,通過用例模型已描述了用戶和系統(tǒng)的交互情況,其中確定了人機(jī)交互戶和系統(tǒng)的交互情況,其中確定了人機(jī)交互的屬性和外部服務(wù);進(jìn)入設(shè)計(jì)階段應(yīng)以此為的屬性和外部服務(wù);進(jìn)入設(shè)計(jì)階段應(yīng)以此為基礎(chǔ),給出有關(guān)人機(jī)交互的所有系統(tǒng)成分(基礎(chǔ),給出有關(guān)人機(jī)交互的所有系統(tǒng)成分(用戶如何操

46、作系統(tǒng)、系統(tǒng)如何響應(yīng)命令、系用戶如何操作系統(tǒng)、系統(tǒng)如何響應(yīng)命令、系統(tǒng)顯示的信息和報(bào)表格式等)。統(tǒng)顯示的信息和報(bào)表格式等)。56 要設(shè)計(jì)一個(gè)用戶滿意的人機(jī)交互界面,應(yīng):要設(shè)計(jì)一個(gè)用戶滿意的人機(jī)交互界面,應(yīng): 分類(可按技術(shù)熟練程度、工作性質(zhì)、訪問權(quán)限等分類(可按技術(shù)熟練程度、工作性質(zhì)、訪問權(quán)限等分類)分析用戶特點(diǎn),設(shè)計(jì)不同界面。通常先在分分類)分析用戶特點(diǎn),設(shè)計(jì)不同界面。通常先在分析用戶特點(diǎn)的基礎(chǔ)上,確定出初步的命令系統(tǒng)(菜析用戶特點(diǎn)的基礎(chǔ)上,確定出初步的命令系統(tǒng)(菜單方式或按鈕方式),然后再進(jìn)行優(yōu)化(考慮命令單方式或按鈕方式),然后再進(jìn)行優(yōu)化(考慮命令順序;根據(jù)外部服務(wù)之間的聚合關(guān)系組織相應(yīng)的

47、命順序;根據(jù)外部服務(wù)之間的聚合關(guān)系組織相應(yīng)的命令;充分考慮人類記憶的局限性等)。令;充分考慮人類記憶的局限性等)。 增加用戶界面專用的類與對(duì)象,這與所選用的圖形增加用戶界面專用的類與對(duì)象,這與所選用的圖形界面有關(guān)。具體的處理思想是:先利用類結(jié)構(gòu)圖描界面有關(guān)。具體的處理思想是:先利用類結(jié)構(gòu)圖描述出各窗口及其分量的關(guān)系;然后為每個(gè)窗口定義述出各窗口及其分量的關(guān)系;然后為每個(gè)窗口定義菜單條、下拉菜單、彈出式菜單、相關(guān)的操作和應(yīng)菜單條、下拉菜單、彈出式菜單、相關(guān)的操作和應(yīng)顯示的信息等內(nèi)容。顯示的信息等內(nèi)容。 利用快速原形演示,改進(jìn)界面設(shè)計(jì)。利用快速原形演示,改進(jìn)界面設(shè)計(jì)。576 6、任務(wù)管理設(shè)計(jì)、任務(wù)

48、管理設(shè)計(jì) 在在OODOOD中引進(jìn)任務(wù)管理部分的原因是:當(dāng)中引進(jìn)任務(wù)管理部分的原因是:當(dāng)系統(tǒng)中有許多并發(fā)行為時(shí),需要按照各個(gè)行系統(tǒng)中有許多并發(fā)行為時(shí),需要按照各個(gè)行為的協(xié)調(diào)和通信關(guān)系,劃分各種任務(wù)為的協(xié)調(diào)和通信關(guān)系,劃分各種任務(wù)( (進(jìn)程進(jìn)程) ),以簡(jiǎn)化并發(fā)行為的設(shè)計(jì)和編碼。,以簡(jiǎn)化并發(fā)行為的設(shè)計(jì)和編碼。 設(shè)計(jì)管理并發(fā)任務(wù)對(duì)象的策略是:確定任務(wù)設(shè)計(jì)管理并發(fā)任務(wù)對(duì)象的策略是:確定任務(wù)特征(從理解任務(wù)是如何被激活開始,分析特征(從理解任務(wù)是如何被激活開始,分析任務(wù)是事件驅(qū)動(dòng)的,還是時(shí)鐘驅(qū)動(dòng)的);定任務(wù)是事件驅(qū)動(dòng)的,還是時(shí)鐘驅(qū)動(dòng)的);定義一個(gè)協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)的對(duì)象;集成義一個(gè)協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)

49、的對(duì)象;集成其它任務(wù)和協(xié)調(diào)者。其它任務(wù)和協(xié)調(diào)者。 設(shè)計(jì)任務(wù)管理部分的一般步驟和過程為:設(shè)計(jì)任務(wù)管理部分的一般步驟和過程為:識(shí)別事件驅(qū)動(dòng)任務(wù)(通常完成通信工作,其工作識(shí)別事件驅(qū)動(dòng)任務(wù)(通常完成通信工作,其工作流程為:處于睡眠狀態(tài),等待事件;接到事件觸流程為:處于睡眠狀態(tài),等待事件;接到事件觸發(fā)的中斷被喚醒,接收數(shù)據(jù)并執(zhí)行相應(yīng)的操作;發(fā)的中斷被喚醒,接收數(shù)據(jù)并執(zhí)行相應(yīng)的操作;重新回到睡眠狀態(tài))和時(shí)鐘驅(qū)動(dòng)任務(wù)(按一定時(shí)重新回到睡眠狀態(tài))和時(shí)鐘驅(qū)動(dòng)任務(wù)(按一定時(shí)間周期激活的任務(wù))。間周期激活的任務(wù))。識(shí)別關(guān)鍵性任務(wù)(對(duì)整個(gè)系統(tǒng)起重要作用的任務(wù)識(shí)別關(guān)鍵性任務(wù)(對(duì)整個(gè)系統(tǒng)起重要作用的任務(wù)、要求可靠性較高)

50、、任務(wù)優(yōu)先級(jí)(以保證緊急、要求可靠性較高)、任務(wù)優(yōu)先級(jí)(以保證緊急事件能在限定的時(shí)間內(nèi)得到處理)以及任務(wù)管理事件能在限定的時(shí)間內(nèi)得到處理)以及任務(wù)管理類(專門用于管理和協(xié)調(diào)其它任務(wù)的任務(wù))。類(專門用于管理和協(xié)調(diào)其它任務(wù)的任務(wù))。定義每個(gè)任務(wù)(名稱、功能、優(yōu)先級(jí)、協(xié)同方式定義每個(gè)任務(wù)(名稱、功能、優(yōu)先級(jí)、協(xié)同方式、通信方式等)。、通信方式等)。必要時(shí)應(yīng)在必要時(shí)應(yīng)在OODOOD中擴(kuò)充有關(guān)任務(wù)的類及對(duì)象,調(diào)中擴(kuò)充有關(guān)任務(wù)的類及對(duì)象,調(diào)整原有的語法成分,以適應(yīng)任務(wù)定義的要求。整原有的語法成分,以適應(yīng)任務(wù)定義的要求。59 對(duì)傳感器任務(wù)可給出如下的描述:對(duì)傳感器任務(wù)可給出如下的描述: 任務(wù)名字:任務(wù)名字

51、: 傳感器讀出。傳感器讀出。 任務(wù)描述:任務(wù)描述: 該任務(wù)在需要脈沖調(diào)幅時(shí)負(fù)責(zé)讀出傳感器。該任務(wù)在需要脈沖調(diào)幅時(shí)負(fù)責(zé)讀出傳感器。 包含:包含: 傳感器,樣本。傳感器,樣本。 任務(wù)優(yōu)先級(jí)任務(wù)優(yōu)先級(jí): :中等。中等。 協(xié)調(diào)方式:協(xié)調(diào)方式:時(shí)鐘驅(qū)動(dòng),時(shí)鐘驅(qū)動(dòng),100ms的時(shí)間間隔。的時(shí)間間隔。 通信方式:通信方式: 從輸入線(傳感器)得到值,給雷達(dá)郵箱發(fā)從輸入線(傳感器)得到值,給雷達(dá)郵箱發(fā)送值。送值。607 7、數(shù)據(jù)管理設(shè)計(jì)、數(shù)據(jù)管理設(shè)計(jì) 應(yīng)用系統(tǒng)都會(huì)涉及到對(duì)象數(shù)據(jù)的存儲(chǔ)和檢索應(yīng)用系統(tǒng)都會(huì)涉及到對(duì)象數(shù)據(jù)的存儲(chǔ)和檢索問題,這通常通過數(shù)據(jù)管理構(gòu)件來完成。數(shù)問題,這通常通過數(shù)據(jù)管理構(gòu)件來完成。數(shù)據(jù)管理構(gòu)

52、件的作用是將目標(biāo)系統(tǒng)中依賴開發(fā)據(jù)管理構(gòu)件的作用是將目標(biāo)系統(tǒng)中依賴開發(fā)平臺(tái)的數(shù)據(jù)存取部分與其它功能分離,使數(shù)平臺(tái)的數(shù)據(jù)存取部分與其它功能分離,使數(shù)據(jù)管理可通過一般的數(shù)據(jù)管理系統(tǒng)(普通文據(jù)管理可通過一般的數(shù)據(jù)管理系統(tǒng)(普通文件、關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫等)實(shí)件、關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫等)實(shí)現(xiàn)?,F(xiàn)。 數(shù)據(jù)管理構(gòu)件的設(shè)計(jì)主要包括:數(shù)據(jù)管理構(gòu)件的設(shè)計(jì)主要包括:定義數(shù)據(jù)格式定義數(shù)據(jù)格式設(shè)計(jì)相應(yīng)的操作設(shè)計(jì)相應(yīng)的操作617.3 對(duì)象設(shè)計(jì)對(duì)象設(shè)計(jì) 對(duì)象設(shè)計(jì)層次著重于對(duì)象及其相互交互的描述,在對(duì)象設(shè)計(jì)層次著重于對(duì)象及其相互交互的描述,在該層次上應(yīng)創(chuàng)建屬性數(shù)據(jù)結(jié)構(gòu)和所有操作的過程的該層次上應(yīng)創(chuàng)建屬性數(shù)據(jù)結(jié)

53、構(gòu)和所有操作的過程的詳細(xì)規(guī)約;定義所有屬性的可見性(公共的、私有詳細(xì)規(guī)約;定義所有屬性的可見性(公共的、私有的或保護(hù)的),同時(shí)要精化對(duì)象間的接口以定義完的或保護(hù)的),同時(shí)要精化對(duì)象間的接口以定義完整的消息模型的細(xì)節(jié)。整的消息模型的細(xì)節(jié)。 在對(duì)象設(shè)計(jì)過程中,要將分析模型轉(zhuǎn)換為設(shè)計(jì)模型在對(duì)象設(shè)計(jì)過程中,要將分析模型轉(zhuǎn)換為設(shè)計(jì)模型,其對(duì)應(yīng)關(guān)系如下圖所示。,其對(duì)應(yīng)關(guān)系如下圖所示。分析模型分析模型 類類 屬性屬性 方法方法 關(guān)系關(guān)系 行為行為 設(shè)計(jì)模型設(shè)計(jì)模型 對(duì)象對(duì)象 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 算法算法 消息傳遞消息傳遞 控制控制621、對(duì)象描述、對(duì)象描述 OOD階段的對(duì)象描述是以階段的對(duì)象描述是以O(shè)OA階段

54、的對(duì)象模型階段的對(duì)象模型為基礎(chǔ)的,它從對(duì)象間的接口(消息)入手,為基礎(chǔ)的,它從對(duì)象間的接口(消息)入手,從實(shí)現(xiàn)的角度詳細(xì)描述了對(duì)象的各個(gè)方面。從實(shí)現(xiàn)的角度詳細(xì)描述了對(duì)象的各個(gè)方面。 對(duì)象的設(shè)計(jì)描述包括協(xié)議描述(為對(duì)象提供了對(duì)象的設(shè)計(jì)描述包括協(xié)議描述(為對(duì)象提供了接口,是其它對(duì)象調(diào)用該對(duì)象的基礎(chǔ))和實(shí)現(xiàn)接口,是其它對(duì)象調(diào)用該對(duì)象的基礎(chǔ))和實(shí)現(xiàn)描述(提供了對(duì)象內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),是實(shí)現(xiàn)對(duì)描述(提供了對(duì)象內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),是實(shí)現(xiàn)對(duì)象所必須具備的)。象所必須具備的)。、協(xié)議描述(、協(xié)議描述(protocol):通過定義對(duì)象可以):通過定義對(duì)象可以接收的每個(gè)消息和當(dāng)對(duì)象接收到消息后所完成接收的每個(gè)消息和當(dāng)對(duì)象

55、接收到消息后所完成的相關(guān)操作來建立對(duì)象的接口。實(shí)際上,協(xié)議的相關(guān)操作來建立對(duì)象的接口。實(shí)際上,協(xié)議描述僅僅是一組消息和對(duì)消息的注釋。描述僅僅是一組消息和對(duì)消息的注釋。63 例如:例如:PLC計(jì)數(shù)器(計(jì)數(shù)器(PLC_counter)是顯像管)是顯像管生產(chǎn)監(jiān)測(cè)系統(tǒng)中數(shù)據(jù)采集子系統(tǒng)內(nèi)的一個(gè)對(duì)生產(chǎn)監(jiān)測(cè)系統(tǒng)中數(shù)據(jù)采集子系統(tǒng)內(nèi)的一個(gè)對(duì)象,請(qǐng)用協(xié)議描述說明其接口。象,請(qǐng)用協(xié)議描述說明其接口。 因?yàn)橐驗(yàn)镻LC計(jì)數(shù)器可能接收計(jì)數(shù)器可能接收3種消息(種消息(“清零復(fù)清零復(fù)位位”消息消息Reset、“計(jì)數(shù)加計(jì)數(shù)加1”消息消息Increment和和“傳送數(shù)值傳送數(shù)值”消息消息Sendnum),因而可給),因而可給出如

56、下的協(xié)議描述:出如下的協(xié)議描述: MESSAGE( PLC_counter ) Reset: SETS counter number; MESSAGE( PLC_counter ) Increment: CALCULATES counter number; MESSAGE( PLC_counter ) Sendnum: SENDS counter number;2、實(shí)現(xiàn)描述(、實(shí)現(xiàn)描述(protocol):):是對(duì)對(duì)象接收到某個(gè)消息后是對(duì)對(duì)象接收到某個(gè)消息后所執(zhí)行的操作的實(shí)現(xiàn)細(xì)節(jié)的描述,主要包括:類對(duì)象所執(zhí)行的操作的實(shí)現(xiàn)細(xì)節(jié)的描述,主要包括:類對(duì)象的名字的定義;私有數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)項(xiàng)和類型的定義

57、的名字的定義;私有數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)項(xiàng)和類型的定義;每個(gè)操作的過程描述或指向這樣的過程描述的指針;每個(gè)操作的過程描述或指向這樣的過程描述的指針。 例如:對(duì)于對(duì)象例如:對(duì)于對(duì)象PLC計(jì)數(shù)器(計(jì)數(shù)器(PLC_counter)可給出如)可給出如下的實(shí)現(xiàn)描述:下的實(shí)現(xiàn)描述: 對(duì)象名:對(duì)象名: PLC_counter 類名:類名: Class PLC_counter 私有數(shù)據(jù)結(jié)構(gòu):私有數(shù)據(jù)結(jié)構(gòu):ID:string; /PLC計(jì)數(shù)器編號(hào)計(jì)數(shù)器編號(hào) Controller:*CM; /受哪個(gè)工控機(jī)控制受哪個(gè)工控機(jī)控制 PC_ID :string; /受計(jì)數(shù)的工序編號(hào)受計(jì)數(shù)的工序編號(hào) TC_ID :string;

58、/計(jì)數(shù)的指標(biāo)計(jì)數(shù)的指標(biāo) Counter_number:integer; /計(jì)數(shù)值計(jì)數(shù)值65663、算法設(shè)計(jì)、算法設(shè)計(jì) OOD的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)與傳統(tǒng)軟件工程的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)與傳統(tǒng)軟件工程的數(shù)據(jù)設(shè)計(jì)和過程設(shè)計(jì)并不完全相同,其數(shù)的數(shù)據(jù)設(shè)計(jì)和過程設(shè)計(jì)并不完全相同,其數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì)應(yīng)并行進(jìn)行。據(jù)結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì)應(yīng)并行進(jìn)行。 設(shè)計(jì)算法的常用方法是:用面向?qū)ο髠未a設(shè)計(jì)算法的常用方法是:用面向?qū)ο髠未a描述系統(tǒng)中每個(gè)操作的算法。其中傳送消息描述系統(tǒng)中每個(gè)操作的算法。其中傳送消息的語法表示為:接收者對(duì)象、方法、參數(shù);的語法表示為:接收者對(duì)象、方法、參數(shù);數(shù)據(jù)結(jié)構(gòu)的表示為:數(shù)據(jù)項(xiàng):數(shù)據(jù)類型。數(shù)

59、據(jù)結(jié)構(gòu)的表示為:數(shù)據(jù)項(xiàng):數(shù)據(jù)類型。 系統(tǒng)中的類可分為:系統(tǒng)中的類可分為: 以某種方式操縱數(shù)據(jù)的操作(加入、刪除、重以某種方式操縱數(shù)據(jù)的操作(加入、刪除、重格式化、選擇等);格式化、選擇等); 執(zhí)行計(jì)算的操作;執(zhí)行計(jì)算的操作; 為控制事件的出現(xiàn)而監(jiān)控對(duì)象的操作。為控制事件的出現(xiàn)而監(jiān)控對(duì)象的操作。67 創(chuàng)建了基本對(duì)象模型后,應(yīng)該對(duì)其進(jìn)行創(chuàng)建了基本對(duì)象模型后,應(yīng)該對(duì)其進(jìn)行優(yōu)化。優(yōu)化。OOD優(yōu)化主要從如下幾個(gè)方面進(jìn)優(yōu)化主要從如下幾個(gè)方面進(jìn)行:行: 復(fù)審對(duì)象復(fù)審對(duì)象-關(guān)系模型。以保證已實(shí)現(xiàn)的關(guān)系模型。以保證已實(shí)現(xiàn)的設(shè)計(jì)對(duì)資源使用高效而且容易實(shí)現(xiàn);設(shè)計(jì)對(duì)資源使用高效而且容易實(shí)現(xiàn); 優(yōu)化屬性數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的

60、操作算法優(yōu)化屬性數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的操作算法,以提高處理效率;,以提高處理效率; 創(chuàng)建新的屬性,以存放導(dǎo)出的信息,創(chuàng)建新的屬性,以存放導(dǎo)出的信息,應(yīng)避免重復(fù)計(jì)算。應(yīng)避免重復(fù)計(jì)算。684、領(lǐng)域?qū)ο笤O(shè)計(jì)、領(lǐng)域?qū)ο笤O(shè)計(jì) 在同一應(yīng)用領(lǐng)域的不同應(yīng)用系統(tǒng)中,通常會(huì)在同一應(yīng)用領(lǐng)域的不同應(yīng)用系統(tǒng)中,通常會(huì)存在一些共享的類存在一些共享的類/對(duì)象,它們是實(shí)現(xiàn)軟件復(fù)對(duì)象,它們是實(shí)現(xiàn)軟件復(fù)用的基礎(chǔ)。用的基礎(chǔ)。OOA階段所建立階段所建立的領(lǐng)域模型是領(lǐng)的領(lǐng)域模型是領(lǐng)域設(shè)計(jì)的前提,進(jìn)入域設(shè)計(jì)的前提,進(jìn)入OODOOD階段應(yīng)從實(shí)現(xiàn)的角度階段應(yīng)從實(shí)現(xiàn)的角度對(duì)其進(jìn)行補(bǔ)充或修改,例如增添、合并或分對(duì)其進(jìn)行補(bǔ)充或修改,例如增添、合并或分解

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論