




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第11章 面向?qū)ο笤O(shè)計 分析是提取和整理用戶需求,并建立問題域精確模型的過程。設(shè)計則是把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實現(xiàn)方案的過程。 本章首先講述為獲得優(yōu)秀設(shè)計結(jié)果應(yīng)該遵循的準(zhǔn)則,然后具體講述面向?qū)ο笤O(shè)計的任務(wù)和方法。 從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(OOD),是一個逐漸擴(kuò)充模型的過程?;蛘哒f,面向?qū)ο笤O(shè)計就是用面向?qū)ο笥^點建立求解域模型的過程。第1頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)
2、 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第2頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則1. 模塊化2. 抽象3. 信息隱藏4. 弱耦合5. 強內(nèi)聚6. 可重用第3頁,共84頁。1. 模塊化對象就是模塊把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法 緊密地結(jié)合在一起2. 抽象過程抽象數(shù)據(jù)抽象:類參數(shù)化抽象:C+的“模板” 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則第4頁,共84頁。3. 信息隱藏4. 弱耦合通過對象的封裝性實現(xiàn)類分離了接口與實現(xiàn),支持信息隱藏耦合:一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連的緊密程度弱耦合:系統(tǒng)中某一部分的變化對其他部分的影響降到最低程度對象之間的耦合:交互耦合&繼
3、承耦合 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則第5頁,共84頁。5. 強內(nèi)聚6. 可重用內(nèi)聚衡量一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度在設(shè)計時應(yīng)該力求做到高內(nèi)聚面向?qū)ο笤O(shè)計的3種內(nèi)聚: 服務(wù)內(nèi)聚、類內(nèi)聚、一般特殊內(nèi)聚盡量使用已有的類如果確實需要創(chuàng)建新類,則在設(shè)計這些新類的協(xié)議時,應(yīng)該考慮將來的可重復(fù)使用性 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則第6頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián)
4、11.11 設(shè)計優(yōu)化主要內(nèi)容第7頁,共84頁。 11.2 啟發(fā)規(guī)則1. 設(shè)計結(jié)果應(yīng)該清晰易懂2. 一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)3. 設(shè)計簡單的類4. 使用簡單的協(xié)議5. 使用簡單的服務(wù)6. 把設(shè)計變動減至最小第8頁,共84頁。1. 設(shè)計結(jié)果應(yīng)該清晰易懂提高軟件可維護(hù)性和可重用性的重要措施保證設(shè)計結(jié)果清晰易懂的主要因素: (1)用詞一致 (2)使用已有的協(xié)議 (3)減少消息模式的數(shù)目 (4)避免模糊的定義2. 一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)類等級中包含的層次數(shù)適當(dāng)一個中等規(guī)模(大約包含100個類)的系統(tǒng)中,類等級層次數(shù)應(yīng)保持為72。 11.2 啟發(fā)規(guī)則第9頁,共84頁。3. 設(shè)計簡單的類4. 使用簡單
5、的協(xié)議盡量設(shè)計小而簡單的類注意以下幾點: (1)避免包含過多的屬性 (2)有明確的定義 (3)盡量簡化對象之間的合作關(guān)系 (4)不要提供太多服務(wù)消息中的參數(shù)不要超過3個 11.2 啟發(fā)規(guī)則第10頁,共84頁。5. 使用簡單的服務(wù)6. 把設(shè)計變動減至最小類中的服務(wù)通常都很小盡量避免使用復(fù)雜的服務(wù)理想的設(shè)計變動曲線如右圖所示在設(shè)計的早期階段,變動較大,隨著時間推移,設(shè)計方案日趨成熟,改動也越來越小了 11.2 啟發(fā)規(guī)則第11頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)
6、計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第12頁,共84頁。 11.3 軟件重用11.3.1 概述11.3.2 類構(gòu)建11.3.3 設(shè)計簡單的類第13頁,共84頁。11.3.1 軟件重用概述重用也叫再用或復(fù)用,是指同一事物不作修改或稍加改動就多次重復(fù)使用。廣義地說,軟件重用可分為以下3個層次:知識重用方法和標(biāo)準(zhǔn)的重用軟件成分的重用上述前兩個重用層次屬于知識工程研究的范疇,本節(jié)僅討論軟件成分重用問題。1. 重用 11.3 軟件重用第14頁,共84頁。代碼重用源代碼剪貼源代碼包含繼承設(shè)計結(jié)果重用 重用某個軟件系統(tǒng)的
7、設(shè)計模型(即求解域模型)分許結(jié)果重用 更高級別的重用,即重用某個系統(tǒng)的分析模型2. 軟件成分的重用級別 11.3 軟件重用第15頁,共84頁。 主要有以下10種:項目計劃成本估計體系結(jié)構(gòu)需求模型和規(guī)格說明設(shè)計源代碼用戶文檔和技術(shù)文檔用戶界面數(shù)據(jù)測試用例3.典型的可重用軟件成分 11.3 軟件重用第16頁,共84頁。11.3.2 類構(gòu)件1. 可重用軟構(gòu)件應(yīng)具備的特點為使軟構(gòu)件也像硬件集成電路那樣,能在構(gòu)造各種各樣的軟件系統(tǒng)時方便地重復(fù)使用,就必須使它們滿足下列要求:模塊獨立性強成具有高度可塑性接口清晰、簡明、可靠需求模型和規(guī)格說明 面向?qū)ο蠹夹g(shù)中的“類”,是比較理想的可重用軟構(gòu)件,不妨稱之為類構(gòu)
8、件。 11.3 軟件重用第17頁,共84頁。2. 類構(gòu)件的重用方式實例重用使用適當(dāng)?shù)臉?gòu)造函數(shù),按照需要創(chuàng)建類的實例用幾個簡單的對象作為類的成員創(chuàng)建出一個更復(fù)雜的類繼承重用 繼承性提供了一種對已有的類構(gòu)件進(jìn)行裁剪的機(jī)制多態(tài)重用使對象的對外接口更加一般化,降低了消息連接的復(fù)雜程度提供一種簡便可靠的軟構(gòu)件組合機(jī)制 11.3 軟件重用第18頁,共84頁。11.3.3 軟件重用的效益1. 質(zhì)量 理想情況下,為了重用而開發(fā)的軟件構(gòu)件已被證明是正確的,且沒有缺陷。 事實上,由于不能定期進(jìn)行形式化驗證,錯誤可能而且也確實存在。 但是,隨著每一次重用,都會有一些錯誤被發(fā)現(xiàn)并被清除,構(gòu)件的質(zhì)量也會隨之改善。 隨著
9、時間的推移,構(gòu)件將變成實質(zhì)上無錯誤的。 11.3 軟件重用第19頁,共84頁。2. 生產(chǎn)率 當(dāng)把可重用的軟件成分應(yīng)用于軟件開發(fā)的全過程時,創(chuàng)建計劃、模型、文檔、代碼和數(shù)據(jù)所需花費的時間將減少,從而將用較少的投入給客戶提供相同級別的產(chǎn)品,因此,生產(chǎn)率得到了提高。 由于應(yīng)用領(lǐng)域、問題復(fù)雜程度、項目組的結(jié)構(gòu)和大小、項目期限、可應(yīng)用的技術(shù)等許多因素都對項目組的生產(chǎn)率有影響,因此,不同開發(fā)組織對軟件重用帶來生產(chǎn)率提高的數(shù)字的報告并不相同,但基本上30%50%的重用大約可以導(dǎo)致生產(chǎn)率提高25%40%。 11.3 軟件重用第20頁,共84頁。3. 成本軟件重用帶來的凈成本節(jié)省可以用下式估算: C=Cs-Cr
10、-CdCr是與重用相關(guān)聯(lián)的成本領(lǐng)域分析與建模的成本設(shè)計領(lǐng)域體系結(jié)構(gòu)的成本為便于重用而增加的文檔的成本維護(hù)和完善可重用的軟件成分的成本為從外部獲取構(gòu)件所付出的版稅和許可證費用創(chuàng)建(或購買)及運行重用庫的費用對設(shè)計和實現(xiàn)可重用構(gòu)件的人員的培訓(xùn)費用Cd是交付給客戶的軟件的實際成本Cs使用本書第13章講述的技術(shù)來估算 11.3 軟件重用第21頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)
11、計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第22頁,共84頁。11.4 系統(tǒng)分解分而治之,各個擊破系統(tǒng)的主要組成部分稱為子系統(tǒng) 軟件工程師在設(shè)計比較復(fù)雜的應(yīng)用系統(tǒng)時普遍采用的策略,也是首先把系統(tǒng)分解成若干個比較小的部分,然后再分別設(shè)計每個部分。 面向?qū)ο笤O(shè)計模型的4大組成部分可以想象成整個模型的4個垂直切片。第23頁,共84頁。1. 子系統(tǒng)之間的兩種交互方式(1)客戶-供應(yīng)商關(guān)系作為“客戶”的子系統(tǒng)調(diào)用作為“供應(yīng)商”的子系統(tǒng),后者完成某些服務(wù)工作并返回結(jié)果。前者必須了解后者的接口,然而后者卻無須了解前者的接口,因為任何交互行為都是由前者驅(qū)動的。(2)平等伙伴關(guān)系每個子系統(tǒng)都可能調(diào)用其他子系統(tǒng),每個子
12、系統(tǒng)都必須了解其他子系統(tǒng)的接口。子系統(tǒng)之間的交互更復(fù)雜,這種交互方式還可能存在通信環(huán)路。 總地說來,單向交互比雙向交互更容易理解,也更容易設(shè)計和修改,因此應(yīng)該盡量使用客戶-供應(yīng)商關(guān)系11.4 系統(tǒng)分解第24頁,共84頁。2. 組織系統(tǒng)的兩種方案(1)層次組織把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是一個子系統(tǒng)。上層在下層的基礎(chǔ)上建立,下層為實現(xiàn)上層功能而提供必要的服務(wù)。每一層內(nèi)所包含的對象,彼此間相互獨立,而處于不同層次上的對象,彼此間往往有關(guān)聯(lián)。在上、下層之間存在客戶-供應(yīng)商關(guān)系。低層相當(dāng)于供應(yīng)商,上層相當(dāng)于客戶。層次結(jié)構(gòu)又可進(jìn)一步劃分成兩種模式:封閉式和開放式。11.4 系統(tǒng)分解第25頁,共84
13、頁。2. 組織系統(tǒng)的兩種方案(2)塊狀組織把軟件系統(tǒng)垂直地分解成若干個相對獨立的、弱耦合的子系統(tǒng)。一個子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)。 利用層次和塊的各種可能的組合,可以成功地把多個子系統(tǒng)組成一個完整的軟件系統(tǒng)。 右圖表示一個混合使用層次與塊狀的的應(yīng)用系統(tǒng)的組織結(jié)構(gòu)。11.4 系統(tǒng)分解第26頁,共84頁。11.4 系統(tǒng)分解2. 組織系統(tǒng)的兩種方案(3)設(shè)計系統(tǒng)的拓?fù)浣Y(jié)構(gòu) 由子系統(tǒng)組成完整的系統(tǒng)時,典型的拓?fù)浣Y(jié)構(gòu)有管道形、樹形、星形等。 設(shè)計者應(yīng)該采用與問題結(jié)構(gòu)相適應(yīng)的、盡可能簡單的拓?fù)浣Y(jié)構(gòu),以減少子系統(tǒng)之間的交互數(shù)量。第27頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)
14、規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第28頁,共84頁。11.5 設(shè)計問題域子系統(tǒng)1. 調(diào)整需求 2. 重用已有的類3. 把問題域類組合在一起4. 添加一般化類以建立協(xié)議5. 調(diào)整繼承類層次6. ATM系統(tǒng)實例 在面向?qū)ο笤O(shè)計過程中,可能對面向?qū)ο蠓治鏊贸龅膯栴}域模型做補充或修改第29頁,共84頁。11.5 設(shè)計問題域子系統(tǒng)1. 調(diào)整需求 用戶需求或外部環(huán)境發(fā)生了變化。分析員對問題域理解不透
15、徹或缺乏領(lǐng)域?qū)<規(guī)椭?,以致面向?qū)ο蠓治瞿P筒荒芡暾?、?zhǔn)確地反映用戶的真實需求。 兩種情況會導(dǎo)致修改通過面向?qū)ο蠓治鏊_定的系統(tǒng)需求第30頁,共84頁。2. 重用已有的類選擇有可能被重用的已有類,標(biāo)出這些候選類中對本問題無用的屬性和服務(wù),盡量重用那些能使無用的屬性和服務(wù)降到最低程度的類。在被重用的已有類和問題域類之間添加泛化關(guān)系(即從被重用的已有類派生出問題域類)。標(biāo)出問題域類中從已有類繼承來的屬性和服務(wù),現(xiàn)在已經(jīng)無須在問題域類內(nèi)定義它們了。修改與問題域類相關(guān)的關(guān)聯(lián),必要時改為與被重用的已有類相關(guān)的關(guān)聯(lián)。如果有可能重用已有的類,則重用已有類的典型過程如下11.5 設(shè)計問題域子系統(tǒng)第31頁,共84
16、頁。3. 把問題域類組合在一起4. 添加一般化類以建立協(xié)議 在面向?qū)ο笤O(shè)計過程中,設(shè)計者往往通過引入一個根類而把問題域類組合在一起。 一些具體類需要有一個公共的協(xié)議,也就是說,它們都需要定義一組類似的服務(wù)(很可能還需要相應(yīng)的屬性)。在這種情況下可以引入一個附加類(例如根類),以便建立這個協(xié)議11.5 設(shè)計問題域子系統(tǒng)第32頁,共84頁。5. 調(diào)整繼承類層次(1) 使用多重繼承機(jī)制 避免屬性及服務(wù)命名沖突窄菱形模式闊菱形模式11.5 設(shè)計問題域子系統(tǒng)第33頁,共84頁。5. 調(diào)整繼承類層次(1) 使用多重繼承機(jī)制11.5 設(shè)計問題域子系統(tǒng) 如果面向?qū)ο蠓治瞿P椭邪硕嘀乩^承關(guān)系,然而所使用的程
17、序設(shè)計語言卻并不提供多重繼承機(jī)制,則必須修改面向?qū)ο蠓治龅慕Y(jié)果。即使使用支持多重繼承的語言,有時也會出于實現(xiàn)考慮而對面向?qū)ο蠓治鼋Y(jié)果作一些調(diào)整。下面分情況討論。窄菱形模式,出現(xiàn)屬性及服務(wù)命名沖突的可能性比較大;闊菱形模式,屬性及服務(wù)的名字發(fā)生沖突的可能性比較小,但是,它需要用更多的類才能表示同一個設(shè)計。第34頁,共84頁。5. 調(diào)整繼承類層次(2) 使用單重繼承機(jī)制 如果打算使用僅提供單繼承機(jī)制的語言實現(xiàn)系統(tǒng),則必須把面向?qū)ο蠓治瞿P椭械亩嘀乩^承結(jié)構(gòu)轉(zhuǎn)換成單繼承結(jié)構(gòu)。 顯然,在多重繼承結(jié)構(gòu)中的某些繼承關(guān)系,經(jīng)簡化后將不再存在,這表明需要在各個具體類中重復(fù)定義某些屬性和服務(wù)。11.5 設(shè)計問題域
18、子系統(tǒng)第35頁,共84頁。6. ATM系統(tǒng)實例 ATM三個子系統(tǒng)為星形拓?fù)浣Y(jié)構(gòu);物理聯(lián)結(jié)用專用電話線實現(xiàn);根據(jù)ATM站號和分行代碼,區(qū)分由每個ATM站和每臺分行計算機(jī)聯(lián)向中央計算機(jī)的電話線。 在面向?qū)ο蠓治鲞^程中已經(jīng)對ATM系統(tǒng)做了相當(dāng)仔細(xì)的分析,而且假設(shè)所使用的實現(xiàn)環(huán)境能完全支持模型的實現(xiàn)。 因此,在設(shè)計階段無須對已有的問題域模型作實質(zhì)性的修改或擴(kuò)充。11.5 設(shè)計問題域子系統(tǒng)第36頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)
19、管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第37頁,共84頁。11.6 設(shè)計人機(jī)交互子系統(tǒng)1. 分類用戶 2. 描述用戶3. 設(shè)計命令層次4. 設(shè)計人機(jī)交互類第38頁,共84頁。1. 分類用戶 為了更好地了解用戶的需要與愛好,以便設(shè)計出符合用戶需要的界面,設(shè)計者首先應(yīng)該把將來可能與系統(tǒng)交互的用戶分類。按技能水平分類(新手、初級、中級、高級)。按職務(wù)分類(總經(jīng)理、經(jīng)理、職員)。按所屬集團(tuán)分類(職員、顧客)。11.6 設(shè)計人機(jī)交互子系統(tǒng)第39頁,共84頁。2. 描述用戶用戶類型。使用系統(tǒng)欲達(dá)到的目的。特征(年齡、性別、受教育程度、限制因素等)。關(guān)鍵的成
20、功因素(需求、愛好、習(xí)慣等)。技能水平。完成本職工作的腳本。了解將來使用系統(tǒng)的每類用戶的情況11.6 設(shè)計人機(jī)交互子系統(tǒng)第40頁,共84頁。3. 設(shè)計命令層次(1) 研究現(xiàn)有的人機(jī)交互含義和準(zhǔn)則基本外觀及給用戶的感受都是相同的每個程序至少有一個窗口,它由標(biāo)題欄標(biāo)識;程序中大多數(shù)功能可通過菜單選用;選中某些菜單項會彈出對話框,用戶可通過它輸入附加信息;廣大用戶習(xí)以為常的許多約定File菜單的最后一個菜單項是Exit;在文件列表框中用鼠標(biāo)單擊某個表項,則相應(yīng)的文件名變亮,若用鼠標(biāo)雙擊則會打開該文件;Windows已經(jīng)成了微機(jī)上圖形用戶界面事實上的工業(yè)標(biāo)準(zhǔn)11.6 設(shè)計人機(jī)交互子系統(tǒng)第41頁,共84
21、頁。3. 設(shè)計命令層次(2) 確定初始的命令層次(3) 精化命令層次所謂命令層次,實質(zhì)上是用過程抽象機(jī)制組織起來的、可供選用的服務(wù)的表示形式。設(shè)計命令層次時,通常先從對服務(wù)的過程抽象著手,然后再進(jìn)一步修改它們,以適合具體應(yīng)用環(huán)境的需要。次序整體-部分關(guān)系寬度和深度操作步驟11.6 設(shè)計人機(jī)交互子系統(tǒng)第42頁,共84頁。4. 設(shè)計人機(jī)交互類人機(jī)交互類與所使用的操作系統(tǒng)及編程語言密切相關(guān) 例如,在Windows環(huán)境下運行的Visual C+語言提供了MFC類庫,設(shè)計人機(jī)交互類時,往往僅需從MFC類庫中選出一些適用的類,然后從這些類派生出符合自己需要的類就可以了。11.6 設(shè)計人機(jī)交互子系統(tǒng)第43頁
22、,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第44頁,共84頁。11.7 設(shè)計任務(wù)管理子系統(tǒng)1. 分析并發(fā)性 設(shè)計工作的一項重要內(nèi)容就是,確定哪些是必須同時動作的對象,哪些是相互排斥的對象。然后進(jìn)一步設(shè)計任務(wù)管理子系統(tǒng)。如果兩個對象彼此間不存在交互,或者它們同時接受事件,則這兩個對象在本質(zhì)上是并發(fā)的。通過檢查各個對象的狀態(tài)圖及它們之間交換的事件
23、,能夠把若干個非并發(fā)的對象歸并到一條控制線中。在計算機(jī)系統(tǒng)中用任務(wù)(task)實現(xiàn)控制線,一般認(rèn)為任務(wù)是進(jìn)程(process)的別名。通常把多個任務(wù)的并發(fā)執(zhí)行稱為多任務(wù)。劃分任務(wù),可以簡化系統(tǒng)的設(shè)計及編碼工作。這種并發(fā)行為既可以在不同的處理器上實現(xiàn),也可以在單個處理器上利用多任務(wù)操作系統(tǒng)仿真實現(xiàn)。第45頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)(1) 確定事件驅(qū)動型任務(wù)(2) 確定時鐘驅(qū)動型任務(wù)(3) 確定優(yōu)先任務(wù)(4) 確定關(guān)鍵任務(wù)(5) 確定協(xié)調(diào)任務(wù)(6) 盡量減少任務(wù)數(shù)(7) 確定資源需求11.7 設(shè)計任務(wù)管理子系統(tǒng)第46頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)(1) 確定事件驅(qū)動型任務(wù)事件驅(qū)
24、動任務(wù)可能主要完成通信工作工作過程如下:任務(wù)處于睡眠狀態(tài)(不消耗處理器時間),等待來自數(shù)據(jù)線或其他數(shù)據(jù)源的中斷;接收到中斷喚醒該任務(wù),接收數(shù)據(jù)并放入內(nèi)存緩沖區(qū)或其他目的地,通知需要知道這件事的對象;該任務(wù)又回到睡眠狀態(tài)。11.7 設(shè)計任務(wù)管理子系統(tǒng)第47頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)(2) 確定時鐘驅(qū)動型任務(wù)任務(wù)每隔一定時間間隔就被觸發(fā)以執(zhí)行某些處理工作過程如下:任務(wù)設(shè)置了喚醒時間后進(jìn)入睡眠狀態(tài);任務(wù)睡眠(不消耗處理器時間),等待來自系統(tǒng)的中斷;一旦接收到這種中斷,任務(wù)就被喚醒并做它的工作,通知有關(guān)的對象,然后該任務(wù)又回到睡眠狀態(tài)。11.7 設(shè)計任務(wù)管理子系統(tǒng)第48頁,共84頁。2.
25、設(shè)計任務(wù)管理子系統(tǒng)(3) 確定優(yōu)先任務(wù)優(yōu)先任務(wù)可以滿足高優(yōu)先級或低優(yōu)先級的處理需求高優(yōu)先級:某些服務(wù)具有很高的優(yōu)先級,為了在嚴(yán)格限定的時間內(nèi)完成這種服務(wù),可能需要把這類服務(wù)分離成獨立的任務(wù)。低優(yōu)先級:與高優(yōu)先級相反,有些服務(wù)是低優(yōu)先級的,屬于低優(yōu)先級處理(通常指那些背景處理)。設(shè)計時可能用額外的任務(wù)把這樣的處理分離出來。11.7 設(shè)計任務(wù)管理子系統(tǒng)第49頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)(4) 確定關(guān)鍵任務(wù)關(guān)鍵任務(wù)是有關(guān)系統(tǒng)成功或失敗的關(guān)鍵處理,這類處理通常都有嚴(yán)格的可靠性要求。在設(shè)計過程中可能用額外的任務(wù)把這樣的關(guān)鍵處理分離出來,以滿足高可靠性處理的要求。對高可靠性處理應(yīng)該精心設(shè)計和編碼
26、,并且應(yīng)該嚴(yán)格測試。11.7 設(shè)計任務(wù)管理子系統(tǒng)第50頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)(5) 確定協(xié)調(diào)任務(wù)當(dāng)系統(tǒng)中存在3個以上任務(wù)時,就應(yīng)該增加一個任務(wù),用它作為協(xié)調(diào)任務(wù)。引入?yún)f(xié)調(diào)任務(wù)會增加系統(tǒng)的總開銷(增加從一個任務(wù)到另一個任務(wù)的轉(zhuǎn)換時間),但是引入?yún)f(xié)調(diào)任務(wù)有助于把不同任務(wù)之間的協(xié)調(diào)控制封裝起來。使用狀態(tài)轉(zhuǎn)換矩陣可以比較方便地描述該任務(wù)的行為。這類任務(wù)應(yīng)該僅做協(xié)調(diào)工作,不要讓它再承擔(dān)其他服務(wù)工作。11.7 設(shè)計任務(wù)管理子系統(tǒng)第51頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)(6) 盡量減少任務(wù)數(shù)(7) 確定資源需求 必須仔細(xì)分析和選擇每個確實需要的任務(wù),使系統(tǒng)中包含的任務(wù)數(shù)盡量少。 使用多處
27、理器或固件,主要是為了滿足高性能的需求。設(shè)計者必須通過計算系統(tǒng)載荷(即每秒處理的業(yè)務(wù)數(shù)及處理一個業(yè)務(wù)所花費的時間),來估算所需要的CPU(或其他固件)的處理能力。11.7 設(shè)計任務(wù)管理子系統(tǒng)第52頁,共84頁。2. 設(shè)計任務(wù)管理子系統(tǒng)使用硬件實現(xiàn)某些子系統(tǒng)的主要原因可能是:現(xiàn)有的硬件完全能滿足某些方面的需求,例如,買一塊浮點運算卡比用軟件實現(xiàn)浮點運算要容易得多。專用硬件比通用的CPU性能更高。例如,目前在信號處理系統(tǒng)中廣泛使用固件實現(xiàn)快速傅里葉變換。 設(shè)計者應(yīng)該綜合考慮各種因素,以決定哪些子系統(tǒng)用硬件實現(xiàn),哪些子系統(tǒng)用軟件實現(xiàn)。 設(shè)計者在決定到底采用軟件還是硬件的時候,必須綜合權(quán)衡一致性、成本
28、、性能等多種因素,還要考慮未來的可擴(kuò)充性和可修改性。11.7 設(shè)計任務(wù)管理子系統(tǒng)第53頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第54頁,共84頁。11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)11.8.1 選擇數(shù)據(jù)存儲管理模式 數(shù)據(jù)管理子系統(tǒng)是系統(tǒng)存儲或檢索對象的基本設(shè)施,它建立在某種數(shù)據(jù)存儲管理系統(tǒng)之上,并且隔離了數(shù)據(jù)存儲管理模式(文件、關(guān)系數(shù)據(jù)庫或面向
29、對象數(shù)據(jù)庫)的影響。1. 文件管理系統(tǒng)文件管理系統(tǒng)是操作系統(tǒng)的一個組成部分,使用它長期保存數(shù)據(jù)具有成本低和簡單等特點,但是,文件操作的級別低,為提供適當(dāng)?shù)某橄蠹墑e還必須編寫額外的代碼。此外,不同操作系統(tǒng)的文件管理系統(tǒng)往往有明顯差異。第55頁,共84頁。2. 關(guān)系數(shù)據(jù)庫管理系統(tǒng)關(guān)系數(shù)據(jù)庫管理系統(tǒng)的理論基礎(chǔ)是關(guān)系代數(shù),它不僅理論基礎(chǔ)堅實而且有下列一些主要優(yōu)點提供了各種最基本的數(shù)據(jù)管理功能為多種應(yīng)用提供了一致的接口標(biāo)準(zhǔn)化的語言(SQL語言)為了做到通用與一致,關(guān)系數(shù)據(jù)庫管理系統(tǒng)通常都相當(dāng)復(fù)雜,且有下述一些具體缺點(1) 運行開銷大(2) 不能滿足高級應(yīng)用的需求 (3) 與程序設(shè)計語言的連接不自然11
30、.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)第56頁,共84頁。3. 面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)主要有兩種設(shè)計途徑擴(kuò)展的關(guān)系數(shù)據(jù)庫管理系統(tǒng) (1)在關(guān)系數(shù)據(jù)庫的基礎(chǔ)上,增加了抽象數(shù)據(jù)類型和繼承機(jī)制。 (2)增加了創(chuàng)建及管理類和對象的通用服務(wù)。擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計語言 (1)擴(kuò)充了面向?qū)ο蟪绦蛟O(shè)計語言的語法和功能,增加了在數(shù)據(jù) 庫中存儲和管理對象的機(jī)制。 (2)開發(fā)人員可以用統(tǒng)一的面向?qū)ο笥^點進(jìn)行設(shè)計,不再需要區(qū)分存儲數(shù)據(jù)結(jié)構(gòu)和程序數(shù)據(jù)結(jié)構(gòu)(即生命期短暫的數(shù)據(jù))。11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)第57頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)
31、分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第58頁,共84頁。11.9 設(shè)計類中的服務(wù)11.9.1 確定類中應(yīng)有的服務(wù) 面向?qū)ο蠓治龅贸龅膶ο竽P?,通常并不詳?xì)描述類中的服務(wù)。面向?qū)ο笤O(shè)計則是擴(kuò)充、完善和細(xì)化面向?qū)ο蠓治瞿P偷倪^程,設(shè)計類中的服務(wù)是它的一項重要工作內(nèi)容。 確定類中應(yīng)有的服務(wù)需要綜合考慮對象模型、動態(tài)模型和功能模型,才能正確確定類中應(yīng)有的服務(wù)。對象模型是進(jìn)行對象設(shè)計的基本框架。第59頁,共84頁。一張狀態(tài)圖描繪了一類對象的生
32、命周期,圖中的狀態(tài)轉(zhuǎn)換是執(zhí)行對象服務(wù)的結(jié)果。功能模型指明了系統(tǒng)必須提供的服務(wù)。狀態(tài)圖中狀態(tài)轉(zhuǎn)換所觸發(fā)的動作,在功能模型中有時可能擴(kuò)展成一張數(shù)據(jù)流圖。數(shù)據(jù)流圖中的某些處理可能與對象提供的服務(wù)相對應(yīng),有一些規(guī)則有助于確定操作的目標(biāo)對象(即應(yīng)該在該對象所屬的類中定義這個服務(wù))。當(dāng)一個處理涉及多個對象時,通常在起主要作用的對象類中定義這個服務(wù)。11.9 設(shè)計類中的服務(wù)第60頁,共84頁。11.9.2 設(shè)計實現(xiàn)服務(wù)的方法1. 設(shè)計實現(xiàn)服務(wù)的算法應(yīng)該考慮下列幾個因素:算法復(fù)雜度。 通常選用復(fù)雜度較低(即效率較高)的算法,但也不要過分追求高效率,應(yīng)以能滿足用戶需求為準(zhǔn)。(2) 容易理解與容易實現(xiàn)。 容易理解
33、與容易實現(xiàn)的要求往往與高效率有矛盾,設(shè)計者應(yīng)該對這兩個因素適當(dāng)折衷。(3) 易修改。 應(yīng)該盡可能預(yù)測將來可能做的修改,并在設(shè)計時預(yù)先做些準(zhǔn)備。11.9 設(shè)計類中的服務(wù)第61頁,共84頁。2. 選擇數(shù)據(jù)結(jié)構(gòu) 在分析階段,僅需考慮系統(tǒng)中需要的信息的邏輯結(jié)構(gòu),在面向?qū)ο笤O(shè)計過程中,則需要選擇能夠方便、有效地實現(xiàn)算法的物理數(shù)據(jù)結(jié)構(gòu)。3. 算法與數(shù)據(jù)結(jié)構(gòu)的關(guān)系 設(shè)計階段是解決“怎么做”的時候了,因此,確定實現(xiàn)服務(wù)方法中所需要的算法與數(shù)據(jù)結(jié)構(gòu)是非常關(guān)鍵的。主要考慮下列因素:(1) 分析問題尋找數(shù)據(jù)特點,提煉出所有可行有效的算法;(2) 定義與所提煉算法相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu);(3) 依據(jù)此數(shù)據(jù)結(jié)構(gòu)進(jìn)行算法的詳細(xì)
34、設(shè)計;(4) 進(jìn)行一定規(guī)模的實驗與評測;(5) 確定最佳設(shè)計。11.9 設(shè)計類中的服務(wù)第62頁,共84頁。4. 定義內(nèi)部類和內(nèi)部操作 在面向?qū)ο笤O(shè)計過程中,可能需要增添一些在需求陳述中沒有提到的類,這些新增加的類,主要用來存放在執(zhí)行算法過程中所得出的某些中間結(jié)果。 此外,復(fù)雜操作往往可以用簡單對象上的更低層操作來定義。因此,在分解高層操作時常常引入新的低層操作。在面向?qū)ο笤O(shè)計過程中應(yīng)該定義這些新增加的低層操作。11.9 設(shè)計類中的服務(wù)第63頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互
35、子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第64頁,共84頁。11.10 設(shè)計關(guān)聯(lián)1. 關(guān)聯(lián)的遍歷2. 實現(xiàn)單向關(guān)聯(lián)3. 實現(xiàn)雙向關(guān)聯(lián)4. 關(guān)聯(lián)對象的實現(xiàn) 在對象模型中,關(guān)聯(lián)是聯(lián)結(jié)不同對象的紐帶,它指定了對象相互間的訪問路徑。在面向?qū)ο笤O(shè)計過程中,設(shè)計人員必須確定實現(xiàn)關(guān)聯(lián)的具體策略。既可以選定一個全局性的策略統(tǒng)一實現(xiàn)所有關(guān)聯(lián),也可以分別為每個關(guān)聯(lián)選擇具體的實現(xiàn)策略,以與它在應(yīng)用系統(tǒng)中的使用方式相適應(yīng)。第65頁,共84頁。11.10 設(shè)計關(guān)聯(lián)1. 關(guān)聯(lián)的遍歷2. 實現(xiàn)單向關(guān)聯(lián)在應(yīng)用系統(tǒng)中,使用關(guān)
36、聯(lián)有兩種可能的方式:單向遍歷和雙向遍歷。在使用原型法開發(fā)軟件的時候,原型中所有關(guān)聯(lián)都應(yīng)該是雙向的,以便于增加新的行為,快速地擴(kuò)充和修改原型。 用指針可以方便地實現(xiàn)單向關(guān)聯(lián)。如果關(guān)聯(lián)的重數(shù)是一元的(如圖a所示),則實現(xiàn)關(guān)聯(lián)的指針是一個簡單指針;如果重數(shù)是多元的,則需要用一個指針集合實現(xiàn)關(guān)聯(lián)(參見圖b)。第66頁,共84頁。11.10 設(shè)計關(guān)聯(lián)3. 實現(xiàn)雙向關(guān)聯(lián)實現(xiàn)雙向關(guān)聯(lián)有下列3種方法:(1)只用屬性實現(xiàn)一個方向的關(guān)聯(lián) 當(dāng)需要反向遍歷時就執(zhí)行一次正向查找。如果兩個方向遍歷的頻度相差很大,而且需要盡量減少存儲開銷和修改時的開銷,則這是一種很有效的實現(xiàn)雙向關(guān)聯(lián)的方法。(2)兩個方向的關(guān)聯(lián)都用屬性實現(xiàn)
37、 這種方法能實現(xiàn)快速訪問,但是,如果修改了一個屬性,則相關(guān)的屬性也必須隨之修改,才能保持該關(guān)聯(lián)鏈的一致性。當(dāng)訪問次數(shù)遠(yuǎn)遠(yuǎn)多于修改次數(shù)時,這種實現(xiàn)方法很有效。第67頁,共84頁。11.10 設(shè)計關(guān)聯(lián)3. 實現(xiàn)雙向關(guān)聯(lián)實現(xiàn)雙向關(guān)聯(lián)有下列3種方法:(3)用獨立的關(guān)聯(lián)對象實現(xiàn)雙向關(guān)聯(lián) 關(guān)聯(lián)對象不屬于相互關(guān)聯(lián)的任何一個類,它是獨立的關(guān)聯(lián)類的實例。如右圖所示。第68頁,共84頁。11.10 設(shè)計關(guān)聯(lián)4. 關(guān)聯(lián)對象的實現(xiàn)對于一對一關(guān)聯(lián)來說,關(guān)聯(lián)對象可以與參與關(guān)聯(lián)的任一個對象合并。對于一對多關(guān)聯(lián)來說,關(guān)聯(lián)對象可以與“多”端對象合并如果是多對多關(guān)聯(lián),則關(guān)聯(lián)鏈的性質(zhì)不可能只與一個參與關(guān)聯(lián)的對象有關(guān),通常用一個獨立
38、的關(guān)聯(lián)類來保存描述關(guān)聯(lián)性質(zhì)的信息,這個類的每個實例表示一條具體的關(guān)聯(lián)鏈及該鏈的屬性(參見上頁圖)。 9.4.2節(jié)曾經(jīng)講過,可以引入一個關(guān)聯(lián)類來保存描述關(guān)聯(lián)性質(zhì)的信息,關(guān)聯(lián)中的每個連接對應(yīng)著關(guān)聯(lián)類的一個對象。實現(xiàn)關(guān)聯(lián)對象的方法取決于關(guān)聯(lián)的重數(shù)。第69頁,共84頁。 11.1 面向?qū)ο笤O(shè)計的準(zhǔn)則 11.2 啟發(fā)規(guī)則 11.3 軟件重用 11.4 系統(tǒng)分解 11.5 設(shè)計問題域子系統(tǒng) 11.6 設(shè)計人機(jī)交互子系統(tǒng) 11.7 設(shè)計任務(wù)管理子系統(tǒng) 11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng) 11.9 設(shè)計類中的服務(wù) 11.10 設(shè)計關(guān)聯(lián) 11.11 設(shè)計優(yōu)化主要內(nèi)容第70頁,共84頁。11.11 設(shè)計優(yōu)化11.11.
39、1 確定優(yōu)先級11.11.2 提高效率的幾項技術(shù)11.11.3 調(diào)整繼承關(guān)系第71頁,共84頁。11.11.1 確定優(yōu)先級 系統(tǒng)的各項質(zhì)量指標(biāo)并不是同等重要的,設(shè)計人員必須確定各項質(zhì)量指標(biāo)的相對重要性(即確定優(yōu)先級),以便在優(yōu)化設(shè)計時制定折衷方案。系統(tǒng)的整體質(zhì)量與設(shè)計人員所制定的折衷方案密切相關(guān)。最終產(chǎn)品成功與否,在很大程度上取決于是否選擇好了系統(tǒng)目標(biāo)。在折衷方案中設(shè)置的優(yōu)先級應(yīng)該是模糊的。事實上,不可能指定精確的優(yōu)先級數(shù)值(例如速度48%,內(nèi)存25%,費用8%,可修改性19%)。最常見的情況,是在效率和清晰性之間尋求適當(dāng)?shù)恼壑苑桨浮?下面兩小節(jié)分別講述在優(yōu)化設(shè)計時提高效率的技術(shù),以及建立良好
40、的繼承結(jié)構(gòu)的方法。11.11 設(shè)計優(yōu)化第72頁,共84頁。11.11.2 提高效率的幾項技術(shù)1. 增加冗余關(guān)聯(lián)以提高訪問效率在面向?qū)ο蠓治鲞^程中,應(yīng)該避免在對象模型中存在冗余的關(guān)聯(lián),因為冗余關(guān)聯(lián)不僅沒有增添任何信息,反而會降低模型的清晰程度。但是,在面向?qū)ο笤O(shè)計過程中,當(dāng)考慮用戶的訪問模式,及不同類型的訪問彼此間的依賴關(guān)系時,就會發(fā)現(xiàn),分析階段確定的關(guān)聯(lián)可能并沒有構(gòu)成效率最高的訪問路徑。下面用設(shè)計公司雇員技能數(shù)據(jù)庫的例子,說明分析訪問路徑及提高訪問效率的方法。11.11 設(shè)計優(yōu)化第73頁,共84頁。 下圖是從面向?qū)ο蠓治瞿P椭姓〉囊徊糠?。公司類中的服?wù)find_skill返回具有指定技能的雇
41、員集合。例如,用戶可能詢問公司中會講日語的雇員有哪些人。假設(shè)某公司共有2000名雇員,平均每名雇員會10種技能,則簡單的嵌套查詢將遍歷雇員對象2000次,針對每名雇員平均再遍歷技能對象10次。如果全公司僅有5名雇員精通日語,則查詢命中率僅有1/4000。提高訪問效率的一種方法是使用哈希(Hash)表:“具有技能”這個關(guān)聯(lián)不再利用無序表實現(xiàn),而是改用哈希表實現(xiàn)。只要“會講日語”是用唯一一個技能對象表示,這樣改進(jìn)后就會使查詢次數(shù)由20000次減少到2000次。第74頁,共84頁。 但是,當(dāng)僅有極少數(shù)對象滿足查詢條件時,查詢命中率仍然很低。在這種情況下,更有效的提高查詢效率的改進(jìn)方法是,給那些需要經(jīng)
42、常查詢的對象建立索引。 例如,針對上述例子,可以增加一個額外的限定關(guān)聯(lián)“精通語言”,用來聯(lián)系公司與雇員這兩類對象,如下圖所示。利用適當(dāng)?shù)娜哂嚓P(guān)聯(lián),可以立即查到精通某種具體語言的雇員,而無須多余的訪問。當(dāng)然,索引也必然帶來開銷:占用內(nèi)存空間,而且每當(dāng)修改基關(guān)聯(lián)時也必須相應(yīng)地修改索引。因此,應(yīng)該只給那些經(jīng)常執(zhí)行并且開銷大、命中率低的查詢建立索引。第75頁,共84頁。2. 調(diào)整查詢次序 優(yōu)化算法的一個途徑是盡量縮小查找范圍。 例如,假設(shè)用戶在使用上述的雇員技能數(shù)據(jù)庫的過程中,希望找出既會講日語又會講法語的所有雇員。如果某公司只有5位雇員會講日語,會講法語的雇員卻有200人,則應(yīng)該先查找會講日語的雇員
43、,然后再從這些會講日語的雇員中查找同時又會講法語的人。 改進(jìn)了對象模型的結(jié)構(gòu),從而優(yōu)化了常用的遍歷之后,接下來就應(yīng)該優(yōu)化算法了。11.11 設(shè)計優(yōu)化第76頁,共84頁。3.保留派生屬性通過某種運算而從其他數(shù)據(jù)派生出來的數(shù)據(jù),是一種冗余數(shù)據(jù)。通常把這類數(shù)據(jù)“存儲”(或稱為“隱藏”)在計算它的表達(dá)式中。如果希望避免重復(fù)計算復(fù)雜表達(dá)式所帶來的開銷,可以把這類冗余數(shù)據(jù)作為派生屬性保存起來。派生屬性既可以在原有類中定義,也可以定義新類,并用新類的對象保存它們。每當(dāng)修改了基本對象之后,所有依賴于它的、保存派生屬性的對象也必須相應(yīng)地修改。11.11 設(shè)計優(yōu)化第77頁,共84頁。11.11.3 調(diào)整繼承關(guān)系抽象與具體為提高繼承程度而修改類定義利用委托實現(xiàn)行為共享在面向?qū)ο笤O(shè)計過程中,建立良好的繼承關(guān)系是優(yōu)化設(shè)計的一項重要內(nèi)容。繼承關(guān)系能夠為一個類族定義一個協(xié)議,并能在類之間實現(xiàn)代碼共享
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《幾何基礎(chǔ):空間幾何習(xí)題講解與練習(xí)》
- 承包個人餐廳協(xié)議
- 工程例會制度完整版
- 2025年宿州蕭縣交通投資有限責(zé)任公司招聘6人筆試參考題庫附帶答案詳解
- 2024-2025學(xué)年第二學(xué)期天域全國名校協(xié)作體高三3月聯(lián)考 生物試卷(含答案)
- 2025年上半年安徽蕪湖鳩江區(qū)所屬事業(yè)單位招聘擬聘用人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省馬鞍山市博望區(qū)政府部門招聘派遣制人員14人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年火車制品項目資金申請報告代可行性研究報告
- 2025年上半年安徽皖維集團(tuán)限責(zé)任公司招聘1名易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年溶栓藥項目資金需求報告代可行性研究報告
- 2024年人力資源管理師三級考試真題及答案
- 2024年中國遠(yuǎn)洋海運集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 商品房施工組織設(shè)計
- 科目一知識大全課件
- 2016-2023年大慶醫(yī)學(xué)高等專科學(xué)校高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 泛微協(xié)同OA與SAP集成應(yīng)用解決方案V講訴
- 探討電磁感應(yīng)現(xiàn)象對電能轉(zhuǎn)化效率的影響
- EHS法律法規(guī)清單及合規(guī)性評估
- 橋梁定期檢查-主要部件檢查要點與評定標(biāo)準(zhǔn)
- 長途汽車客運站調(diào)研報告
- 陜西各市(精確到縣區(qū))地圖PPT課件(可編輯版)
評論
0/150
提交評論