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

下載本文檔

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

文檔簡(jiǎn)介

1、第十一章 面向?qū)ο笤O(shè)計(jì)(Object-Oriented Design)1. OOD準(zhǔn)則:優(yōu)秀軟件設(shè)計(jì)的一個(gè)重要特點(diǎn)是容易維護(hù)回顧:SD準(zhǔn)則包括 Modularization Abstraction Information hiding Module independence對(duì)于 OOD有類似的準(zhǔn)則: 1、Module = Object第1頁(yè),共38頁(yè)。1. OOD準(zhǔn)則 Procedure abstraction: 在SD中已討論 Data abstraction: Class即是一種抽象數(shù)據(jù)類型。外界無(wú)須知道實(shí)現(xiàn)方法就可按照類協(xié)議(class description protocol)* 使用

2、class中定義的數(shù)據(jù)。 Parameter abstraction: 將數(shù)據(jù)類型作為參數(shù)處理。* Class description protocol : The complete definition of all properties, features, and methods that are descriptive of any object that is an instance of a class. Timothy Budd An Introduction to Object-Oriented Programming Addison-Wesley Publishing Com

3、pany, Inc. 19912、Abstraction:抽出事物的本質(zhì)特性, 暫不考慮其細(xì)節(jié),使設(shè)計(jì)從具體實(shí)現(xiàn)方法中超脫。第2頁(yè),共38頁(yè)。1. OOD準(zhǔn)則例:C+ 中的“模板”(template)template class array_n private : T items n ; / 定義了T類型的向量元素共n個(gè) ;main ( ) array_n w ; /w是有1000個(gè)元素的復(fù)向量 第3頁(yè),共38頁(yè)。1. OOD準(zhǔn)則3、Information hiding = Encapsulation of object4、Coupling: 交互耦合(interactive coupling

4、):通過(guò)傳遞message發(fā)生要求 降低參數(shù)個(gè)數(shù)和參數(shù)復(fù)雜性 減少objects發(fā)送 接收message的個(gè)數(shù) as loose as possible 繼承耦合(inheritance coupling): 要求 Parent class IS_A child class as high as possible第4頁(yè),共38頁(yè)。1. OOD準(zhǔn)則 一般-特殊內(nèi)聚(general-particular cohesion): High g-p cohesion High inheritance coupling5、Cohesion: 服務(wù)內(nèi)聚(service cohesion):一個(gè)服務(wù)只完成一個(gè)

5、功能。 類內(nèi)聚(class cohesion):一個(gè)類只有一個(gè)用途,否則分解之。6、Reusability(詳見(jiàn)3)第5頁(yè),共38頁(yè)。2. 啟發(fā)式規(guī)則1、設(shè)計(jì)結(jié)果清晰易懂,應(yīng)做到: 用詞一致 按習(xí)慣用法命名。不同classes中相似的methods最好取同一名字。 使用已有的protocol。 盡量減少message模式的數(shù)目。 避免模糊定義。2、一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)(約100個(gè)classes,則設(shè)計(jì)72層)第6頁(yè),共38頁(yè)。2. 啟發(fā)式規(guī)則3、設(shè)計(jì)簡(jiǎn)單的class(定義不超過(guò)一頁(yè)紙或兩屏)。應(yīng)注意: 避免過(guò)多attributes; 能用簡(jiǎn)單的語(yǔ)句描述一個(gè)class的任務(wù); object

6、s之間合作關(guān)系要簡(jiǎn)單; 避免過(guò)多methods( 7個(gè))。問(wèn)題:設(shè)計(jì)出大量的classes,使結(jié)構(gòu)復(fù)雜度增加。解決:劃分主題,提高可理解性。4、使用簡(jiǎn)單的protocol,減少message 中傳遞的 parameters5、使用簡(jiǎn)單的method(CASE 可考慮用 inheritance替代)。6、把設(shè)計(jì)變動(dòng)減至最小。第7頁(yè),共38頁(yè)。1、概念: 知識(shí)重用(例如軟件工程知識(shí)的重用) 方法和標(biāo)準(zhǔn)重用(例如OO方法和國(guó)家規(guī)定的軟件開(kāi)發(fā)規(guī)范的重用) 軟件成分的重用3. 軟件重用 (Software Reuse)知識(shí)工程 源碼剪貼 無(wú)法溯源,無(wú)配置管理 Include 修改后所有包含了此段代碼的程

7、序都須重新編譯。 Inheritance 無(wú)須改動(dòng)原有代碼 想象一下,stdio.h 被改動(dòng)之后重用軟件成分有三個(gè)級(jí)別: 代碼重用:第8頁(yè),共38頁(yè)。3. 軟件重用 設(shè)計(jì)重用 當(dāng)移植系統(tǒng)時(shí) 分析重用 當(dāng)需求未變,而系統(tǒng)結(jié)構(gòu)改變時(shí)(例如將HDIS改為OO實(shí)現(xiàn))2、重用效果的衡量: 額外代價(jià): 創(chuàng)建可重用成分的專門投資 多花2 4倍時(shí)間測(cè)試以保證質(zhì)量 構(gòu)件庫(kù)的建立與維護(hù)需要投資 以上投資將分?jǐn)偟街赜眠@些構(gòu)件的新系統(tǒng)成本中。重用次數(shù)越多,分?jǐn)偝杀驹缴?。?頁(yè),共38頁(yè)。3. 軟件重用記:Lt = Total length of code ( # of lines) Ln = Length of ne

8、w code Lr = Length of reused code Et 、En、 Er are the corresponding efforts ( # of m-d) 重用率(Reusability)與生產(chǎn)率(Productivity)ProductivityReusability =開(kāi)發(fā)代碼的生產(chǎn)率重用新代碼的生產(chǎn)率第10頁(yè),共38頁(yè)。3. 軟件重用重用技術(shù):指利用可重用的構(gòu)件開(kāi)發(fā)軟件的技術(shù),及開(kāi)發(fā)可重用軟件的技術(shù)。 軟件組合技術(shù): 底層部件庫(kù)法(Bottom-up compositional reuse) :從可重用的代碼部件庫(kù)(reuse repository)中選用部件,組合成軟

9、件。A:是,前提條件為CnCr ,即重用比新開(kāi)發(fā)效率高。Q:是否R 越高P就越高?第11頁(yè),共38頁(yè)。Lucent Technologies initiated a companywide program to reuse software components (McClure 1997). As a consequence, the Workstation Software Development Department formed a Reuse Council to devise a strategy for selecting candidate components for its

10、 reuse repository. The Council was comprised of seven people, representing all groups in the department. The Council created an inventory of components and formed a matrix with the features of all past and planned projects. Then, each feature was rated in terms of whether it had been implemented and

11、 was still needed, had been implemented but was no longer needed, or had not been implemented but was still needed. Those features that were needed and were common to more than one project were targeted for reuse. In fact, some were redesigned to make them more reusable.The Council met every week fo

12、r 2 hours to make component selections, inspect design documentation for those components already in the repository, and to monitor the levels of reuse in the departments projects.3. 軟件重用例: 上層組合法:完整程序的組合第12頁(yè),共38頁(yè)。3. 軟件重用 軟件生成技術(shù): 按照形式化的軟件功能描述和一定的生成機(jī)理,由生成器系統(tǒng)(generator system)自動(dòng)生成目標(biāo)程序。重用的是generator 的代碼

13、規(guī)則 OO重用技術(shù):Class component的重用(詳見(jiàn)下文) 類構(gòu)件(Class component):可重用的軟構(gòu)件應(yīng)具備的特點(diǎn): 獨(dú)立、可塑、接口清晰(文檔詳盡)第13頁(yè),共38頁(yè)。3. 軟件重用重用方式: 實(shí)例重用(instance reuse black-box reuse): 創(chuàng)建class的不同instances,通過(guò)messages完成 不同的任務(wù)。是最基本的重用方式。 用幾個(gè)簡(jiǎn)單的objects創(chuàng)建出更復(fù)雜的class, 是實(shí)例重用的另一種形式 繼承重用(inheritance reuse):是一種安全地裁剪已有的class component的方式。 多態(tài)重用(pol

14、ymorphism reuse): Parent class與child class有相同的對(duì)外接口,使 消息連接的復(fù)雜度降低。第14頁(yè),共38頁(yè)。3. 軟件重用注意:有些操作可能會(huì)妨礙class component的重用,如 與表示方法有關(guān)的操作 與數(shù)據(jù)結(jié)構(gòu)、大小有關(guān)的操作 與外部設(shè)備有關(guān)的操作 實(shí)現(xiàn)算法在將來(lái)可能會(huì)改進(jìn)改變的核心操作解決方法:將這些操作分離出來(lái),作為適配接口(adaptive interface),使class中其它操作通過(guò)調(diào)用AI而實(shí)現(xiàn)。在不同應(yīng)用環(huán)境下,用戶只須重新定義AI操作就可以重用class。第15頁(yè),共38頁(yè)。3. 軟件重用Adaptive Interface還

15、可進(jìn)一步細(xì)分為 轉(zhuǎn)換接口(transition interface):重用時(shí)必須重定義與表示方法、數(shù)據(jù)結(jié)構(gòu)、硬件等有關(guān)的操作(例如C+中class 里的 pure virtual function) 擴(kuò)充接口(expansion interface):一個(gè)操作可由多種算法實(shí)現(xiàn),若無(wú)新算法則繼承老算法。第16頁(yè),共38頁(yè)。IPO問(wèn)題域Application Domain人機(jī)交互Human-ComputerInterface(HCI)任務(wù)管理TaskManagement數(shù)據(jù)管理DataManagementMethodAttributeStructureClass-&-ObjectCategory4

16、. 系 統(tǒng) 分 解回顧SD:從DFD出發(fā) OOD模型分解:第17頁(yè),共38頁(yè)。4. 系 統(tǒng) 分 解1、子系統(tǒng)之間的交互方式(collaboration) 客戶-供應(yīng)商(client-server)關(guān)系: 平等伙伴(peer-to-peer)關(guān)系:ClientsubsystemcontractServersubsystemrequestcontractPeersubsystemcontractPeersubsystemrequestrequest第18頁(yè),共38頁(yè)。4. 系 統(tǒng) 分 解2、系統(tǒng)組織方案 水平層次組織: 將系統(tǒng)組織成hierarchy,同一層中的objects相互獨(dú)立,而上、下層間

17、有 client-server關(guān)系。 一個(gè)client只能調(diào)用其相鄰下層的server 封閉式(closed) 一個(gè)client可調(diào)用其下任一層的server 開(kāi)放式(open) 優(yōu)點(diǎn):高效; 缺點(diǎn):修改影響面廣第19頁(yè),共38頁(yè)。HCI典型應(yīng)用系統(tǒng)的組織結(jié)構(gòu)應(yīng) 用 軟 件 包操 作 系 統(tǒng)計(jì) 算 機(jī) 硬 件人機(jī)對(duì)話控制仿真軟件包圖形處理窗口圖形屏幕圖形象素圖形4. 系 統(tǒng) 分 解 垂直塊組織: 將系統(tǒng)垂直分解成若干獨(dú)立的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)。第20頁(yè),共38頁(yè)。4. 系 統(tǒng) 分 解3、四種子系統(tǒng)的設(shè)計(jì) 問(wèn)題域子系統(tǒng):基于OOA建立的object model,進(jìn)

18、行補(bǔ)充修改。 調(diào)整需求 重用class: 選出可用的class,標(biāo)出與本問(wèn)題無(wú)關(guān) 的 attributes 和 methods 派生出child class,標(biāo)出繼承的attributes 和 methods 修改關(guān)聯(lián) 組合class:通過(guò)引入root class完成,用于建立public protocol。 調(diào)整inheritance。第21頁(yè),共38頁(yè)。 HCI子系統(tǒng):好的包裝4. 系 統(tǒng) 分 解 設(shè)計(jì)準(zhǔn)則: 一致性: 術(shù)語(yǔ)、步驟、操作等始終一致。 減少步驟:使完成一件任務(wù)所需敲鍵盤、點(diǎn)鼠標(biāo)、下拉菜單等的次數(shù)都減至最少。 及時(shí)提供反饋信息:提供hot key操作做一個(gè)體貼的status b

19、ar 提供撤銷(undo)命令: 無(wú)須記憶:不應(yīng)要求用戶記住某個(gè)窗口的信息,然后再用到窗口中 這是系統(tǒng)的責(zé)任而不是用戶的任務(wù)。仁慈的你如佛祖對(duì)眾生:回頭是岸 易學(xué):提供HELP、聯(lián)機(jī)參考等。 富有吸引力第22頁(yè),共38頁(yè)。4. 系 統(tǒng) 分 解 設(shè)計(jì)策略 設(shè)計(jì)HCI類:例如VC提供的MFC類庫(kù)(Microsoft Foundation Class Library) 將用戶分類(按技能、職務(wù)等) 描述用戶的類型、水平、使用目的、其它特征(如年齡、性別、習(xí)慣等),寫出操作腳本 設(shè)計(jì)命令層次:注意同用戶熟悉的方式( 如windows界面)盡量保持一致. 次序、深度、寬度調(diào)整適當(dāng)?shù)?3頁(yè),共38頁(yè)。4.

20、 系 統(tǒng) 分 解 任務(wù)管理子系統(tǒng):基于OOA建立的dynamic model 分析并發(fā)性: 若兩個(gè)objects之間無(wú)交互行為,或它們同時(shí)接受events,則它們本質(zhì)上是并發(fā)的(synchronous) 考察event flow diagram,找出沒(méi)有并發(fā)對(duì)象的路徑(稱為控制線),每條對(duì)應(yīng)一個(gè)任務(wù)(task,亦稱process) 不同的tasks對(duì)應(yīng)必須同時(shí)發(fā)生的不同行為第24頁(yè),共38頁(yè)。4. 系 統(tǒng) 分 解 確定task類型,并分配給適當(dāng)?shù)能浻布?zhí)行 事件驅(qū)動(dòng)型(event-driven):主要完成通信工作。 event = 數(shù)據(jù)到達(dá)的 interrupt 時(shí)鐘驅(qū)動(dòng)型(clock-dr

21、iven):完成周期性工作。 優(yōu)先型(priority):將high priority或 low priority的任務(wù)專門分離出來(lái)先做或后做。 關(guān)鍵任務(wù)(key task):指關(guān)系系統(tǒng)成敗的處理,要求高可靠性,應(yīng)分離考慮,嚴(yán)格測(cè)試。 協(xié)調(diào)任務(wù)(coordinator):當(dāng)系統(tǒng)中存在三個(gè)以上tasks時(shí),應(yīng)增設(shè)一個(gè)協(xié)調(diào)任務(wù),用于封裝不同tasks之間的協(xié)調(diào)控制。第25頁(yè),共38頁(yè)。4. 系 統(tǒng) 分 解 數(shù)據(jù)管理子系統(tǒng): 選擇管理模式 文件管理(file manager)系統(tǒng) 關(guān)系數(shù)據(jù)庫(kù)(Relational Data Base)管理系統(tǒng) 面向?qū)ο髷?shù)據(jù)庫(kù)(OODB)管理系統(tǒng) 設(shè)計(jì)數(shù)據(jù)格式及相應(yīng)的

22、服務(wù)(請(qǐng)參閱教材p.252 - 255)第26頁(yè),共38頁(yè)。5. 設(shè)計(jì)類中的服務(wù) 細(xì)化object model中的 methods1、確立服務(wù) 從 dynamic model出發(fā):Event flow diagram中 Event = message ; 接受message 的object 必有對(duì)應(yīng)的 method; Method 改變 status(即 attributes),并完成 action。第27頁(yè),共38頁(yè)。5. 設(shè)計(jì)類中的服務(wù)Event Status 1 do: Action 1 Status 2 do: Action 2 則算法應(yīng)有DO_CASE型控制 從function mo

23、del出發(fā):DFD的一般結(jié)構(gòu)是IPO注意:Action (即算法)與status 有關(guān)。例如:不同status接受同一個(gè) event 時(shí),其action不同 第28頁(yè),共38頁(yè)。Input FlowClassProcessI O ClassProcess5. 設(shè)計(jì)類中的服務(wù) 若 Process=從Input Flow中抽取一個(gè)值,則IO 若 和 類型相同,而output實(shí)質(zhì)上是input的另一個(gè)狀態(tài),則IO是一類, 有 若 則I1I2I3POOutput Flow ClassProcess第29頁(yè),共38頁(yè)。5. 設(shè)計(jì)類中的服務(wù) 若 則 ProcessStorageStorage ClassP

24、rocess 對(duì)照DFD與Class-&-Object圖,若一個(gè)process涉及多個(gè)classes,則必須判斷它屬于哪一個(gè)class。 例如:ActivatorReceiverProcess若Process 改變了 Receiver,則Receiver ClassProcess又如:從關(guān)聯(lián)上看,process所涉及的所有classes中,處于中心地位的class,一般擁有該process。第30頁(yè),共38頁(yè)。5. 設(shè)計(jì)類中的服務(wù)2、設(shè)計(jì)實(shí)現(xiàn)方法 算法設(shè)計(jì):要求做到易修改,并且復(fù)雜度低(即效率高) 易理解,易實(shí)現(xiàn)。 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):需要考慮具體的物理結(jié)構(gòu)的選擇。 新添用于存放內(nèi)部處理中間結(jié)果的c

25、lass;引入新的低層操作,進(jìn)一步細(xì)化。第31頁(yè),共38頁(yè)。6. 設(shè)計(jì)關(guān)聯(lián)1、單向關(guān)聯(lián) 例: 雇 員公 司被雇用1+ 由雇員找其所屬公司,則設(shè)雇主為其屬性,即一單向指針雇 員雇主公 司 由公司找其下屬某一雇員,則有兩種方法:方法1:遍歷所有雇員,找雇主匹配且滿足特征的雇員。(省空間)第32頁(yè),共38頁(yè)。6. 設(shè)計(jì)關(guān)聯(lián)方法2:設(shè)公司的屬性雇員為一指針集。(快速)雇 員公 司雇員指針集2、雙向關(guān)聯(lián)方法1:將上述兩種單向關(guān)聯(lián)結(jié)合使用雇 員雇主公 司雇員指針集雇 員公 司關(guān)聯(lián)類雇主雇員工資方法2:另設(shè)關(guān)聯(lián)類(特別適用于鏈屬性)第33頁(yè),共38頁(yè)。雇 員公 司find_skill雇 用1+技 能具有技能1+1+7. 優(yōu) 化1、確定優(yōu)先級(jí): 必須站在全局高度確定各項(xiàng)質(zhì)量指標(biāo)的優(yōu)先級(jí),在優(yōu)化設(shè)計(jì)時(shí)制定折衷方案。切忌各子系統(tǒng)自以為是,導(dǎo)致最終優(yōu)化目標(biāo)對(duì)立。 最常見(jiàn)的情況是在

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論