面向對象設計_第1頁
面向對象設計_第2頁
面向對象設計_第3頁
面向對象設計_第4頁
面向對象設計_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第第11章章 面向對象設計面向對象設計11.1 面向對象設計的準則面向對象設計的準則11.2 啟發(fā)規(guī)則啟發(fā)規(guī)則11.3 軟件重用軟件重用11.4 系統(tǒng)分解系統(tǒng)分解11.5 設計問題域子系統(tǒng)設計問題域子系統(tǒng)11.6 設計人機交互子系統(tǒng)設計人機交互子系統(tǒng)11.7 設計任務管理子系統(tǒng)設計任務管理子系統(tǒng)11.8 設計數(shù)據(jù)管理子系統(tǒng)設計數(shù)據(jù)管理子系統(tǒng)11.9 設計類中的服務設計類中的服務11.10 設計關聯(lián)設計關聯(lián)11.11 設計優(yōu)化設計優(yōu)化11.1 面向對象設計的準則面向對象設計的準則n所謂優(yōu)秀設計,就是權衡了各種因素,從而所謂優(yōu)秀設計,就是權衡了各種因素,從而使得系統(tǒng)在其整個生命周期中的總開銷最小使

2、得系統(tǒng)在其整個生命周期中的總開銷最小的設計。的設計。n對大多數(shù)軟件系統(tǒng)而言,對大多數(shù)軟件系統(tǒng)而言,60%以上的軟件費以上的軟件費用都用于軟件維護,因此,優(yōu)秀軟件設計的用都用于軟件維護,因此,優(yōu)秀軟件設計的一個主要特點就是容易維護。一個主要特點就是容易維護。 n設計準則有設計準則有6條。條。1. 模塊化模塊化n對象就是模塊。它是把數(shù)據(jù)結構和操作這些對象就是模塊。它是把數(shù)據(jù)結構和操作這些數(shù)據(jù)的方法緊密地結合在一起所構成的模塊。數(shù)據(jù)的方法緊密地結合在一起所構成的模塊。2. 抽象抽象n面向對象方法不僅支持過程抽象,而且支持面向對象方法不僅支持過程抽象,而且支持數(shù)據(jù)抽象。數(shù)據(jù)抽象。3. 信息隱藏信息隱藏

3、n在面向對象方法中,信息隱藏通過對象的封在面向對象方法中,信息隱藏通過對象的封裝性實現(xiàn)。裝性實現(xiàn)。4. 弱耦合弱耦合n耦合指不同對象之間相互關聯(lián)的緊密程度。耦合指不同對象之間相互關聯(lián)的緊密程度。n一般說來,對象之間的耦合可分為兩大類:一般說來,對象之間的耦合可分為兩大類:q交互耦合交互耦合n如果對象之間的耦合通過消息連接來實現(xiàn),則這種耦合如果對象之間的耦合通過消息連接來實現(xiàn),則這種耦合就是交互耦合。就是交互耦合。n交互耦合應盡可能松散交互耦合應盡可能松散 。q繼承耦合繼承耦合n與交互耦合相反,應該提高繼承耦合程度。與交互耦合相反,應該提高繼承耦合程度。n繼承是一般化類與特殊類之間耦合的一種形式

4、。通過繼繼承是一般化類與特殊類之間耦合的一種形式。通過繼承關系結合起來的基類和派生類,構成了系統(tǒng)中粒度更承關系結合起來的基類和派生類,構成了系統(tǒng)中粒度更大的模塊。彼此之間應該越緊密越好。大的模塊。彼此之間應該越緊密越好。5. 強內(nèi)聚強內(nèi)聚n內(nèi)聚衡量一個模塊內(nèi)各個元素彼此結合的緊密程度。內(nèi)聚衡量一個模塊內(nèi)各個元素彼此結合的緊密程度。n內(nèi)聚定義為:設計中使用的一個構件內(nèi)的各個元素,內(nèi)聚定義為:設計中使用的一個構件內(nèi)的各個元素,對完成一個定義明確的目的所做出的貢獻程度。對完成一個定義明確的目的所做出的貢獻程度。n在設計時應該力求做到高內(nèi)聚。在設計時應該力求做到高內(nèi)聚。n在面向對象設計中存在下述在面向

5、對象設計中存在下述3種內(nèi)聚:種內(nèi)聚:q服務內(nèi)聚。一個服務應該完成一個且僅完成一個功能。服務內(nèi)聚。一個服務應該完成一個且僅完成一個功能。q類內(nèi)聚。一個類應該只有一個用途,它的屬性和服務應該類內(nèi)聚。一個類應該只有一個用途,它的屬性和服務應該是高內(nèi)聚的。是高內(nèi)聚的。q一般一般-特殊內(nèi)聚。設計出的一般特殊內(nèi)聚。設計出的一般-特殊結構,應該符合多數(shù)人特殊結構,應該符合多數(shù)人的概念。的概念。6. 可重用可重用n軟件重用是提高軟件開發(fā)生產(chǎn)率和目標系統(tǒng)軟件重用是提高軟件開發(fā)生產(chǎn)率和目標系統(tǒng)質(zhì)量的重要途徑。質(zhì)量的重要途徑。n重用基本上從設計階段開始。重用基本上從設計階段開始。n重用有兩方面的含義:重用有兩方面的

6、含義:q一是盡量使用已有的類一是盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類),q二是如果確實需要創(chuàng)建新類,則在設計這些新類二是如果確實需要創(chuàng)建新類,則在設計這些新類的協(xié)議時,應該考慮將來的可重復使用性。的協(xié)議時,應該考慮將來的可重復使用性。 11.2 啟發(fā)規(guī)則啟發(fā)規(guī)則1. 設計結果應該清晰易懂設計結果應該清晰易懂n用詞一致。用詞一致。n使用已有的協(xié)議。使用已有的協(xié)議。n減少消息模式的數(shù)目。減少消息模式的數(shù)目。n避免模糊的定義。避免模糊的定義。2. 一般一般-特殊結構的深度應適當特殊結構的深度應適當n應該使類等級中包

7、含的層次數(shù)適當。一般說應該使類等級中包含的層次數(shù)適當。一般說來,在一個中等規(guī)模來,在一個中等規(guī)模(大約包含大約包含100個類個類)的系的系統(tǒng)中,類等級層次數(shù)應保持為統(tǒng)中,類等級層次數(shù)應保持為72。3. 設計簡單的類設計簡單的類n應該盡量設計小而簡單的類,以便于開發(fā)和應該盡量設計小而簡單的類,以便于開發(fā)和管理。管理。n為使類保持簡單,應該注意以下幾點:為使類保持簡單,應該注意以下幾點:q避免包含過多的屬性。避免包含過多的屬性。 q有明確的定義。有明確的定義。q盡量簡化對象之間的合作關系。盡量簡化對象之間的合作關系。q不要提供太多服務。不要提供太多服務。q在開發(fā)大型軟件系統(tǒng)時,設計出大量較小的類,

8、在開發(fā)大型軟件系統(tǒng)時,設計出大量較小的類,需要劃分需要劃分“主題主題”。 4. 使用簡單的協(xié)議使用簡單的協(xié)議n一般說來,消息中的參數(shù)不要超過一般說來,消息中的參數(shù)不要超過3個。當然,個。當然,不超過不超過3個的限制也不是絕對的。個的限制也不是絕對的。 5. 使用簡單的服務使用簡單的服務n一般說來,應該盡量避免使用復雜的服務。一般說來,應該盡量避免使用復雜的服務。n如果一個服務中包含了過多的源程序語句,如果一個服務中包含了過多的源程序語句,或者語句嵌套層次太多,或者使用了復雜的或者語句嵌套層次太多,或者使用了復雜的CASE語句,則應該仔細檢查這個服務,設語句,則應該仔細檢查這個服務,設法分解或簡

9、化它,考慮用一般法分解或簡化它,考慮用一般-特殊結構代替。特殊結構代替。6. 把設計變動減至最小把設計變動減至最小n出現(xiàn)必須修改設計的情況,應該使修改的范出現(xiàn)必須修改設計的情況,應該使修改的范圍盡可能小。圍盡可能小。理想的設計變動情況理想的設計變動情況11.3 軟件重用軟件重用11.3.1 概述概述1. 重用重用n重用也叫再用或復用,是指同一事物不作修重用也叫再用或復用,是指同一事物不作修改或稍加改動就多次重復使用。改或稍加改動就多次重復使用。n廣義地說,軟件重用可分為以下廣義地說,軟件重用可分為以下3個層次:個層次:q知識重用知識重用(軟件工程知識的重用軟件工程知識的重用)。q方法和標準的重

10、用方法和標準的重用(面向對象方法或國家制定的軟面向對象方法或國家制定的軟件開發(fā)規(guī)范的重用件開發(fā)規(guī)范的重用)。q軟件成分的重用。軟件成分的重用。2. 軟件成分的重用級別軟件成分的重用級別n代碼重用:代碼重用:通常把它理解為調(diào)用庫中的模塊。通常把它理解為調(diào)用庫中的模塊。代碼重用的幾種形式:代碼重用的幾種形式:q源代碼剪貼源代碼剪貼q源代碼包含源代碼包含q繼承繼承n設計結果重用:設計結果重用:重用某個軟件系統(tǒng)的設計模重用某個軟件系統(tǒng)的設計模型型(即求解域模型即求解域模型)。這個級別的重用有助于。這個級別的重用有助于把一個應用系統(tǒng)移植到完全不同的軟硬件平把一個應用系統(tǒng)移植到完全不同的軟硬件平臺上。臺上

11、。n分析結果重用:分析結果重用:重用某個系統(tǒng)的分析模型。重用某個系統(tǒng)的分析模型。這種重用特別適用于用戶需求未改變,但系這種重用特別適用于用戶需求未改變,但系統(tǒng)體系結構發(fā)生了根本變化的場合。統(tǒng)體系結構發(fā)生了根本變化的場合。 3. 典型的可重用軟件成分典型的可重用軟件成分n項目計劃項目計劃 n成本估計成本估計n體系結構體系結構n需求模型和規(guī)格說明需求模型和規(guī)格說明n設計設計n源代碼源代碼 n用戶文檔和技術文檔用戶文檔和技術文檔n用戶界面用戶界面n數(shù)據(jù)數(shù)據(jù)n測試用例測試用例11.3.2 類構件類構件n面向對象技術中的面向對象技術中的“類類”,是比較理想的可,是比較理想的可重用軟構件,稱之為類構件。重

12、用軟構件,稱之為類構件。1. 可重用軟構件應具備的特點可重用軟構件應具備的特點q模塊獨立性強模塊獨立性強 q具有高度可塑性具有高度可塑性q接口清晰、簡明、可靠接口清晰、簡明、可靠n精心設計的精心設計的“類類”基本上能滿足上述要求,基本上能滿足上述要求,可以認為它是可重用軟構件的雛形??梢哉J為它是可重用軟構件的雛形。 2. 類構件的重用方式類構件的重用方式n實例重用實例重用q由于類的封裝性,使用者無須了解實現(xiàn)細節(jié)就可由于類的封裝性,使用者無須了解實現(xiàn)細節(jié)就可以使用適當?shù)臉嬙旌瘮?shù),按照需要創(chuàng)建類的實例。以使用適當?shù)臉嬙旌瘮?shù),按照需要創(chuàng)建類的實例。這是最基本的重用方式。這是最基本的重用方式。n繼承重

13、用繼承重用q繼承重用提供了一種安全地修改已有類構件,以繼承重用提供了一種安全地修改已有類構件,以便在當前系統(tǒng)中重用的手段。便在當前系統(tǒng)中重用的手段。n多態(tài)重用多態(tài)重用q利用多態(tài)性不僅可以使對象的對外接口更加一般利用多態(tài)性不僅可以使對象的對外接口更加一般化,從而降低了消息連接的復雜程度,而且還提化,從而降低了消息連接的復雜程度,而且還提供了一種簡便可靠的軟構件組合機制。供了一種簡便可靠的軟構件組合機制。 11.3.3 軟件重用的效益軟件重用的效益1. 質(zhì)量質(zhì)量n隨著每一次重用,都會有一些錯誤被發(fā)現(xiàn)并被清除,隨著每一次重用,都會有一些錯誤被發(fā)現(xiàn)并被清除,構件的質(zhì)量也會隨之改善。構件的質(zhì)量也會隨之改

14、善。2. 生產(chǎn)率生產(chǎn)率n當把可重用的軟件成分應用于軟件開發(fā)的全過程時,當把可重用的軟件成分應用于軟件開發(fā)的全過程時,生產(chǎn)率得到了提高?;旧仙a(chǎn)率得到了提高?;旧?0%50%的重用大約可的重用大約可以導致生產(chǎn)率提高以導致生產(chǎn)率提高25%40%。3. 成本成本n凈成本節(jié)省可以用下式估算:凈成本節(jié)省可以用下式估算:C=Cs-Cr-Cdn其中,其中,Cs是項目從頭開發(fā)所需要的成本;是項目從頭開發(fā)所需要的成本;Cr是與重是與重用相關聯(lián)的成本;用相關聯(lián)的成本;Cd是交付給客戶的軟件的實際成是交付給客戶的軟件的實際成本。本。11.4 系統(tǒng)分解系統(tǒng)分解n系統(tǒng)的主要組成部分稱為子系統(tǒng)。通常根據(jù)系統(tǒng)的主要組成

15、部分稱為子系統(tǒng)。通常根據(jù)所提供的功能來劃分子系統(tǒng)。一般說來,子所提供的功能來劃分子系統(tǒng)。一般說來,子系統(tǒng)的數(shù)目應該與系統(tǒng)規(guī)?;酒ヅ?。系統(tǒng)的數(shù)目應該與系統(tǒng)規(guī)?;酒ヅ?。n各個子系統(tǒng)之間應該具有盡可能簡單、明確各個子系統(tǒng)之間應該具有盡可能簡單、明確的接口。因此,可以相對獨立地設計各個子的接口。因此,可以相對獨立地設計各個子系統(tǒng)。系統(tǒng)。n在劃分和設計子系統(tǒng)時,應該盡量減少子系在劃分和設計子系統(tǒng)時,應該盡量減少子系統(tǒng)彼此間的依賴性。統(tǒng)彼此間的依賴性。n面向對象設計模型,與面向對象分析模型一樣,面向對象設計模型,與面向對象分析模型一樣,也由主題、類與對象、結構、屬性、服務等也由主題、類與對象、結構、屬

16、性、服務等5個層次組成。個層次組成。n大多數(shù)系統(tǒng)的面向對象設計模型,在邏輯上都大多數(shù)系統(tǒng)的面向對象設計模型,在邏輯上都由由4大部分組成。大部分組成。q問題域子系統(tǒng)問題域子系統(tǒng)q人機交互子系統(tǒng)人機交互子系統(tǒng)q任務管理子系統(tǒng)任務管理子系統(tǒng)q數(shù)據(jù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)n可以把可以把4大組成部分想象成整個模型的大組成部分想象成整個模型的4個垂直個垂直切片。切片。典型的面向對象設計模型典型的面向對象設計模型1. 子系統(tǒng)之間的兩種交互方式子系統(tǒng)之間的兩種交互方式n客戶客戶-供應商關系供應商關系(Client-supplier)q作為作為“客戶客戶”的子系統(tǒng)調(diào)用作為的子系統(tǒng)調(diào)用作為“供應商供應商”的子系的

17、子系統(tǒng),后者完成某些服務工作并返回結果。統(tǒng),后者完成某些服務工作并返回結果。q任何交互行為都是由前者驅動的。任何交互行為都是由前者驅動的。n平等伙伴關系平等伙伴關系(peer-to-peer)q每個子系統(tǒng)都可能調(diào)用其他子系統(tǒng),因此,每個子每個子系統(tǒng)都可能調(diào)用其他子系統(tǒng),因此,每個子系統(tǒng)都必須了解其他子系統(tǒng)的接口。系統(tǒng)都必須了解其他子系統(tǒng)的接口。q子系統(tǒng)之間的交互更復雜。子系統(tǒng)之間的交互更復雜。n總的說來,單向交互比雙向交互更容易理解,總的說來,單向交互比雙向交互更容易理解,也更容易設計和修改,因此應該盡量使用客戶也更容易設計和修改,因此應該盡量使用客戶-供應商關系。供應商關系。2. 組織系統(tǒng)的

18、兩種方案組織系統(tǒng)的兩種方案n層次組織層次組織(水平水平)q把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是一個子把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是一個子系統(tǒng)。上層在下層的基礎上建立,下層為實現(xiàn)上系統(tǒng)。上層在下層的基礎上建立,下層為實現(xiàn)上層功能而提供必要的服務。在上、下層之間存在層功能而提供必要的服務。在上、下層之間存在客戶客戶-供應商關系。供應商關系。n封閉式封閉式n開放式開放式n塊狀組織塊狀組織(垂直垂直)q把軟件系統(tǒng)垂直地分解成若干個相對獨立的、弱把軟件系統(tǒng)垂直地分解成若干個相對獨立的、弱耦合的子系統(tǒng),一個子系統(tǒng)相當于一塊,每塊提耦合的子系統(tǒng),一個子系統(tǒng)相當于一塊,每塊提供一種類型的服務。供一種類型

19、的服務。n混合使用層次結構和塊狀結構混合使用層次結構和塊狀結構典型應用系統(tǒng)的組織結構典型應用系統(tǒng)的組織結構3. 設計系統(tǒng)的拓撲結構設計系統(tǒng)的拓撲結構n由子系統(tǒng)組成完整的系統(tǒng)時,典型的拓撲結由子系統(tǒng)組成完整的系統(tǒng)時,典型的拓撲結構有管道形、樹形、星形等。構有管道形、樹形、星形等。n設計者應該采用與問題結構相適應的、盡可設計者應該采用與問題結構相適應的、盡可能簡單的拓撲結構,以減少子系統(tǒng)之間的交能簡單的拓撲結構,以減少子系統(tǒng)之間的交互數(shù)量?;?shù)量。 11.5 設計問題域子系統(tǒng)設計問題域子系統(tǒng)n面向對象設計僅需從實現(xiàn)角度對問題域模型面向對象設計僅需從實現(xiàn)角度對問題域模型做一些補充或修改,主要是增添、

20、合并或分做一些補充或修改,主要是增添、合并或分解類與對象、屬性及服務,調(diào)整繼承關系等解類與對象、屬性及服務,調(diào)整繼承關系等等。等。n當問題域子系統(tǒng)過分復雜龐大時,應該把它當問題域子系統(tǒng)過分復雜龐大時,應該把它進一步分解成若干個更小的子系統(tǒng)。進一步分解成若干個更小的子系統(tǒng)。 1. 調(diào)整需求調(diào)整需求n有兩種情況會導致修改通過面向對象分析所有兩種情況會導致修改通過面向對象分析所確定的系統(tǒng)需求:確定的系統(tǒng)需求:q一是用戶需求或外部環(huán)境發(fā)生了變化;一是用戶需求或外部環(huán)境發(fā)生了變化;q二是分析員對問題域理解不透徹或缺乏領域專家二是分析員對問題域理解不透徹或缺乏領域專家?guī)椭?。幫助。n無論出現(xiàn)上述哪種情況,通

21、常都只需簡單地無論出現(xiàn)上述哪種情況,通常都只需簡單地修改面向對象分析結果,然后再把這些修改修改面向對象分析結果,然后再把這些修改反映到問題域子系統(tǒng)中。反映到問題域子系統(tǒng)中。 2. 重用已有的類重用已有的類n代碼重用從設計階段開始,在研究面向對象代碼重用從設計階段開始,在研究面向對象分析結果時就應該尋找使用已有類的方法。分析結果時就應該尋找使用已有類的方法。n重用已有類的典型過程如下:重用已有類的典型過程如下:q選擇有可能被重用的已有類,標出這些候選類中選擇有可能被重用的已有類,標出這些候選類中對本問題無用的屬性和服務。對本問題無用的屬性和服務。q添加泛化關系。添加泛化關系。q標出從已有類繼承來

22、的屬性和服務。標出從已有類繼承來的屬性和服務。q修改與問題域類相關的關聯(lián),必要時改為與被重修改與問題域類相關的關聯(lián),必要時改為與被重用的已有類相關的關聯(lián)。用的已有類相關的關聯(lián)。 3. 把問題域類組合在一起把問題域類組合在一起n通過引入一個根類而把問題域類組合在一起。通過引入一個根類而把問題域類組合在一起。此外,這樣的根類還可以用來建立協(xié)議。此外,這樣的根類還可以用來建立協(xié)議。4. 增添一般化類以建立協(xié)議增添一般化類以建立協(xié)議n在設計過程中常常發(fā)現(xiàn),一些具體類需要有在設計過程中常常發(fā)現(xiàn),一些具體類需要有一個公共的協(xié)議,也就是說,它們都需要定一個公共的協(xié)議,也就是說,它們都需要定義一組類似的服務。

23、在這種情況下可以引入義一組類似的服務。在這種情況下可以引入一個附加類一個附加類(例如,根類例如,根類),以便建立這個協(xié),以便建立這個協(xié)議。議。 5. 調(diào)整繼承層次調(diào)整繼承層次n使用多重繼承機制使用多重繼承機制q避免出現(xiàn)屬性及服務的命名沖突。避免出現(xiàn)屬性及服務的命名沖突。q窄菱形模式。屬性及服務命名沖突的可能性比較窄菱形模式。屬性及服務命名沖突的可能性比較大。大。q闊菱形模式。屬性及服務的名字發(fā)生沖突的可能闊菱形模式。屬性及服務的名字發(fā)生沖突的可能性比較小,但是,它需要用更多的類才能表示同性比較小,但是,它需要用更多的類才能表示同一個設計。一個設計。n使用單繼承機制使用單繼承機制q把多重繼承結構

24、簡化成單一的單繼承層次結構。把多重繼承結構簡化成單一的單繼承層次結構。q在多重繼承結構中的某些繼承關系,經(jīng)簡化后將在多重繼承結構中的某些繼承關系,經(jīng)簡化后將不再存在,這表明需要在各個具體類中重復定義不再存在,這表明需要在各個具體類中重復定義某些屬性和服務。某些屬性和服務。 把多重繼承簡化為單一層次的單繼承把多重繼承簡化為單一層次的單繼承6. ATM系統(tǒng)實例系統(tǒng)實例ATM系統(tǒng)問題域子系統(tǒng)的結構系統(tǒng)問題域子系統(tǒng)的結構11.6 設計人機交互子系統(tǒng)設計人機交互子系統(tǒng)n在面向對象設計過程中,則應該對系統(tǒng)的人在面向對象設計過程中,則應該對系統(tǒng)的人機交互子系統(tǒng)進行詳細設計,以確定人機交機交互子系統(tǒng)進行詳細設

25、計,以確定人機交互的細節(jié)?;サ募毠?jié)。n使用由原型支持的系統(tǒng)化的設計策略,是成使用由原型支持的系統(tǒng)化的設計策略,是成功地設計人機交互子系統(tǒng)的關鍵。功地設計人機交互子系統(tǒng)的關鍵。 1. 分類用戶分類用戶n應該深入到用戶的工作現(xiàn)場,仔細觀察用戶應該深入到用戶的工作現(xiàn)場,仔細觀察用戶是怎樣做他們的工作的。是怎樣做他們的工作的。n設計者首先應該把將來可能與系統(tǒng)交互的用設計者首先應該把將來可能與系統(tǒng)交互的用戶分類。幾個不同角度:戶分類。幾個不同角度:q按技能水平分類按技能水平分類(新手、初級、中級、高級新手、初級、中級、高級)。q按職務分類按職務分類(總經(jīng)理、經(jīng)理、職員總經(jīng)理、經(jīng)理、職員)。q按所屬集團分

26、類按所屬集團分類(職員、顧客職員、顧客)。2. 描述用戶描述用戶n應該仔細了解將來使用系統(tǒng)的每類用戶的情應該仔細了解將來使用系統(tǒng)的每類用戶的情況,記錄各項信息:況,記錄各項信息:q用戶類型。用戶類型。q使用系統(tǒng)欲達到的目的。使用系統(tǒng)欲達到的目的。q特征特征(年齡、性別、受教育程度、限制因素等年齡、性別、受教育程度、限制因素等)。q關鍵的成功因素關鍵的成功因素(需求、愛好、習慣等需求、愛好、習慣等)。q技能水平。技能水平。q完成本職工作的腳本。完成本職工作的腳本。3. 設計命令層次設計命令層次n研究現(xiàn)有的人機交互含義和準則研究現(xiàn)有的人機交互含義和準則n確定初始的命令層次確定初始的命令層次n精化命

27、令層次精化命令層次q次序次序q整體整體-部分關系部分關系q寬度和深度寬度和深度q操作步驟操作步驟4. 設計人機交互類設計人機交互類n人機交互類與所使用的操作系統(tǒng)及編程語言人機交互類與所使用的操作系統(tǒng)及編程語言密切相關。密切相關。11.7 設計任務管理子系統(tǒng)設計任務管理子系統(tǒng)1. 分析并發(fā)性分析并發(fā)性n通過面向對象分析建立起來的動態(tài)模型,是分通過面向對象分析建立起來的動態(tài)模型,是分析并發(fā)性的主要依據(jù)。如果兩個對象彼此間不析并發(fā)性的主要依據(jù)。如果兩個對象彼此間不存在交互,或者它們同時接受事件,則這兩個存在交互,或者它們同時接受事件,則這兩個對象在本質(zhì)上是并發(fā)的。對象在本質(zhì)上是并發(fā)的。2. 設計任務

28、管理子系統(tǒng)設計任務管理子系統(tǒng)n確定事件驅動型任務確定事件驅動型任務q這類任務可能主要完成通信工作。這類任務可能主要完成通信工作。q工作過程:任務處于睡眠狀態(tài),接收到外部中斷就工作過程:任務處于睡眠狀態(tài),接收到外部中斷就被喚醒,接收數(shù)據(jù)并放入內(nèi)存緩沖區(qū)或其他目的地,被喚醒,接收數(shù)據(jù)并放入內(nèi)存緩沖區(qū)或其他目的地,通知需要知道的對象,然后又回到睡眠狀態(tài)。通知需要知道的對象,然后又回到睡眠狀態(tài)。n確定時鐘驅動型任務確定時鐘驅動型任務q每隔一定時間間隔就被觸發(fā)以執(zhí)行某些處理。每隔一定時間間隔就被觸發(fā)以執(zhí)行某些處理。q工作過程:任務設置了喚醒時間后進入睡眠狀態(tài);工作過程:任務設置了喚醒時間后進入睡眠狀態(tài);

29、一旦接收到這種系統(tǒng)中斷,就被喚醒并工作,通知一旦接收到這種系統(tǒng)中斷,就被喚醒并工作,通知有關的對象,然后該任務又回到睡眠狀態(tài)。有關的對象,然后該任務又回到睡眠狀態(tài)。 n確定優(yōu)先任務確定優(yōu)先任務q高優(yōu)先級:為了在嚴格限定的時間內(nèi)完成這種服務,高優(yōu)先級:為了在嚴格限定的時間內(nèi)完成這種服務,可能需要分離成獨立的任務??赡苄枰蛛x成獨立的任務。q低優(yōu)先級:設計時可能用額外的任務把它分離出來。低優(yōu)先級:設計時可能用額外的任務把它分離出來。n確定關鍵任務確定關鍵任務q關鍵任務是有關系統(tǒng)成功或失敗的關鍵處理,這類關鍵任務是有關系統(tǒng)成功或失敗的關鍵處理,這類處理通常都有嚴格的可靠性要求。處理通常都有嚴格的可靠

30、性要求。q在設計過程中可能用額外的任務把這樣的關鍵處理在設計過程中可能用額外的任務把這樣的關鍵處理分離出來,以滿足高可靠性處理的要求。分離出來,以滿足高可靠性處理的要求。q對高可靠性處理應該精心設計和編碼,并且應該嚴對高可靠性處理應該精心設計和編碼,并且應該嚴格測試。格測試。 n確定協(xié)調(diào)任務確定協(xié)調(diào)任務q當系統(tǒng)中存在當系統(tǒng)中存在3個以上任務時,就應該增加一個任個以上任務時,就應該增加一個任務,用它作為協(xié)調(diào)任務。務,用它作為協(xié)調(diào)任務。n盡量減少任務數(shù)盡量減少任務數(shù)q必須仔細分析和選擇每個確實需要的任務。應該使必須仔細分析和選擇每個確實需要的任務。應該使系統(tǒng)中包含的任務數(shù)盡量少。系統(tǒng)中包含的任務數(shù)

31、盡量少。n確定資源需求確定資源需求q使用多處理器或固件,主要是為了滿足高性能的需使用多處理器或固件,主要是為了滿足高性能的需求。求。q設計者應該綜合考慮各種因素,以決定哪些子系統(tǒng)設計者應該綜合考慮各種因素,以決定哪些子系統(tǒng)用硬件實現(xiàn),哪些子系統(tǒng)用軟件實現(xiàn)。用硬件實現(xiàn),哪些子系統(tǒng)用軟件實現(xiàn)。11.8 設計數(shù)據(jù)管理子系統(tǒng)設計數(shù)據(jù)管理子系統(tǒng)11.8.1 選擇數(shù)據(jù)存儲管理模式選擇數(shù)據(jù)存儲管理模式1. 文件管理系統(tǒng)文件管理系統(tǒng)n文件管理系統(tǒng)是操作系統(tǒng)的一個組成部分,文件管理系統(tǒng)是操作系統(tǒng)的一個組成部分,具有成本低和簡單等特點,但是,文件操作具有成本低和簡單等特點,但是,文件操作的級別低,為提供適當?shù)某橄?/p>

32、級別還必須編的級別低,為提供適當?shù)某橄蠹墑e還必須編寫額外的代碼。此外,不同操作系統(tǒng)的文件寫額外的代碼。此外,不同操作系統(tǒng)的文件管理系統(tǒng)往往有明顯差異。管理系統(tǒng)往往有明顯差異。 2. 關系數(shù)據(jù)庫管理系統(tǒng)關系數(shù)據(jù)庫管理系統(tǒng)n關系數(shù)據(jù)庫管理系統(tǒng)的理論基礎是關系代數(shù),關系數(shù)據(jù)庫管理系統(tǒng)的理論基礎是關系代數(shù),它不僅理論基礎堅實而且有下列一些主要優(yōu)點:它不僅理論基礎堅實而且有下列一些主要優(yōu)點:q提供了各種最基本的數(shù)據(jù)管理功能。提供了各種最基本的數(shù)據(jù)管理功能。q為多種應用提供了一致的接口。為多種應用提供了一致的接口。q標準化的語言標準化的語言(SQL語言語言)。n關系數(shù)據(jù)庫管理系統(tǒng)通常都相當復雜,具體缺關系

33、數(shù)據(jù)庫管理系統(tǒng)通常都相當復雜,具體缺點:點:q運行開銷大。運行開銷大。q不能滿足高級應用的需求。不能滿足高級應用的需求。q與程序設計語言的連接不自然。與程序設計語言的連接不自然。 3. 面向對象數(shù)據(jù)庫管理系統(tǒng)面向對象數(shù)據(jù)庫管理系統(tǒng)n面向對象數(shù)據(jù)庫管理系統(tǒng)是一種新技術,主面向對象數(shù)據(jù)庫管理系統(tǒng)是一種新技術,主要有兩種設計途徑:要有兩種設計途徑: q擴展的關系數(shù)據(jù)庫管理系統(tǒng),是在關系數(shù)據(jù)庫的擴展的關系數(shù)據(jù)庫管理系統(tǒng),是在關系數(shù)據(jù)庫的基礎上,增加了抽象數(shù)據(jù)類型和繼承機制,此外基礎上,增加了抽象數(shù)據(jù)類型和繼承機制,此外還增加了創(chuàng)建及管理類和對象的通用服務。還增加了創(chuàng)建及管理類和對象的通用服務。q擴展的

34、面向對象程序設計語言,擴充了面向對象擴展的面向對象程序設計語言,擴充了面向對象程序設計語言的語法和功能,增加了在數(shù)據(jù)庫中程序設計語言的語法和功能,增加了在數(shù)據(jù)庫中存儲和管理對象的機制。存儲和管理對象的機制。11.8.2 設計數(shù)據(jù)管理子系統(tǒng)設計數(shù)據(jù)管理子系統(tǒng)1. 設計數(shù)據(jù)格式設計數(shù)據(jù)格式n文件系統(tǒng)(基于第一范式)文件系統(tǒng)(基于第一范式)n關系數(shù)據(jù)庫管理系統(tǒng)(基于第三范式)關系數(shù)據(jù)庫管理系統(tǒng)(基于第三范式)n面向對象數(shù)據(jù)庫管理系統(tǒng)面向對象數(shù)據(jù)庫管理系統(tǒng)q擴展的關系數(shù)據(jù)庫途徑:使用與關系數(shù)據(jù)庫管理擴展的關系數(shù)據(jù)庫途徑:使用與關系數(shù)據(jù)庫管理系統(tǒng)相同的方法。系統(tǒng)相同的方法。q擴展的面向對象程序設計語言途

35、徑:不需要規(guī)范擴展的面向對象程序設計語言途徑:不需要規(guī)范化屬性的步驟,因為數(shù)據(jù)庫管理系統(tǒng)本身具有把化屬性的步驟,因為數(shù)據(jù)庫管理系統(tǒng)本身具有把對象值映射成存儲值的功能。對象值映射成存儲值的功能。2. 設計相應的服務設計相應的服務n文件系統(tǒng)文件系統(tǒng)q需要知道打開哪個需要知道打開哪個(些些)文件,怎樣把文件定位到正文件,怎樣把文件定位到正確的記錄上,怎樣檢索舊值,以及怎樣用現(xiàn)有值更確的記錄上,怎樣檢索舊值,以及怎樣用現(xiàn)有值更新它們。新它們。n關系數(shù)據(jù)庫管理系統(tǒng)關系數(shù)據(jù)庫管理系統(tǒng)q應該知道訪問哪些數(shù)據(jù)庫表,怎樣訪問所需要的行,應該知道訪問哪些數(shù)據(jù)庫表,怎樣訪問所需要的行,怎樣檢索舊值,以及怎樣用現(xiàn)有值

36、更新它們。怎樣檢索舊值,以及怎樣用現(xiàn)有值更新它們。n面向對象數(shù)據(jù)庫管理系統(tǒng)面向對象數(shù)據(jù)庫管理系統(tǒng)q擴展的關系數(shù)據(jù)庫途徑:與關系數(shù)據(jù)庫管理系統(tǒng)方擴展的關系數(shù)據(jù)庫途徑:與關系數(shù)據(jù)庫管理系統(tǒng)方法相同。法相同。q擴展的面向對象程序設計語言途徑:無須增加服務,擴展的面向對象程序設計語言途徑:無須增加服務,已經(jīng)給每個對象提供了已經(jīng)給每個對象提供了“存儲自己存儲自己”的行為。的行為。 11.9 設計類中的服務設計類中的服務11.9.1 設計類中應有的服務設計類中應有的服務n需要綜合考慮對象模型、動態(tài)模型和功能模型,需要綜合考慮對象模型、動態(tài)模型和功能模型,才能正確確定類中應有的服務。才能正確確定類中應有的服

37、務。n對象模型,通常只在每個類中列出很少幾個最對象模型,通常只在每個類中列出很少幾個最核心的服務。設計者必須把動態(tài)模型中對象的核心的服務。設計者必須把動態(tài)模型中對象的行為以及功能模型中的數(shù)據(jù)處理,轉換成由適行為以及功能模型中的數(shù)據(jù)處理,轉換成由適當?shù)念愃峁┑姆?。當?shù)念愃峁┑姆?。n一張狀態(tài)圖描繪了一類對象的生命周期,圖中一張狀態(tài)圖描繪了一類對象的生命周期,圖中的狀態(tài)轉換是執(zhí)行對象服務的結果。的狀態(tài)轉換是執(zhí)行對象服務的結果。n功能模型指明了系統(tǒng)必須提供的服務。數(shù)據(jù)流功能模型指明了系統(tǒng)必須提供的服務。數(shù)據(jù)流圖中的某些處理可能與對象提供的服務對應。圖中的某些處理可能與對象提供的服務對應。 11

38、.9.2 設計實現(xiàn)服務的方法設計實現(xiàn)服務的方法1. 設計實現(xiàn)服務的算法設計實現(xiàn)服務的算法n設計實現(xiàn)服務的算法時,應該考慮下列幾個因素:設計實現(xiàn)服務的算法時,應該考慮下列幾個因素:q算法復雜度。算法復雜度。 q容易理解與容易實現(xiàn)。容易理解與容易實現(xiàn)。q易修改。易修改。2. 選擇數(shù)據(jù)結構選擇數(shù)據(jù)結構n在面向對象設計過程中,需要選擇能夠方便、有效在面向對象設計過程中,需要選擇能夠方便、有效地實現(xiàn)算法的物理數(shù)據(jù)結構。地實現(xiàn)算法的物理數(shù)據(jù)結構。3. 定義內(nèi)部類和內(nèi)部操作定義內(nèi)部類和內(nèi)部操作n在面向對象設計過程中,可能需要增添一些在需求在面向對象設計過程中,可能需要增添一些在需求陳述中沒有提到的類,這些新

39、增加的類,主要用來陳述中沒有提到的類,這些新增加的類,主要用來存放在執(zhí)行算法過程中所得出的某些中間結果。存放在執(zhí)行算法過程中所得出的某些中間結果。 11.10 設計關聯(lián)設計關聯(lián)1. 關聯(lián)的遍歷關聯(lián)的遍歷n使用關聯(lián)有兩種可能的方式:單向遍歷和雙向遍歷。使用關聯(lián)有兩種可能的方式:單向遍歷和雙向遍歷。n單向遍歷實現(xiàn)起來比較簡單,雙向遍歷實現(xiàn)起來稍單向遍歷實現(xiàn)起來比較簡單,雙向遍歷實現(xiàn)起來稍微麻煩一些。微麻煩一些。2. 實現(xiàn)單向關聯(lián)實現(xiàn)單向關聯(lián)n用指針可以方便地實現(xiàn)單向關聯(lián)。如果關聯(lián)的重數(shù)用指針可以方便地實現(xiàn)單向關聯(lián)。如果關聯(lián)的重數(shù)是一元的,則實現(xiàn)關聯(lián)的指針是一個簡單指針;如是一元的,則實現(xiàn)關聯(lián)的指針

40、是一個簡單指針;如果重數(shù)是多元的,則需要用一個指針集合實現(xiàn)關聯(lián)。果重數(shù)是多元的,則需要用一個指針集合實現(xiàn)關聯(lián)。 用指針實現(xiàn)單向關聯(lián)用指針實現(xiàn)單向關聯(lián)用指針集合實現(xiàn)雙向關聯(lián)用指針集合實現(xiàn)雙向關聯(lián)3. 實現(xiàn)雙向關聯(lián)實現(xiàn)雙向關聯(lián)n許多關聯(lián)都需要雙向遍歷,當然,兩個方向遍許多關聯(lián)都需要雙向遍歷,當然,兩個方向遍歷的頻度往往并不相同。實現(xiàn)雙向關聯(lián)有下列歷的頻度往往并不相同。實現(xiàn)雙向關聯(lián)有下列3種方法:種方法:q只用屬性實現(xiàn)一個方向的關聯(lián),當需要反向遍歷時只用屬性實現(xiàn)一個方向的關聯(lián),當需要反向遍歷時就執(zhí)行一次正向查找。如果兩個方向遍歷的頻度相就執(zhí)行一次正向查找。如果兩個方向遍歷的頻度相差很大,而且需要盡量

41、減少存儲開銷和修改時的開差很大,而且需要盡量減少存儲開銷和修改時的開銷,則這是一種很有效的實現(xiàn)雙向關聯(lián)的方法。銷,則這是一種很有效的實現(xiàn)雙向關聯(lián)的方法。q兩個方向的關聯(lián)都用屬性實現(xiàn)。當訪問次數(shù)遠遠多兩個方向的關聯(lián)都用屬性實現(xiàn)。當訪問次數(shù)遠遠多于修改次數(shù)時,這種實現(xiàn)方法很有效。于修改次數(shù)時,這種實現(xiàn)方法很有效。q用獨立的關聯(lián)對象實現(xiàn)雙向關聯(lián)。關聯(lián)對象不屬于用獨立的關聯(lián)對象實現(xiàn)雙向關聯(lián)。關聯(lián)對象不屬于相互關聯(lián)的任何一個類,它是獨立的關聯(lián)類的實例。相互關聯(lián)的任何一個類,它是獨立的關聯(lián)類的實例。 用對象實現(xiàn)關聯(lián)用對象實現(xiàn)關聯(lián)4. 關聯(lián)對象的實現(xiàn)關聯(lián)對象的實現(xiàn)n可以引入一個關聯(lián)類來保存描述關聯(lián)性質(zhì)的信可以引入一個關聯(lián)類來保存描述關聯(lián)性質(zhì)的信息,關聯(lián)中的每個連接對應著關聯(lián)類的一個對息,關聯(lián)中的每個連接對應著關聯(lián)類的一個對象。象。n實現(xiàn)關聯(lián)對象的方法取決于關聯(lián)的重數(shù)。實現(xiàn)關聯(lián)對象的方法取決于關聯(lián)的重數(shù)。q對于一對一關聯(lián)來說,關聯(lián)對象可以與參與關聯(lián)的對于一對一關聯(lián)來說,關聯(lián)對象可以與參與關聯(lián)的任一個對象合并。任一個對象合并。q對于一對多關聯(lián)來說,關聯(lián)對象可以與對于一對多關聯(lián)來說,關聯(lián)對象可以與“多多”端對端對象合并。象合并。q如果是多對多關聯(lián),則關聯(lián)鏈的性質(zhì)不可能只與一如果是多對多關聯(lián),則關聯(lián)鏈的性質(zhì)不可能只與一個參與關聯(lián)的對象有關,通常用一個獨立的關聯(lián)類個參與關聯(lián)的對象有關,通常用一個獨

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論