




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第八章面向對象設計11/1/20221第八章面向對象設計10/23/20221第八章面向對象設計說明簡寫為OOD面向對象設計就是用面向對象觀點建立求解域模型的過程面向對象設計可以被分為兩個階段系統設計確定實現系統的策略和目標系統的高層結構對象設計確定解空間中的類、關聯、接口形式及實現服務的算法11/1/20222第八章面向對象設計說明10/23/20222第八章面向對象設計8.1面向對象設計的準則8.2啟發規則8.3系統分解8.4設計問題域子系統8.5設計人-機交互子系統8.6設計任務管理子系統11/1/20223第八章面向對象設計8.1面向對象設計的準則10/23/2第八章面向對象設計8.7設計數據管理子系統8.8設計類中的服務8.9設計關聯8.10設計優化8.11實例11/1/20224第八章面向對象設計8.7設計數據管理子系統10/23/8.1面向對象設計的準則明確設計決定質量,決定可維護性第四章的幾條原理仍然有效,增加了面向對象的特點模塊化抽象逐步求精信息隱藏11/1/202258.1面向對象設計的準則明確10/23/202258.1面向對象設計的準則1、模塊化2、抽象3、信息隱藏4、弱耦合交互耦合(僅通過消息連接來實現)盡量降低消息連接的復雜程度減少對象發送(或接收)的消息數11/1/202268.1面向對象設計的準則1、模塊化10/23/202268.1面向對象設計的準則4、弱耦合繼承耦合應該越緊密越好在設計時應該使特殊類盡量多繼承并使用其一般化類的屬性和服務5、強內聚服務內聚類內聚一般-特殊內聚(應符合多數人的概念)11/1/202278.1面向對象設計的準則4、弱耦合10/23/202278.1面向對象設計的準則6、可重用首先,盡量使用已有的類(包括開發環境提供的類庫,及以往開發類似系統時創建的類)其次,如果確實需要創建新類,則在設計這些新類的協議時,應該考慮將來的可重復使用性11/1/202288.1面向對象設計的準則6、可重用10/23/202288.2啟發規則明確回顧第四章中的七條啟發式規則提高模塊獨立性模塊規模應該適中深度、寬度、扇出和扇入都應適當模塊的作用域應該在控制域之內力爭降低模塊接口的復雜程度設計單入口單出口的模塊模塊功能應該可以預測11/1/202298.2啟發規則明確10/23/202298.2啟發規則一、設計結果應該清晰易懂-為了以后可能的重用服務1、用詞一致2、使用已有的協議3、減少消息模式的數目4、避免模糊的定義11/1/2022108.2啟發規則一、設計結果應該清晰易懂-為了以后可能的重用8.2啟發規則二、一般-特殊結構的深度應適當應該使類等級中包含的層次數適當(即繼承的層數)11/1/2022118.2啟發規則二、一般-特殊結構的深度應適當10/23/28.2啟發規則三、設計簡單的類1、避免包含過多的屬性2、有明確的定義3、盡量簡化對象之間的合作關系4、不要提供太多服務典型地,一個類提供的公共服務不超過7個11/1/2022128.2啟發規則三、設計簡單的類10/23/2022128.2啟發規則四、使用簡單的協議一般來說,消息中的參數不要超過3個(不是絕對的)五、使用簡單的服務面向對象設計出來的類中的服務通常都很小,一般只有3~5行源程序語句,可以用僅含一個動詞和一個賓語的簡單句子描述它的功能11/1/2022138.2啟發規則四、使用簡單的協議10/23/2022138.2啟發規則六、把設計變動減至最小通常,設計的質量越高,設計結果保持不變的時間也越長11/1/2022148.2啟發規則六、把設計變動減至最小10/23/202218.3系統分解說明大多數系統的面向對象設計模型,在邏輯上都由四大部分組成。這四大部分對應于組成目標系統的四個子系統問題域子系統人-機交互子系統任務管理子系統數據管理子系統11/1/2022158.3系統分解說明10/23/2022158.3系統分解說明面向對象設計模型也包含五個層次主題層類-&對象層結構層屬性層服務層11/1/2022168.3系統分解說明10/23/2022168.3系統分解11/1/2022178.3系統分解10/23/2022178.3系統分解一、子系統之間的兩種交互方式客戶-供應商關系(Client_supplier)單向交互平等伙伴關系(peer_to_peer)雙向交互推薦11/1/2022188.3系統分解一、子系統之間的兩種交互方式10/23/208.3系統分解二、組織系統的兩種方案1、層次組織封閉式馬爾可夫原則開放式2、塊狀組織這種組織方案把軟件系統垂直地分解成若干個相對獨立的、弱耦合的子系統,一個子系統相當于一塊,每塊提供一種類型的服務11/1/2022198.3系統分解二、組織系統的兩種方案10/23/202218.4設計問題域子系統說明面向對象設計僅需從實現角度對問題域模型作一些補充或修改,主要是增添、合并或分解類—&—對象、屬性及服務,調整繼承關系等。當問題域子系統過分復雜龐大時,應該把它進一步分解成若干個更小的子系統11/1/2022208.4設計問題域子系統說明10/23/2022208.4設計問題域子系統一、調整需求用戶需求或外部環境發生了變化分析員對問題域理解不透徹或缺乏領域專家幫助,導致面向對象分析模型不能準確反映用戶的真正需求二、重用已有的類三、把問題域類組合在一起在面向對象設計過程中,設計者往往通過引入一個根類而把問題域類組合在一起11/1/2022218.4設計問題域子系統一、調整需求10/23/2022218.4設計問題域子系統四、增加一般化類以建立協議五、ATM系統之例見下頁星型拓撲所劃分的三個更小的子系統實際上就是分析階段所劃分的三個主題11/1/2022228.4設計問題域子系統四、增加一般化類以建立協議10/2311/1/20222310/23/2022238.5設計人-機交互子系統說明在第四章的基礎上從面向對象設計的角度做些補充一、設計人-機交互界面的準則1、一致性使用一致的術語,一致的步驟,一致的動作2、減少步驟11/1/2022248.5設計人-機交互子系統說明10/23/2022248.5設計人-機交互子系統11/1/2022258.5設計人-機交互子系統10/23/2022258.5設計人-機交互子系統一、設計人-機交互界面的準則3、及時提供反饋信息11/1/2022268.5設計人-機交互子系統一、設計人-機交互界面的準則108.5設計人-機交互子系統一、設計人-機交互界面的準則4、提供撤銷命令5、無須記憶6、易學11/1/2022278.5設計人-機交互子系統一、設計人-機交互界面的準則108.5設計人-機交互子系統11/1/2022288.5設計人-機交互子系統10/23/2022288.5設計人-機交互子系統一、設計人-機交互界面的準則7、富有吸引力11/1/2022298.5設計人-機交互子系統一、設計人-機交互界面的準則108.5設計人-機交互子系統二、設計人-機交互界面的策略1、分類用戶分類角度按技能水平分類(新手/初級/中級/高級)按職務分類(總經理/經理/職員)按所屬集團分類(職員/顧客)2、描述用戶應該仔細了解將來使用系統的每類用戶的情況,把獲得的各項信息記錄下來11/1/2022308.5設計人-機交互子系統二、設計人-機交互界面的策略1011/1/20223110/23/20223111/1/20223210/23/2022328.5設計人-機交互子系統二、設計人-機交互界面的策略3、設計命令層次1)研究現有的人-機交互含義和準則2)確定初始的命令層次實質上是用過程抽象機制組織起來的、可供選用的服務的表示形式3)精化命令層次(考慮下述因素)次序在命令層的每一部分內把服務排好次序11/1/2022338.5設計人-機交互子系統二、設計人-機交互界面的策略108.5設計人-機交互子系統二、設計人-機交互界面的策略3、設計命令層次3)精化命令層次整體-部分關系有助于在命令層中分組組織服務寬度和深度操作步驟應該用盡量少的單擊、拖動和擊鍵組合來表達命令,而且應該為高級用戶提供簡捷的操作方法4)設計人-機交互類(以MFC為例)11/1/2022348.5設計人-機交互子系統二、設計人-機交互界面的策略108.6設計任務管理子系統說明設計工作的一項重要內容是,確定哪些是必須同時動作的對象,哪些是相互排斥的對象,然后進一步設計任務管理子系統11/1/2022358.6設計任務管理子系統說明10/23/2022358.6設計任務管理子系統一、分析并發性通過面向對象分析建立起來的動態模型,是分析并發性的主要依據。如果兩個對象彼此間不存在交互,或者它們同時接受事件,則這兩個對象在本質上是并發的11/1/2022368.6設計任務管理子系統一、分析并發性10/23/20228.6設計任務管理子系統二、設計任務管理子系統設計任務管理子系統,包括確定各類任務并把任務分配給適當的硬件或軟件去執行1、確定事件驅動型任務如與設備、屏幕窗口等的通信2、確定時鐘驅動型任務某些任務每隔一定時間間隔就被觸發以執行某些處理工作過程:睡眠,接收中斷,處理中斷,睡眠……11/1/2022378.6設計任務管理子系統二、設計任務管理子系統10/23/8.6設計任務管理子系統二、設計任務管理子系統3、確定優先任務高優先級低優先級4、確定關鍵任務關鍵任務是有關系統成功或失敗的關鍵處理,這類處理通常都有嚴格的可靠性要求對高可靠性處理應該精心設計和編碼,并且應該嚴格測試11/1/2022388.6設計任務管理子系統二、設計任務管理子系統10/23/8.6設計任務管理子系統二、設計任務管理子系統5、確定協調任務當系統中存在三個以上任務時,就應該增加一個任務,用它作為協調任務6、盡量減少任務數必須仔細分析和選擇每個確實需要的任務。應該使系統中包含的任務數盡量少11/1/2022398.6設計任務管理子系統二、設計任務管理子系統10/23/8.6設計任務管理子系統二、設計任務管理子系統7、確定資源需求使用多處理器或固件,主要是為了滿足高性能的需求。設計者必須通過計算系統載荷(即每秒處理的業務數及處理一個業務所花費的時間),來估算所需要的CPU(或其他固件)的處理能力11/1/2022408.6設計任務管理子系統二、設計任務管理子系統10/23/8.7設計數據管理子系統一、選擇數據存儲管理模式三種模式1、文件管理系統OS的一部分,但是需要額外代碼2、關系數據庫管理系統一致的接口標準化的語言3、面向對象數據庫管理系統擴展的關系數據庫管理系統和擴展的面向對象程序設計語言11/1/2022418.7設計數據管理子系統一、選擇數據存儲管理模式10/28.7設計數據管理子系統二、設計數據管理子系統1、設計數據格式1)文件系統第一范式(就是數據表的每一列不可再分)2)關系數據庫管理系統第三范式每個非關鍵字屬性僅函數依賴于主關鍵字如“學生系宿舍”存在傳遞依賴,不符合第三范式3)面向對象數據庫管理系統擴展的關系數據庫途徑擴展的面向對象程序設計語言途徑11/1/2022428.7設計數據管理子系統二、設計數據管理子系統10/238.7設計數據管理子系統二、設計數據管理子系統2、設計相應的服務如果某個類的對象需要存儲起來,則在這個類中增加一個屬性和服務,用于完成存儲對象自身的工作1)文件系統打開,檢索,更新,關閉注意,為提高性能應該批量處理訪問文件的要求11/1/2022438.7設計數據管理子系統二、設計數據管理子系統10/238.7設計數據管理子系統二、設計數據管理子系統2、設計相應的服務2)關系數據庫管理系統訪問數據表,檢索,更新3)面向對象數據庫管理系統擴展的關系數據庫途徑擴展的面向對象程序設計語言途徑11/1/2022448.7設計數據管理子系統二、設計數據管理子系統10/238.7設計數據管理子系統三、實例ATM中,需要存儲的對象主要是賬戶類的對象。為了支持數據管理子系統的實現,賬戶對象必須知道自己是怎樣存儲的每個對象自己保存自己由數據管理子系統負責存儲對象11/1/2022458.7設計數據管理子系統三、實例10/23/2022458.8設計類中的服務一、確定類中應有的服務對象模型進行對象設計的基本框架對象模型中,通常只在每個類中列出很少幾個最核心的服務動態模型對象中的許多服務都與對象收到的事件密切相關11/1/2022468.8設計類中的服務一、確定類中應有的服務10/23/28.8設計類中的服務一、確定類中應有的服務功能模型 DFD中的某些處理可能與對象提供的服務相對應11/1/2022478.8設計類中的服務一、確定類中應有的服務10/23/28.8設計類中的服務二、設計實現服務的方法1、設計實現服務的算法1)算法復雜度2)容易理解與容易實現3)易修改2、選擇數據結構3、定義內部類和內部操作11/1/2022488.8設計類中的服務二、設計實現服務的方法10/23/28.9設計關聯在面向對象設計過程中,設計人員必須確定實現關聯的具體策略一、關聯的遍歷(使用關聯的方式)單向遍歷雙向遍歷11/1/2022498.9設計關聯在面向對象設計過程中,設計人員必須確定實現8.9設計關聯二、實現單向關聯關聯的重數是一階的實現關聯的指針是一個簡單指針關聯的重數是多階的需要用一個指針集合實現關聯實例(下二頁)11/1/2022508.9設計關聯二、實現單向關聯10/23/2022508.9設計關聯11/1/2022518.9設計關聯10/23/20225111/1/20225210/23/2022528.9設計關聯三、實現雙向關聯方法一、只用屬性實現一個方向的關聯,當需要反向遍歷時就執行一次正向查找11/1/2022538.9設計關聯三、實現雙向關聯10/23/2022538.9設計關聯三、實現雙向關聯方法二、兩個方向的關聯都用屬性實現11/1/2022548.9設計關聯三、實現雙向關聯10/23/2022548.9設計關聯三、實現雙向關聯方法三、用獨立的關聯對象實現雙向關聯11/1/2022558.9設計關聯三、實現雙向關聯10/23/2022558.9設計關聯四、鏈屬性的實現三種情形:1:1關聯1:N關聯M:N關聯11/1/2022568.9設計關聯四、鏈屬性的實現10/23/2022568.10設計優化一、確定優先級二、提高效率的幾項技術1、增加冗余關聯(分析時應避免的)以提高訪問效率哈希表實現11/1/2022578.10設計優化一、確定優先級哈希表實現10/23/208.10設計優化一、確定優先級二、提高效率的幾項技術1、增加冗余關聯以提高訪問效率限定詞(索引)11/1/2022588.10設計優化一、確定優先級限定詞(索引)10/23/8.10設計優化二、提高效率的幾項技術2、調整查詢次序例:查詢“揚州所有的女公交司機”應安排什么查詢次序?3、保留派生屬性(中間結果)11/1/2022598.10設計優化二、提高效率的幾項技術10/23/2028.10設計優化三、調整繼承關系在面向對象設計過程中,建立良好的繼承關系是優化設計的一項重要內容1、抽象與具體首先創建一些滿足具體用途的類,然后對它們進行歸納,一旦歸納出一些通用的類以后,往往可以根據需要再派生出具體類。在進行了一些具體化(即專門化)的工作之后,也許就應該再次歸納了11/1/2022608.10設計優化三、調整繼承關系10/23/20226011/1/20226110/23/20226111/1/20226210/23/20226211/1/20226310/23/20226311/1/20226410/23/2022648.10設計優化三、調整繼承關系2、為提高繼承程度而修改類定義不能違背領域知識和常識應該確保現有類的協議(即同外部世界的接口)不變3、利用委托實現行為共享11/1/2022658.10設計優化三、調整繼承關系10/23/202265繼承了add,remove,first,last將List的實例作為屬性,從而其本身只有兩個操作11/1/202266繼承了add,remove,first,last將List的8.11實例問題的初衷介紹一個簡化的C++類庫管理系統的分析和設計過程11/1/2022678.11實例問題的初衷10/23/2022678.11實例一、面向對象分析1、需求1)管理用C++語言定義的類2)用戶能夠方便地向類庫中添加新的類,并能建立新類與庫中原有類的關系3)用戶能夠通過類名從類庫中查詢出指定的類4)用戶能夠查看或修改與指定類有關的信息(包括數據成員的定義、成員函數的定義及這個類與其他類的關系)11/1/2022688.11實例一、面向對象分析10/23/2022688.11實例一、面向對象分析1、需求5)用戶能夠從類庫中刪除指定的類6)用戶能夠在瀏覽窗口中方便、快速地瀏覽當前類的父類和子類7)具有“聯想”瀏覽功能,也就是說,可以把當前類的某個子類或父類指定為新的當前類,從而瀏覽這個新當前類的父類和子類8)用戶能夠查看或修改某個類的指定成員函數的源代碼11/1/2022698.11實例一、面向對象分析10/23/2022698.11實例一、面向對象分析1、需求9)本系統是一個簡化的多用戶系統,每個用戶都可以建立自己的類庫,不同類庫之間互不干擾10)對于用戶的誤操作或錯誤的輸入數據,系統能給出適當的提示信息,并且仍然繼續穩定地運行11)系統易學易用,用戶界面應該是GUI(圖形用戶界面)的11/1/2022708.11實例一、面向對象分析10/23/2022708.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象基本對象就兩個類庫類(類條目)由需求3)4)條可知類條目中應包含屬性:類名父類列表成員函數列表數據成員列表11/1/2022718.11實例一、面向對象分析10/23/2022718.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中的每個“父類”應包含信息:名字訪問權虛基類標志(virtual)11/1/2022728.11實例一、面向對象分析10/23/2022728.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中的每個“成員函數”應包含信息:函數名訪問權(public,protected,private)虛函數標志(virtual)返回值類型參數函數代碼(需求8))11/1/2022738.11實例一、面向對象分析10/23/2022738.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中的每個“數據成員”應包含信息:數據名訪問權(public,protected,private)數據類型由于“父類”、“成員函數”、“數據成員”的相對獨立性,將它們都作為對象11/1/2022748.11實例一、面向對象分析10/23/2022748.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中應包含操作:對于類名(設置類名)對于父類列表(添加、刪除、更改)對于成員函數(添加、刪除、更改)對于數據成員(添加、刪除、更改)11/1/2022758.11實例一、面向對象分析10/23/2022758.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類庫包含的屬性:庫名類條目列表類庫包含的操作:插入一個類條目(需求2))刪除一個類條目(需求5))存儲類庫讀出類庫(放到內存中)11/1/2022768.11實例一、面向對象分析10/23/2022768.11實例一、面向對象分析2、建立對象模型2)分析類—&—對象之間的關系一個用戶擁有多個類庫每個類庫由0或多個類條目組成每個類條目由0或多個父類每個類條目0或多個數據成員每個類條目0或多個成員函數組成注:上述關系全是對象之間的關系,而不是類之間的關系11/1/2022778.11實例一、面向對象分析10/23/2022778.11實例一、面向對象分析2、建立對象模型下頁動態模型(無需)不存在狀態轉換的問題功能模型(無需)沒有數據轉換的問題,所以無需用DFD描述功能11/1/2022788.11實例一、面向對象分析10/23/20227811/1/20227910/23/2022798.11實例二、面向對象設計1、設計類庫結構兩種可選結構二叉樹(下頁圖示)鏈表操作簡單,邏輯表現力不好11/1/2022808.11實例二、面向對象設計10/23/2022808.11實例討論其典型優缺點11/1/2022818.11實例討論其典型優缺點10/23/2022818.11實例二、面向對象設計1、設計類庫結構最終的選擇:11/1/2022828.11實例二、面向對象設計10/23/2022828.11實例二、面向對象設計2、設計問題域子系統從實現的角度對前述對象模型所做補充:1)類條目(ClassEntry)用“父類鏈表頭指針”、“成員函數鏈表頭指針”、“數據成員鏈表頭指針”代替對應的列表增加“注釋”增加“next”指針增加“查找指定父類信息”、“查找指定成員函數信息”、“查找指定數據成員信息”11/1/2022838.11實例二、面向對象設計10/23/2022838.11實例二、面向對象設計2、設計問題域子系統從實現的角度對前述對象模型所做補充:2)類庫(ClassEntryLink)將“類條目列表”改為“類鏈頭指針”應有服務(取得庫中類條目的個數,讀文件并在內存中建立類鏈表,寫鏈表,插入一個類條目,刪除一個類條目,按類名查找并將內容復制到指定地點)11/1/2022848.11實例二、面向對象設計10/23/2022848.11實例二、面向對象設計2、設計問題域子系統從實現的角度對前述對象模型所做補充:3)父類(ClassBase),成員函數(ClassFun),數據成員(ClassData),各添加一個指針(next)4)類條目緩沖區(Buffer)11/1/2022858.11實例二、面向對象設計10/23/20228511/1/20228610/23/2022868.11實例二、面向對象設計3、設計人-機交互子系統1)窗口包含下述構件:登錄窗口11/1/2022878.11實例二、面向對象設計10/23/2022878.11實例二、面向對象設計3、設計人-機交互子系統1)窗口包含下述構件:主窗口11/1/2022888.11實例二、面向對象設計10/23/202288創建窗口11/1/202289創建窗口10/23/202289選擇瀏覽方式窗口11/1/202290選擇瀏覽方式窗口10/23/202290類名瀏覽窗口11/1/202291類名瀏覽窗口10/23/2022918.11實例二、面向對象設計3、設計人-機交互子系統1)窗口包含下述構件:按類關系瀏覽窗口(略)2)重用我們設計的是一個可重用類庫管理系統,在設計和實現這個類庫管理系統的過程中,自然應該盡可能重用已有的軟構件11/1/2022928.11實例二、面向對象設計10/23/2022928.11實例二、面向對象設計3、設計人-機交互子系統2)重用采用VC環境,盡可能重用MFC中的類上述所有的窗口類可以從MFC中的CDialog類繼承只有很少的編程工作量4、其它類(略)沒有設計如下的兩個子系統:任務管理子系統數據管理子系統11/1/2022938.11實例二、面向對象設計10/23/202293第八章面向對象設計11/1/202294第八章面向對象設計10/23/20221第八章面向對象設計說明簡寫為OOD面向對象設計就是用面向對象觀點建立求解域模型的過程面向對象設計可以被分為兩個階段系統設計確定實現系統的策略和目標系統的高層結構對象設計確定解空間中的類、關聯、接口形式及實現服務的算法11/1/202295第八章面向對象設計說明10/23/20222第八章面向對象設計8.1面向對象設計的準則8.2啟發規則8.3系統分解8.4設計問題域子系統8.5設計人-機交互子系統8.6設計任務管理子系統11/1/202296第八章面向對象設計8.1面向對象設計的準則10/23/2第八章面向對象設計8.7設計數據管理子系統8.8設計類中的服務8.9設計關聯8.10設計優化8.11實例11/1/202297第八章面向對象設計8.7設計數據管理子系統10/23/8.1面向對象設計的準則明確設計決定質量,決定可維護性第四章的幾條原理仍然有效,增加了面向對象的特點模塊化抽象逐步求精信息隱藏11/1/2022988.1面向對象設計的準則明確10/23/202258.1面向對象設計的準則1、模塊化2、抽象3、信息隱藏4、弱耦合交互耦合(僅通過消息連接來實現)盡量降低消息連接的復雜程度減少對象發送(或接收)的消息數11/1/2022998.1面向對象設計的準則1、模塊化10/23/202268.1面向對象設計的準則4、弱耦合繼承耦合應該越緊密越好在設計時應該使特殊類盡量多繼承并使用其一般化類的屬性和服務5、強內聚服務內聚類內聚一般-特殊內聚(應符合多數人的概念)11/1/20221008.1面向對象設計的準則4、弱耦合10/23/202278.1面向對象設計的準則6、可重用首先,盡量使用已有的類(包括開發環境提供的類庫,及以往開發類似系統時創建的類)其次,如果確實需要創建新類,則在設計這些新類的協議時,應該考慮將來的可重復使用性11/1/20221018.1面向對象設計的準則6、可重用10/23/202288.2啟發規則明確回顧第四章中的七條啟發式規則提高模塊獨立性模塊規模應該適中深度、寬度、扇出和扇入都應適當模塊的作用域應該在控制域之內力爭降低模塊接口的復雜程度設計單入口單出口的模塊模塊功能應該可以預測11/1/20221028.2啟發規則明確10/23/202298.2啟發規則一、設計結果應該清晰易懂-為了以后可能的重用服務1、用詞一致2、使用已有的協議3、減少消息模式的數目4、避免模糊的定義11/1/20221038.2啟發規則一、設計結果應該清晰易懂-為了以后可能的重用8.2啟發規則二、一般-特殊結構的深度應適當應該使類等級中包含的層次數適當(即繼承的層數)11/1/20221048.2啟發規則二、一般-特殊結構的深度應適當10/23/28.2啟發規則三、設計簡單的類1、避免包含過多的屬性2、有明確的定義3、盡量簡化對象之間的合作關系4、不要提供太多服務典型地,一個類提供的公共服務不超過7個11/1/20221058.2啟發規則三、設計簡單的類10/23/2022128.2啟發規則四、使用簡單的協議一般來說,消息中的參數不要超過3個(不是絕對的)五、使用簡單的服務面向對象設計出來的類中的服務通常都很小,一般只有3~5行源程序語句,可以用僅含一個動詞和一個賓語的簡單句子描述它的功能11/1/20221068.2啟發規則四、使用簡單的協議10/23/2022138.2啟發規則六、把設計變動減至最小通常,設計的質量越高,設計結果保持不變的時間也越長11/1/20221078.2啟發規則六、把設計變動減至最小10/23/202218.3系統分解說明大多數系統的面向對象設計模型,在邏輯上都由四大部分組成。這四大部分對應于組成目標系統的四個子系統問題域子系統人-機交互子系統任務管理子系統數據管理子系統11/1/20221088.3系統分解說明10/23/2022158.3系統分解說明面向對象設計模型也包含五個層次主題層類-&對象層結構層屬性層服務層11/1/20221098.3系統分解說明10/23/2022168.3系統分解11/1/20221108.3系統分解10/23/2022178.3系統分解一、子系統之間的兩種交互方式客戶-供應商關系(Client_supplier)單向交互平等伙伴關系(peer_to_peer)雙向交互推薦11/1/20221118.3系統分解一、子系統之間的兩種交互方式10/23/208.3系統分解二、組織系統的兩種方案1、層次組織封閉式馬爾可夫原則開放式2、塊狀組織這種組織方案把軟件系統垂直地分解成若干個相對獨立的、弱耦合的子系統,一個子系統相當于一塊,每塊提供一種類型的服務11/1/20221128.3系統分解二、組織系統的兩種方案10/23/202218.4設計問題域子系統說明面向對象設計僅需從實現角度對問題域模型作一些補充或修改,主要是增添、合并或分解類—&—對象、屬性及服務,調整繼承關系等。當問題域子系統過分復雜龐大時,應該把它進一步分解成若干個更小的子系統11/1/20221138.4設計問題域子系統說明10/23/2022208.4設計問題域子系統一、調整需求用戶需求或外部環境發生了變化分析員對問題域理解不透徹或缺乏領域專家幫助,導致面向對象分析模型不能準確反映用戶的真正需求二、重用已有的類三、把問題域類組合在一起在面向對象設計過程中,設計者往往通過引入一個根類而把問題域類組合在一起11/1/20221148.4設計問題域子系統一、調整需求10/23/2022218.4設計問題域子系統四、增加一般化類以建立協議五、ATM系統之例見下頁星型拓撲所劃分的三個更小的子系統實際上就是分析階段所劃分的三個主題11/1/20221158.4設計問題域子系統四、增加一般化類以建立協議10/2311/1/202211610/23/2022238.5設計人-機交互子系統說明在第四章的基礎上從面向對象設計的角度做些補充一、設計人-機交互界面的準則1、一致性使用一致的術語,一致的步驟,一致的動作2、減少步驟11/1/20221178.5設計人-機交互子系統說明10/23/2022248.5設計人-機交互子系統11/1/20221188.5設計人-機交互子系統10/23/2022258.5設計人-機交互子系統一、設計人-機交互界面的準則3、及時提供反饋信息11/1/20221198.5設計人-機交互子系統一、設計人-機交互界面的準則108.5設計人-機交互子系統一、設計人-機交互界面的準則4、提供撤銷命令5、無須記憶6、易學11/1/20221208.5設計人-機交互子系統一、設計人-機交互界面的準則108.5設計人-機交互子系統11/1/20221218.5設計人-機交互子系統10/23/2022288.5設計人-機交互子系統一、設計人-機交互界面的準則7、富有吸引力11/1/20221228.5設計人-機交互子系統一、設計人-機交互界面的準則108.5設計人-機交互子系統二、設計人-機交互界面的策略1、分類用戶分類角度按技能水平分類(新手/初級/中級/高級)按職務分類(總經理/經理/職員)按所屬集團分類(職員/顧客)2、描述用戶應該仔細了解將來使用系統的每類用戶的情況,把獲得的各項信息記錄下來11/1/20221238.5設計人-機交互子系統二、設計人-機交互界面的策略1011/1/202212410/23/20223111/1/202212510/23/2022328.5設計人-機交互子系統二、設計人-機交互界面的策略3、設計命令層次1)研究現有的人-機交互含義和準則2)確定初始的命令層次實質上是用過程抽象機制組織起來的、可供選用的服務的表示形式3)精化命令層次(考慮下述因素)次序在命令層的每一部分內把服務排好次序11/1/20221268.5設計人-機交互子系統二、設計人-機交互界面的策略108.5設計人-機交互子系統二、設計人-機交互界面的策略3、設計命令層次3)精化命令層次整體-部分關系有助于在命令層中分組組織服務寬度和深度操作步驟應該用盡量少的單擊、拖動和擊鍵組合來表達命令,而且應該為高級用戶提供簡捷的操作方法4)設計人-機交互類(以MFC為例)11/1/20221278.5設計人-機交互子系統二、設計人-機交互界面的策略108.6設計任務管理子系統說明設計工作的一項重要內容是,確定哪些是必須同時動作的對象,哪些是相互排斥的對象,然后進一步設計任務管理子系統11/1/20221288.6設計任務管理子系統說明10/23/2022358.6設計任務管理子系統一、分析并發性通過面向對象分析建立起來的動態模型,是分析并發性的主要依據。如果兩個對象彼此間不存在交互,或者它們同時接受事件,則這兩個對象在本質上是并發的11/1/20221298.6設計任務管理子系統一、分析并發性10/23/20228.6設計任務管理子系統二、設計任務管理子系統設計任務管理子系統,包括確定各類任務并把任務分配給適當的硬件或軟件去執行1、確定事件驅動型任務如與設備、屏幕窗口等的通信2、確定時鐘驅動型任務某些任務每隔一定時間間隔就被觸發以執行某些處理工作過程:睡眠,接收中斷,處理中斷,睡眠……11/1/20221308.6設計任務管理子系統二、設計任務管理子系統10/23/8.6設計任務管理子系統二、設計任務管理子系統3、確定優先任務高優先級低優先級4、確定關鍵任務關鍵任務是有關系統成功或失敗的關鍵處理,這類處理通常都有嚴格的可靠性要求對高可靠性處理應該精心設計和編碼,并且應該嚴格測試11/1/20221318.6設計任務管理子系統二、設計任務管理子系統10/23/8.6設計任務管理子系統二、設計任務管理子系統5、確定協調任務當系統中存在三個以上任務時,就應該增加一個任務,用它作為協調任務6、盡量減少任務數必須仔細分析和選擇每個確實需要的任務。應該使系統中包含的任務數盡量少11/1/20221328.6設計任務管理子系統二、設計任務管理子系統10/23/8.6設計任務管理子系統二、設計任務管理子系統7、確定資源需求使用多處理器或固件,主要是為了滿足高性能的需求。設計者必須通過計算系統載荷(即每秒處理的業務數及處理一個業務所花費的時間),來估算所需要的CPU(或其他固件)的處理能力11/1/20221338.6設計任務管理子系統二、設計任務管理子系統10/23/8.7設計數據管理子系統一、選擇數據存儲管理模式三種模式1、文件管理系統OS的一部分,但是需要額外代碼2、關系數據庫管理系統一致的接口標準化的語言3、面向對象數據庫管理系統擴展的關系數據庫管理系統和擴展的面向對象程序設計語言11/1/20221348.7設計數據管理子系統一、選擇數據存儲管理模式10/28.7設計數據管理子系統二、設計數據管理子系統1、設計數據格式1)文件系統第一范式(就是數據表的每一列不可再分)2)關系數據庫管理系統第三范式每個非關鍵字屬性僅函數依賴于主關鍵字如“學生系宿舍”存在傳遞依賴,不符合第三范式3)面向對象數據庫管理系統擴展的關系數據庫途徑擴展的面向對象程序設計語言途徑11/1/20221358.7設計數據管理子系統二、設計數據管理子系統10/238.7設計數據管理子系統二、設計數據管理子系統2、設計相應的服務如果某個類的對象需要存儲起來,則在這個類中增加一個屬性和服務,用于完成存儲對象自身的工作1)文件系統打開,檢索,更新,關閉注意,為提高性能應該批量處理訪問文件的要求11/1/20221368.7設計數據管理子系統二、設計數據管理子系統10/238.7設計數據管理子系統二、設計數據管理子系統2、設計相應的服務2)關系數據庫管理系統訪問數據表,檢索,更新3)面向對象數據庫管理系統擴展的關系數據庫途徑擴展的面向對象程序設計語言途徑11/1/20221378.7設計數據管理子系統二、設計數據管理子系統10/238.7設計數據管理子系統三、實例ATM中,需要存儲的對象主要是賬戶類的對象。為了支持數據管理子系統的實現,賬戶對象必須知道自己是怎樣存儲的每個對象自己保存自己由數據管理子系統負責存儲對象11/1/20221388.7設計數據管理子系統三、實例10/23/2022458.8設計類中的服務一、確定類中應有的服務對象模型進行對象設計的基本框架對象模型中,通常只在每個類中列出很少幾個最核心的服務動態模型對象中的許多服務都與對象收到的事件密切相關11/1/20221398.8設計類中的服務一、確定類中應有的服務10/23/28.8設計類中的服務一、確定類中應有的服務功能模型 DFD中的某些處理可能與對象提供的服務相對應11/1/20221408.8設計類中的服務一、確定類中應有的服務10/23/28.8設計類中的服務二、設計實現服務的方法1、設計實現服務的算法1)算法復雜度2)容易理解與容易實現3)易修改2、選擇數據結構3、定義內部類和內部操作11/1/20221418.8設計類中的服務二、設計實現服務的方法10/23/28.9設計關聯在面向對象設計過程中,設計人員必須確定實現關聯的具體策略一、關聯的遍歷(使用關聯的方式)單向遍歷雙向遍歷11/1/20221428.9設計關聯在面向對象設計過程中,設計人員必須確定實現8.9設計關聯二、實現單向關聯關聯的重數是一階的實現關聯的指針是一個簡單指針關聯的重數是多階的需要用一個指針集合實現關聯實例(下二頁)11/1/20221438.9設計關聯二、實現單向關聯10/23/2022508.9設計關聯11/1/20221448.9設計關聯10/23/20225111/1/202214510/23/2022528.9設計關聯三、實現雙向關聯方法一、只用屬性實現一個方向的關聯,當需要反向遍歷時就執行一次正向查找11/1/20221468.9設計關聯三、實現雙向關聯10/23/2022538.9設計關聯三、實現雙向關聯方法二、兩個方向的關聯都用屬性實現11/1/20221478.9設計關聯三、實現雙向關聯10/23/2022548.9設計關聯三、實現雙向關聯方法三、用獨立的關聯對象實現雙向關聯11/1/20221488.9設計關聯三、實現雙向關聯10/23/2022558.9設計關聯四、鏈屬性的實現三種情形:1:1關聯1:N關聯M:N關聯11/1/20221498.9設計關聯四、鏈屬性的實現10/23/2022568.10設計優化一、確定優先級二、提高效率的幾項技術1、增加冗余關聯(分析時應避免的)以提高訪問效率哈希表實現11/1/20221508.10設計優化一、確定優先級哈希表實現10/23/208.10設計優化一、確定優先級二、提高效率的幾項技術1、增加冗余關聯以提高訪問效率限定詞(索引)11/1/20221518.10設計優化一、確定優先級限定詞(索引)10/23/8.10設計優化二、提高效率的幾項技術2、調整查詢次序例:查詢“揚州所有的女公交司機”應安排什么查詢次序?3、保留派生屬性(中間結果)11/1/20221528.10設計優化二、提高效率的幾項技術10/23/2028.10設計優化三、調整繼承關系在面向對象設計過程中,建立良好的繼承關系是優化設計的一項重要內容1、抽象與具體首先創建一些滿足具體用途的類,然后對它們進行歸納,一旦歸納出一些通用的類以后,往往可以根據需要再派生出具體類。在進行了一些具體化(即專門化)的工作之后,也許就應該再次歸納了11/1/20221538.10設計優化三、調整繼承關系10/23/20226011/1/202215410/23/20226111/1/202215510/23/20226211/1/202215610/23/20226311/1/202215710/23/2022648.10設計優化三、調整繼承關系2、為提高繼承程度而修改類定義不能違背領域知識和常識應該確保現有類的協議(即同外部世界的接口)不變3、利用委托實現行為共享11/1/20221588.10設計優化三、調整繼承關系10/23/202265繼承了add,remove,first,last將List的實例作為屬性,從而其本身只有兩個操作11/1/2022159繼承了add,remove,first,last將List的8.11實例問題的初衷介紹一個簡化的C++類庫管理系統的分析和設計過程11/1/20221608.11實例問題的初衷10/23/2022678.11實例一、面向對象分析1、需求1)管理用C++語言定義的類2)用戶能夠方便地向類庫中添加新的類,并能建立新類與庫中原有類的關系3)用戶能夠通過類名從類庫中查詢出指定的類4)用戶能夠查看或修改與指定類有關的信息(包括數據成員的定義、成員函數的定義及這個類與其他類的關系)11/1/20221618.11實例一、面向對象分析10/23/2022688.11實例一、面向對象分析1、需求5)用戶能夠從類庫中刪除指定的類6)用戶能夠在瀏覽窗口中方便、快速地瀏覽當前類的父類和子類7)具有“聯想”瀏覽功能,也就是說,可以把當前類的某個子類或父類指定為新的當前類,從而瀏覽這個新當前類的父類和子類8)用戶能夠查看或修改某個類的指定成員函數的源代碼11/1/20221628.11實例一、面向對象分析10/23/2022698.11實例一、面向對象分析1、需求9)本系統是一個簡化的多用戶系統,每個用戶都可以建立自己的類庫,不同類庫之間互不干擾10)對于用戶的誤操作或錯誤的輸入數據,系統能給出適當的提示信息,并且仍然繼續穩定地運行11)系統易學易用,用戶界面應該是GUI(圖形用戶界面)的11/1/20221638.11實例一、面向對象分析10/23/2022708.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象基本對象就兩個類庫類(類條目)由需求3)4)條可知類條目中應包含屬性:類名父類列表成員函數列表數據成員列表11/1/20221648.11實例一、面向對象分析10/23/2022718.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中的每個“父類”應包含信息:名字訪問權虛基類標志(virtual)11/1/20221658.11實例一、面向對象分析10/23/2022728.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中的每個“成員函數”應包含信息:函數名訪問權(public,protected,private)虛函數標志(virtual)返回值類型參數函數代碼(需求8))11/1/20221668.11實例一、面向對象分析10/23/2022738.11實例一、面向對象分析2、建立對象模型1)確定類—&—對象類條目中的每個“數據成員”應包含信息:數據名訪問權(public,protected,private)數據類型由于“父類”、“成員函數”、“數據成員”的相對獨立性,將它
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中化學東南建設有限公司招聘真題2024
- 物料搬運設備產業鏈分析-全面剖析
- 成都交通投資集團有限公司招聘真題2024
- 2025年寵物美容師職業技能考核試卷:寵物美容師寵物美容店運營管理試題
- 2025年花藝師職業資格考試真題卷-花藝設計風格流派辨析試題
- 2025年聲樂演唱職業能力測試卷:聲樂作品演唱與音樂傳播策略研究試題
- 塞爾維亞語動詞時態系統的歷史演變論文
- 2025-2030全球及中國甲烷氣體變送器行業市場現狀供需分析及市場深度研究發展前景及規劃可行性分析研究報告
- 秘書工作中的協調能力培養探析論文
- 編輯出版學中的出版成本控制策略論文
- 關節活動度檢查(ROM-T)徒手肌力檢查(MMT)記錄表(2-1)
- 藥劑科妊娠患者處方點評統計表
- 濟南英語介紹
- XBD型消防穩壓泵性能參數表
- 《專四語法重點題》課件
- 11《軍神》第二課時 一等獎創新教學設計
- 新能源汽車驅動電機系統檢測與維修中職PPT完整全套教學課件
- 《家畜生態學》課程教學大綱
- 屋面及防水工程施工(第二版)PPT完整全套教學課件
- 潘謝礦區西淝河、泥河、濟河、港河水體下安全開采可行性論證報告
- 2023版押品考試題庫必考點含答案
評論
0/150
提交評論