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

下載本文檔

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

文檔簡介

面向?qū)ο笤O(shè)計第一頁,共六十六頁,編輯于2023年,星期二面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計(OOD)就是把分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實現(xiàn)方案的過程。面向?qū)ο笤O(shè)計的任務(wù)就是按照設(shè)計原則,對模型進行細化,朝著實現(xiàn)系統(tǒng)的方向進行多次迭代。第二頁,共六十六頁,編輯于2023年,星期二主要內(nèi)容面向?qū)ο笤O(shè)計的準(zhǔn)則啟發(fā)式規(guī)則軟件重用系統(tǒng)分解設(shè)計問題域子系統(tǒng)設(shè)計人-機交互子系統(tǒng)設(shè)計任務(wù)管理子系統(tǒng)設(shè)計數(shù)據(jù)管理子系統(tǒng)設(shè)計類中的服務(wù)設(shè)計關(guān)聯(lián)設(shè)計優(yōu)化第三頁,共六十六頁,編輯于2023年,星期二面向?qū)ο笤O(shè)計的準(zhǔn)則模塊化抽象信息隱蔽弱耦合強內(nèi)聚可重用第四頁,共六十六頁,編輯于2023年,星期二面向?qū)ο笤O(shè)計的準(zhǔn)則1、模塊化面向?qū)ο箝_發(fā)方法很自然地支持了把系統(tǒng)分解成模塊的設(shè)計原則:對象就是模塊。它是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊。第五頁,共六十六頁,編輯于2023年,星期二面向?qū)ο笤O(shè)計的準(zhǔn)則2、抽象面向?qū)ο蠓椒ú粌H支持過程抽象,而且支持數(shù)據(jù)抽象。1、類是抽象的數(shù)據(jù)類型2、參數(shù)化數(shù)據(jù)類型,參數(shù)化類3、信息隱蔽在面向?qū)ο蠓椒ㄖ?,信息隱藏通過對象的封裝性來實現(xiàn)。第六頁,共六十六頁,編輯于2023年,星期二面向?qū)ο笤O(shè)計的準(zhǔn)則4、弱耦合在面向?qū)ο蠓椒ㄖ?,對象是最基本的模塊,因此,耦合主要指不同對象之間相互關(guān)聯(lián)的緊密程度。低耦合是設(shè)計的一個重要標(biāo)準(zhǔn),因為這有助于使得系統(tǒng)中某一部分的變化對其它部分的影響降到最低程度。(1)交互耦合:通過消息連接實現(xiàn)(2)繼承耦合:構(gòu)成粒度更大的模塊,所以結(jié)合的程度應(yīng)該緊密。第七頁,共六十六頁,編輯于2023年,星期二面向?qū)ο笤O(shè)計的準(zhǔn)則5、強內(nèi)聚(1)服務(wù)內(nèi)聚:一個服務(wù)只完成一個功能 (2)類內(nèi)聚:一個類應(yīng)該只有一個用途(3)一般特殊內(nèi)聚:緊密的繼承耦合與高度的一般——特殊內(nèi)聚是一致的。6、可重用(1)盡量使用已有的類(2)設(shè)計新的類時要考慮將來的重用問題第八頁,共六十六頁,編輯于2023年,星期二啟發(fā)式規(guī)則1、設(shè)計結(jié)果應(yīng)該清晰易懂用詞一致:名字與代表的事物一致使用已有的類協(xié)議減少消息模式的數(shù)目避免模糊的定義:類的名稱與用途一致2、一般—特殊結(jié)構(gòu)的深度應(yīng)該適中第九頁,共六十六頁,編輯于2023年,星期二啟發(fā)式規(guī)則3、設(shè)計簡單的類 應(yīng)該盡量設(shè)計小而簡單的類,這樣便于開發(fā)和管理。為了保持簡單,應(yīng)注意以下幾點:避免包含過多的屬性有明確的類定義簡化對象之間的合作關(guān)系不要提供太多服務(wù)4、使用簡單的協(xié)議(較少的參數(shù))一般來說,消息中參數(shù)不要超過3個。第十頁,共六十六頁,編輯于2023年,星期二啟發(fā)式規(guī)則5、使用簡單的服務(wù)面向?qū)ο笤O(shè)計出來的類中的服務(wù)通常都很小,一般只有3至5行源程序語句,可以用僅含一個動詞和一個賓語的簡單句子描述它的功能

6、把設(shè)計變動減少到最小通常,設(shè)計的質(zhì)量越高,設(shè)計結(jié)果保持不變的時間也越長。即使出現(xiàn)必須修改設(shè)計的情況,也應(yīng)該使修改的范圍盡可能小。第十一頁,共六十六頁,編輯于2023年,星期二軟件重用概述1、重用2、軟件成分的重用級別3、典型的可重用軟件成分類構(gòu)件1、可重用軟構(gòu)件應(yīng)具備的特點2、類構(gòu)件的重用方式軟件重用的效益1、質(zhì)量2、成本3、生產(chǎn)率軟件重用技術(shù)第十二頁,共六十六頁,編輯于2023年,星期二軟件重用1、重用A、知識重用B、方法和標(biāo)準(zhǔn)重用C、軟件成分重用2、軟件成分重用的級別A、代碼重用:代碼剪貼、源代碼包含、繼承。B、設(shè)計結(jié)果重用C、分析結(jié)果重用概述第十三頁,共六十六頁,編輯于2023年,星期二軟件重用3、典型的可重用軟件成分項目計劃成本估計體系結(jié)構(gòu)需求和規(guī)格說明設(shè)計概述源代碼文檔用戶界面數(shù)據(jù)測試用例等第十四頁,共六十六頁,編輯于2023年,星期二軟件重用1、可重用類構(gòu)件的特點模塊獨立性好具有高度的可塑性接口清晰簡單可靠2、類構(gòu)件重用方式實例重用繼承重用多態(tài)重用類構(gòu)件第十五頁,共六十六頁,編輯于2023年,星期二軟件重用1、質(zhì)量被重用的代碼錯誤率0.9/千行新開發(fā)的代碼錯誤率4.1/千行2、成本(為實現(xiàn)軟件重用需付出的代價)A、為軟構(gòu)件投資B、為更高級的軟件質(zhì)量投資C、建立和維護軟類庫的費用軟件重用的效益第十六頁,共六十六頁,編輯于2023年,星期二軟件重用3、生產(chǎn)率重用率與生產(chǎn)率的關(guān)系一般情況下,重用率的提高可以直接提高生產(chǎn)率,30%~50%的重用可以導(dǎo)致25%~40%的生產(chǎn)率的提高。軟件重用的效益第十七頁,共六十六頁,編輯于2023年,星期二軟件重用3、生產(chǎn)率重用率與生產(chǎn)率的關(guān)系一般情況下,重用率的提高可以直接提高生產(chǎn)率,30%~50%的重用可以導(dǎo)致25%~40%的生產(chǎn)率的提高。軟件重用的效益第十八頁,共六十六頁,編輯于2023年,星期二軟件重用1、軟件組合技術(shù)2、軟件生成技術(shù)3、面向?qū)ο筌浖赜密浖赜眉夹g(shù)第十九頁,共六十六頁,編輯于2023年,星期二系統(tǒng)分解系統(tǒng)中主要的組成部分稱為子系統(tǒng)既不是一個對象也不是一個功能,而是類、關(guān)聯(lián)、操作、事件和約束的集合。大多數(shù)系統(tǒng)的面向?qū)ο竽P褪怯梢韵滤膫€部分組成:

1、問題域子系統(tǒng)

2、人機交互子系統(tǒng)

3、任務(wù)管理子系統(tǒng)

4、數(shù)據(jù)庫子系統(tǒng)第二十頁,共六十六頁,編輯于2023年,星期二系統(tǒng)分解典型的面向?qū)ο笤O(shè)計模型第二十一頁,共六十六頁,編輯于2023年,星期二系統(tǒng)分解1、子系統(tǒng)之間的兩種交互關(guān)系客戶—供應(yīng)商關(guān)系平等伙伴關(guān)系2、系統(tǒng)組織的兩種方案層次組織塊狀組織3、設(shè)計系統(tǒng)的拓撲結(jié)構(gòu)管道形樹形星形第二十二頁,共六十六頁,編輯于2023年,星期二系統(tǒng)分解典型應(yīng)用系統(tǒng)的組織結(jié)構(gòu)第二十三頁,共六十六頁,編輯于2023年,星期二設(shè)計問題域子系統(tǒng)1、調(diào)整需求2、重用已有的類(1)重用那些使無用的屬性和服務(wù)降到最低程度的類;(2)在被重用的類和問題域類之間添加泛化關(guān)系;(3)標(biāo)出問題域類中從已有類中繼承來的屬性和方法,現(xiàn)在已經(jīng)不用在問題域中定義它們了;(4)修改與問題域類相關(guān)的關(guān)聯(lián)。第二十四頁,共六十六頁,編輯于2023年,星期二設(shè)計問題域子系統(tǒng)3、把問題域組織到一起4、添加一般化類建立協(xié)議5、調(diào)整繼承層次(1)使用多繼承機制(2)使用單繼承機制(3)不具備繼承機制第二十五頁,共六十六頁,編輯于2023年,星期二設(shè)計問題域子系統(tǒng)窄菱形模式第二十六頁,共六十六頁,編輯于2023年,星期二設(shè)計問題域子系統(tǒng)闊菱形模式第二十七頁,共六十六頁,編輯于2023年,星期二設(shè)計問題域子系統(tǒng)

6、ATM系統(tǒng)例在面向?qū)ο笤O(shè)計過程中,ATM系統(tǒng)的問題域子系統(tǒng)的結(jié)構(gòu)如下圖所示。把ATM系統(tǒng)的問題域子系統(tǒng),進一步分解成更小的ATM站子系統(tǒng),中央計算機子系統(tǒng)和分行計算機子系統(tǒng),構(gòu)成星型拓撲結(jié)構(gòu)。以中央計算機為中心向外連接(用專用電話線),與所有ATM站和分行計算機通信。區(qū)分每個ATM站和每臺分行計算機連向中央計算機的電話線,分別用ATM站號和分行代碼來實現(xiàn)。第二十八頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)人機交互子系統(tǒng)也稱人機交互部分(HIC,HumanInteractionComponent)。人機交互部分的設(shè)計結(jié)果,將對用戶使用系統(tǒng)帶來很大影響。人機界面設(shè)計得好,則會使系統(tǒng)產(chǎn)生魅力,吸引用戶經(jīng)常使用系統(tǒng),并覺得與系統(tǒng)的交互是友好的、興奮的,還能提高工作效率;反之不然。第二十九頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)為了得到良好的人機界面,在分析階段要對用戶進行分析,在設(shè)計階段要延續(xù)該分析,包括對用戶、交互時間、交互技術(shù)等進行分析。在人機交互子系統(tǒng)設(shè)計中,在初步分析用戶界面需求的基礎(chǔ)上,對人機交互的細節(jié)進行詳細設(shè)計,包括對窗口、對話框和報表的形式,設(shè)計命令層次組織等內(nèi)容的設(shè)計。設(shè)計人機交互子系統(tǒng)的關(guān)鍵,是使用原型技術(shù)。建立人機界面的原型,征求用戶的意見,獲取用戶的評價,也是設(shè)計人機界面的一種有效途徑。第三十頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)1、設(shè)計人機交互界面的準(zhǔn)則(1)一致性(2)減少步驟(3)及時提供反饋信息(4)提供撤消命令(5)無須記憶(6)易學(xué)(7)富有吸引力第三十一頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)2、設(shè)計人機交互子系統(tǒng)的策略(1)分類用戶(2)描述用戶(3)設(shè)計命令層次(4)設(shè)計人機交互類第三十二頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)設(shè)計命令層是界面設(shè)計的重要部分,一般包含下列工作:(1)研究現(xiàn)有的人機交互的準(zhǔn)則。命令層設(shè)計有許多方式,但目前最受用戶喜愛的是Windows界面,Windows已經(jīng)成了微機上圖形用戶界面事實上的工業(yè)標(biāo)準(zhǔn)。所有Windows應(yīng)用程序的界面是一致的,窗口布局、菜單、術(shù)語等使用,以及界面的風(fēng)格、習(xí)慣等都是一致的,Windows的命令層設(shè)計采用了下拉式菜單和彈出式菜單,而且各菜單的組織方式也類似。設(shè)計圖形用戶界面時,應(yīng)該保持與普通Windows應(yīng)用程序界面一致,并遵守廣大用戶習(xí)慣的約定,這樣才會被用戶接受和喜愛。第三十三頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)(2)設(shè)計初始命令層。所謂命令層,是將系統(tǒng)中的可用服務(wù)用過程抽象機制組織起來的一種體現(xiàn)。設(shè)計時首先從服務(wù)的基本過程抽象開始,確定系統(tǒng)中最上層(如大的操作,相近小命令的總稱,多層命令的最上層等),然后再修改它們,以符合目標(biāo)系統(tǒng)的特定需要。第三十四頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)(3)優(yōu)化命令層。為使命令層完善、合理以及使用方便,應(yīng)該考慮下列一些因素,作進一步修改。排列:檢查每個服務(wù)的名字,并將服務(wù)排在命令層中的合適位置。可按系統(tǒng)功能(服務(wù))順序排列,也可以按用戶習(xí)慣的工作順序排序。整體-部分組合:通過服務(wù)本身發(fā)現(xiàn)整體-部分關(guān)系,來幫助在命令層中對服務(wù)組織和分組。第三十五頁,共六十六頁,編輯于2023年,星期二設(shè)計人機交互子系統(tǒng)(3)優(yōu)化命令層。為使命令層完善、合理以及使用方便,應(yīng)該考慮下列一些因素,作進一步修改。寬度和深度:通常,命令層中同一層顯示命令的個數(shù)(寬度),設(shè)計為(7±2)個比較合適;命令層中層數(shù)(深度)設(shè)計為3層比較合適。這樣符合人的短期記憶能力。減少操作步驟:做同樣的工作,按鍵或拖動鼠標(biāo)越少越好。并為高級用戶提供簡捷的操作方法。第三十六頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)設(shè)計工作的一項重要內(nèi)容就是,確定哪些是必須同時動作的對象,哪些是相互排斥的對象。然后進一步設(shè)計任務(wù)管理子系統(tǒng)。1、分析并發(fā)性2、設(shè)計任務(wù)管理子系統(tǒng)第三十七頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)1、分析并發(fā)性不僅在系統(tǒng)軟件中有并發(fā)行為,而且在應(yīng)用軟件中也有并發(fā)行為,因此,實現(xiàn)中存在并發(fā)行為。在程序的執(zhí)行時間上與其他程序有交疊的現(xiàn)象,這種時間交疊現(xiàn)象稱為“并發(fā)性”。因此,任務(wù)管理子系統(tǒng)在設(shè)計時,應(yīng)找出并分析系統(tǒng)中任務(wù)的并發(fā)性。第三十八頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)1、分析并發(fā)性分析并發(fā)性的主要依據(jù)——系統(tǒng)的動態(tài)模型如果對象間不存在交互,或者說它們能同時接收事件,那么這兩個對象是并發(fā)的。通過檢查各個對象的狀態(tài)圖及它們之間交換的事件,把若干個非并發(fā)的對象歸并到一起。獨立的任務(wù)把必須并發(fā)進行的行為分離開來。這種并發(fā)行為既可以在不同的處理器上實現(xiàn),也可以在單個處理器上利用多任務(wù)操作系統(tǒng)仿真實現(xiàn)。一般來說,劃分任務(wù),是為了簡化系統(tǒng)中必須的并發(fā)行為的設(shè)計和編碼。第三十九頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)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ù)第四十頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)2、設(shè)計任務(wù)管理子系統(tǒng)(1)確定事件驅(qū)動任務(wù)事件驅(qū)動任務(wù):由某個事件觸發(fā)而引起的任務(wù)。事件通常表明一個設(shè)備傳輸過來的一個信息,事件是由設(shè)備引起的。任務(wù)是對事件的處理。一個任務(wù)可以設(shè)計成由一個事件來觸發(fā)(驅(qū)動),該事件常常是對一些數(shù)據(jù)的到達發(fā)信號,而這些數(shù)據(jù)可能來自輸入數(shù)據(jù)行,或者另一個任務(wù)寫入的數(shù)據(jù)緩沖區(qū)。這類任務(wù)可能主要完成通信工作,例如,與設(shè)備、屏幕窗口、其他任務(wù)、子系統(tǒng)、另一個處理器或其他系統(tǒng)通信。第四十一頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)(1)確定事件驅(qū)動任務(wù)事件驅(qū)動任務(wù)的工作過程為:①任務(wù)處于睡眠狀態(tài)(不消耗處理器時間),等待來自數(shù)據(jù)行或其他數(shù)據(jù)源的中斷;②接收到中斷就喚醒了該任務(wù);③閱讀數(shù)據(jù)并把數(shù)據(jù)放入內(nèi)存緩沖區(qū)或其他目的地;④向需要知道此事件的對象發(fā)出通知,然后該任務(wù)又回到睡眠狀態(tài)。第四十二頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)(2)確定時鐘驅(qū)動任務(wù)時鐘驅(qū)動任務(wù):按特定的時間間隔被觸發(fā)后執(zhí)行某些處理的任務(wù)。例如,某些設(shè)備需要周期性地獲得數(shù)據(jù);某些人機接口、子系統(tǒng)、任務(wù)、處理器或其他系統(tǒng)也可能需要周期性地通信。時鐘驅(qū)動型任務(wù)的工作過程為:①任務(wù)設(shè)置了喚醒時間后進入睡眠狀態(tài);②等待來自系統(tǒng)的中斷;③接收到中斷,任務(wù)被喚醒;④進行處理,通知有關(guān)的對象;⑤該任務(wù)又回到睡眠狀態(tài)。第四十三頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)(3)確定優(yōu)先任務(wù)優(yōu)先級任務(wù):根據(jù)事件的優(yōu)先級高低來做處理的任務(wù)。它可以滿足高優(yōu)先級或低優(yōu)先級的處理需求。

1)高優(yōu)先級:有些服務(wù)可能是高優(yōu)先級的,需要把這類服務(wù)劃分成獨立的任務(wù),使該類服務(wù)在一個嚴格限定的時間內(nèi)完成。

2)低優(yōu)先級:有些服務(wù)是低優(yōu)先級的,屬于低優(yōu)先級處理(通常指那些后臺處理)。設(shè)計時可能用附加的任務(wù)把這種服務(wù)分離出來。任務(wù)的劃分是根據(jù)時間決定優(yōu)先級,根據(jù)優(yōu)先級的高低劃分出輕重緩急的任務(wù)。第四十四頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)(4)確定關(guān)鍵任務(wù)設(shè)計時應(yīng)該分離出那些對于系統(tǒng)的成敗特別關(guān)鍵的任務(wù),該類任務(wù)通常都有嚴格的可靠性、安全性要求。設(shè)計時可用附加的任務(wù)來分離出關(guān)鍵的任務(wù),應(yīng)該進行深入細致的設(shè)計、編碼和測試,以滿足高可靠性、安全性處理的要求。也就是說,根據(jù)需求決定任務(wù)的主次,保證關(guān)鍵任務(wù)。第四十五頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)(5)確定協(xié)調(diào)任務(wù)當(dāng)系統(tǒng)中有三個以上任務(wù)時,就應(yīng)該考慮增加一個任務(wù),用來協(xié)調(diào)任務(wù)之間的關(guān)系,該任務(wù)稱為協(xié)調(diào)任務(wù)從一個任務(wù)到另一個任務(wù)的轉(zhuǎn)換時間叫現(xiàn)場轉(zhuǎn)換時間。協(xié)調(diào)任務(wù)用來控制現(xiàn)場轉(zhuǎn)換時間時,將會給系統(tǒng)設(shè)計帶來困難,但是引入?yún)f(xié)調(diào)任務(wù)可為封裝不同任務(wù)之間的協(xié)調(diào)控制帶來好處。該任務(wù)的行為可用狀態(tài)轉(zhuǎn)換矩陣來描述。這樣的任務(wù)應(yīng)該只做協(xié)調(diào)工作,不必分配它其他的工作。第四十六頁,共六十六頁,編輯于2023年,星期二設(shè)計任務(wù)管理子系統(tǒng)(6)審查每個任務(wù)對任務(wù)的性質(zhì)進行審查,去掉人為的、不必要的任務(wù),要使任務(wù)數(shù)保持到最少。設(shè)計多任務(wù)系統(tǒng)的主要問題是,設(shè)計者常常為了自己設(shè)計和編程的方便而增加任務(wù)。這樣既增加了總體設(shè)計的技術(shù)復(fù)雜度,又降低了系統(tǒng)的可理解性,從而也加大了系統(tǒng)維護的難度。第四十七頁,共六十六頁,編輯于2023年,星期二設(shè)計數(shù)據(jù)管理子系統(tǒng)1、選擇數(shù)據(jù)存儲管理模式(1)文件管理系統(tǒng)(2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)(3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)2、設(shè)計數(shù)據(jù)管理子系統(tǒng)(1)設(shè)計數(shù)據(jù)格式(2)設(shè)計相應(yīng)的服務(wù)第四十八頁,共六十六頁,編輯于2023年,星期二設(shè)計數(shù)據(jù)管理子系統(tǒng)3、例子在這個例子中,需要存儲的對象主要是帳戶類的對象。為了支持數(shù)據(jù)管理子系統(tǒng)的實現(xiàn),帳戶類對象必須知道自己是怎樣存儲的:(1)每個對象自己保存自己(2)由數(shù)據(jù)管理子系統(tǒng)負責(zé)存儲對象ATM系統(tǒng)的問題域子系統(tǒng)的結(jié)構(gòu)第四十九頁,共六十六頁,編輯于2023年,星期二設(shè)計類中的服務(wù)1、確定類中應(yīng)有的服務(wù)2、設(shè)計實現(xiàn)服務(wù)的方法(1)設(shè)計實現(xiàn)服務(wù)的算法(2)選擇數(shù)據(jù)結(jié)構(gòu)(3)定義內(nèi)部類和內(nèi)部操作第五十頁,共六十六頁,編輯于2023年,星期二設(shè)計類中的服務(wù)(1)設(shè)計實現(xiàn)服務(wù)的算法算法設(shè)計按如下過程進行:A選擇極小化開銷的算法。B選擇適用于該算法的數(shù)據(jù)結(jié)構(gòu)。C定義必需的新的內(nèi)部類和操作。D將操作響應(yīng)賦給合適的類。選擇算法應(yīng)考慮下列因素A計算復(fù)雜度B易實現(xiàn),易理解,易修改C穩(wěn)定性好第五十一頁,共六十六頁,編輯于2023年,星期二設(shè)計類中的服務(wù)(2)選擇數(shù)據(jù)結(jié)構(gòu)選擇算法時涉及到選擇算法使用的數(shù)據(jù)結(jié)構(gòu),許多實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)都是包容類的實例,大多數(shù)面向?qū)ο笳Z言提供了基本數(shù)據(jù)結(jié)構(gòu)供用戶自選組合定義。(3)定義內(nèi)部類和操作在展開算法時,可能引入一些對象類,用來存放中間結(jié)果,在分解高層操作時也可引入新的低層操作。必須定義這些低層操作,因為大多數(shù)這類操作是外部不可見的。第五十二頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)關(guān)聯(lián)是在對象模型中聯(lián)結(jié)不同對象的紐帶,它指定了對象相互間的訪問路徑。在面向?qū)ο蠓治鲞^程中,僅是初步確定對象之間的關(guān)聯(lián)和階數(shù)。在面向?qū)ο笤O(shè)計過程中,必須確定實現(xiàn)關(guān)聯(lián)的具體策略。根據(jù)應(yīng)用系統(tǒng)中的使用方式來確定實現(xiàn)關(guān)聯(lián)的策略??梢赃x定一個統(tǒng)一實現(xiàn)所有關(guān)聯(lián)的全局性的策略,或者對不同的關(guān)聯(lián)選擇不同的實現(xiàn)策略。第五十三頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)先對使用關(guān)聯(lián)的方式進行分析研究,總結(jié)它們的使用方式,然后根據(jù)不同的使用方式設(shè)計出具體的實現(xiàn)關(guān)聯(lián)的途徑。第五十四頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)1、關(guān)聯(lián)的遍歷通常應(yīng)用系統(tǒng)中使用關(guān)聯(lián)的方式有單向遍歷和雙向遍歷兩種。根據(jù)應(yīng)用系統(tǒng)的復(fù)雜程度不同,使用關(guān)聯(lián)的方式也不同。有些關(guān)聯(lián)只需要單向遍歷,可有些關(guān)聯(lián)可能需要雙向遍歷。單向關(guān)聯(lián)的實現(xiàn)自然比較簡單,而雙向關(guān)聯(lián)實現(xiàn)起來相對復(fù)雜一些。第五十五頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)2、單向關(guān)聯(lián)的實現(xiàn)單向遍歷的關(guān)聯(lián)可用指針來實現(xiàn),指針是一個含有對象引用的屬性。第五十六頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)2、單向關(guān)聯(lián)的實現(xiàn)如果關(guān)聯(lián)的階是一元的,則可用一個簡單指針來實現(xiàn)用指針實現(xiàn)單向關(guān)聯(lián)

(a)關(guān)聯(lián)(b)實現(xiàn)第五十七頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)2、單向關(guān)聯(lián)的實現(xiàn)如果關(guān)聯(lián)的階是多元的,則需要用一個指針集合來實現(xiàn)用指針實現(xiàn)單向關(guān)聯(lián)(a)關(guān)聯(lián)(b)實現(xiàn)第五十八頁,共六十六頁,編輯于2023年,星期二設(shè)計關(guān)聯(lián)3、雙向關(guān)聯(lián)的實現(xiàn)許多關(guān)聯(liá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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論