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

下載本文檔

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

文檔簡介

第八章面向?qū)ο笤O(shè)計(jì)11/1/20221第八章面向?qū)ο笤O(shè)計(jì)10/23/20221第八章面向?qū)ο笤O(shè)計(jì)說明簡寫為OOD面向?qū)ο笤O(shè)計(jì)就是用面向?qū)ο笥^點(diǎn)建立求解域模型的過程面向?qū)ο笤O(shè)計(jì)可以被分為兩個(gè)階段系統(tǒng)設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)對象設(shè)計(jì)確定解空間中的類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)服務(wù)的算法11/1/20222第八章面向?qū)ο笤O(shè)計(jì)說明10/23/20222第八章面向?qū)ο笤O(shè)計(jì)8.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則8.2啟發(fā)規(guī)則8.3系統(tǒng)分解8.4設(shè)計(jì)問題域子系統(tǒng)8.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)11/1/20223第八章面向?qū)ο笤O(shè)計(jì)8.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則10/23/2第八章面向?qū)ο笤O(shè)計(jì)8.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)8.8設(shè)計(jì)類中的服務(wù)8.9設(shè)計(jì)關(guān)聯(lián)8.10設(shè)計(jì)優(yōu)化8.11實(shí)例11/1/20224第八章面向?qū)ο笤O(shè)計(jì)8.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/23/8.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則明確設(shè)計(jì)決定質(zhì)量,決定可維護(hù)性第四章的幾條原理仍然有效,增加了面向?qū)ο蟮奶攸c(diǎn)模塊化抽象逐步求精信息隱藏11/1/202258.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則明確10/23/202258.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則1、模塊化2、抽象3、信息隱藏4、弱耦合交互耦合(僅通過消息連接來實(shí)現(xiàn))盡量降低消息連接的復(fù)雜程度減少對象發(fā)送(或接收)的消息數(shù)11/1/202268.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則1、模塊化10/23/202268.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則4、弱耦合繼承耦合應(yīng)該越緊密越好在設(shè)計(jì)時(shí)應(yīng)該使特殊類盡量多繼承并使用其一般化類的屬性和服務(wù)5、強(qiáng)內(nèi)聚服務(wù)內(nèi)聚類內(nèi)聚一般-特殊內(nèi)聚(應(yīng)符合多數(shù)人的概念)11/1/202278.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則4、弱耦合10/23/202278.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則6、可重用首先,盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類)其次,如果確實(shí)需要?jiǎng)?chuàng)建新類,則在設(shè)計(jì)這些新類的協(xié)議時(shí),應(yīng)該考慮將來的可重復(fù)使用性11/1/202288.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則6、可重用10/23/202288.2啟發(fā)規(guī)則明確回顧第四章中的七條啟發(fā)式規(guī)則提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模塊的作用域應(yīng)該在控制域之內(nèi)力爭降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測11/1/202298.2啟發(fā)規(guī)則明確10/23/202298.2啟發(fā)規(guī)則一、設(shè)計(jì)結(jié)果應(yīng)該清晰易懂-為了以后可能的重用服務(wù)1、用詞一致2、使用已有的協(xié)議3、減少消息模式的數(shù)目4、避免模糊的定義11/1/2022108.2啟發(fā)規(guī)則一、設(shè)計(jì)結(jié)果應(yīng)該清晰易懂-為了以后可能的重用8.2啟發(fā)規(guī)則二、一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)應(yīng)該使類等級(jí)中包含的層次數(shù)適當(dāng)(即繼承的層數(shù))11/1/2022118.2啟發(fā)規(guī)則二、一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)10/23/28.2啟發(fā)規(guī)則三、設(shè)計(jì)簡單的類1、避免包含過多的屬性2、有明確的定義3、盡量簡化對象之間的合作關(guān)系4、不要提供太多服務(wù)典型地,一個(gè)類提供的公共服務(wù)不超過7個(gè)11/1/2022128.2啟發(fā)規(guī)則三、設(shè)計(jì)簡單的類10/23/2022128.2啟發(fā)規(guī)則四、使用簡單的協(xié)議一般來說,消息中的參數(shù)不要超過3個(gè)(不是絕對的)五、使用簡單的服務(wù)面向?qū)ο笤O(shè)計(jì)出來的類中的服務(wù)通常都很小,一般只有3~5行源程序語句,可以用僅含一個(gè)動(dòng)詞和一個(gè)賓語的簡單句子描述它的功能11/1/2022138.2啟發(fā)規(guī)則四、使用簡單的協(xié)議10/23/2022138.2啟發(fā)規(guī)則六、把設(shè)計(jì)變動(dòng)減至最小通常,設(shè)計(jì)的質(zhì)量越高,設(shè)計(jì)結(jié)果保持不變的時(shí)間也越長11/1/2022148.2啟發(fā)規(guī)則六、把設(shè)計(jì)變動(dòng)減至最小10/23/202218.3系統(tǒng)分解說明大多數(shù)系統(tǒng)的面向?qū)ο笤O(shè)計(jì)模型,在邏輯上都由四大部分組成。這四大部分對應(yīng)于組成目標(biāo)系統(tǒng)的四個(gè)子系統(tǒng)問題域子系統(tǒng)人-機(jī)交互子系統(tǒng)任務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)11/1/2022158.3系統(tǒng)分解說明10/23/2022158.3系統(tǒng)分解說明面向?qū)ο笤O(shè)計(jì)模型也包含五個(gè)層次主題層類-&對象層結(jié)構(gòu)層屬性層服務(wù)層11/1/2022168.3系統(tǒng)分解說明10/23/2022168.3系統(tǒng)分解11/1/2022178.3系統(tǒng)分解10/23/2022178.3系統(tǒng)分解一、子系統(tǒng)之間的兩種交互方式客戶-供應(yīng)商關(guān)系(Client_supplier)單向交互平等伙伴關(guān)系(peer_to_peer)雙向交互推薦11/1/2022188.3系統(tǒng)分解一、子系統(tǒng)之間的兩種交互方式10/23/208.3系統(tǒng)分解二、組織系統(tǒng)的兩種方案1、層次組織封閉式馬爾可夫原則開放式2、塊狀組織這種組織方案把軟件系統(tǒng)垂直地分解成若干個(gè)相對獨(dú)立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)11/1/2022198.3系統(tǒng)分解二、組織系統(tǒng)的兩種方案10/23/202218.4設(shè)計(jì)問題域子系統(tǒng)說明面向?qū)ο笤O(shè)計(jì)僅需從實(shí)現(xiàn)角度對問題域模型作一些補(bǔ)充或修改,主要是增添、合并或分解類—&—對象、屬性及服務(wù),調(diào)整繼承關(guān)系等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時(shí),應(yīng)該把它進(jìn)一步分解成若干個(gè)更小的子系統(tǒng)11/1/2022208.4設(shè)計(jì)問題域子系統(tǒng)說明10/23/2022208.4設(shè)計(jì)問題域子系統(tǒng)一、調(diào)整需求用戶需求或外部環(huán)境發(fā)生了變化分析員對問題域理解不透徹或缺乏領(lǐng)域?qū)<規(guī)椭?,?dǎo)致面向?qū)ο蠓治瞿P筒荒軠?zhǔn)確反映用戶的真正需求二、重用已有的類三、把問題域類組合在一起在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)者往往通過引入一個(gè)根類而把問題域類組合在一起11/1/2022218.4設(shè)計(jì)問題域子系統(tǒng)一、調(diào)整需求10/23/2022218.4設(shè)計(jì)問題域子系統(tǒng)四、增加一般化類以建立協(xié)議五、ATM系統(tǒng)之例見下頁星型拓?fù)渌鶆澐值娜齻€(gè)更小的子系統(tǒng)實(shí)際上就是分析階段所劃分的三個(gè)主題11/1/2022228.4設(shè)計(jì)問題域子系統(tǒng)四、增加一般化類以建立協(xié)議10/2311/1/20222310/23/2022238.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)說明在第四章的基礎(chǔ)上從面向?qū)ο笤O(shè)計(jì)的角度做些補(bǔ)充一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則1、一致性使用一致的術(shù)語,一致的步驟,一致的動(dòng)作2、減少步驟11/1/2022248.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)說明10/23/2022248.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)11/1/2022258.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)10/23/2022258.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則3、及時(shí)提供反饋信息11/1/2022268.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則4、提供撤銷命令5、無須記憶6、易學(xué)11/1/2022278.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)11/1/2022288.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)10/23/2022288.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則7、富有吸引力11/1/2022298.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略1、分類用戶分類角度按技能水平分類(新手/初級(jí)/中級(jí)/高級(jí))按職務(wù)分類(總經(jīng)理/經(jīng)理/職員)按所屬集團(tuán)分類(職員/顧客)2、描述用戶應(yīng)該仔細(xì)了解將來使用系統(tǒng)的每類用戶的情況,把獲得的各項(xiàng)信息記錄下來11/1/2022308.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略1011/1/20223110/23/20223111/1/20223210/23/2022328.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略3、設(shè)計(jì)命令層次1)研究現(xiàn)有的人-機(jī)交互含義和準(zhǔn)則2)確定初始的命令層次實(shí)質(zhì)上是用過程抽象機(jī)制組織起來的、可供選用的服務(wù)的表示形式3)精化命令層次(考慮下述因素)次序在命令層的每一部分內(nèi)把服務(wù)排好次序11/1/2022338.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略3、設(shè)計(jì)命令層次3)精化命令層次整體-部分關(guān)系有助于在命令層中分組組織服務(wù)寬度和深度操作步驟應(yīng)該用盡量少的單擊、拖動(dòng)和擊鍵組合來表達(dá)命令,而且應(yīng)該為高級(jí)用戶提供簡捷的操作方法4)設(shè)計(jì)人-機(jī)交互類(以MFC為例)11/1/2022348.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略108.6設(shè)計(jì)任務(wù)管理子系統(tǒng)說明設(shè)計(jì)工作的一項(xiàng)重要內(nèi)容是,確定哪些是必須同時(shí)動(dòng)作的對象,哪些是相互排斥的對象,然后進(jìn)一步設(shè)計(jì)任務(wù)管理子系統(tǒng)11/1/2022358.6設(shè)計(jì)任務(wù)管理子系統(tǒng)說明10/23/2022358.6設(shè)計(jì)任務(wù)管理子系統(tǒng)一、分析并發(fā)性通過面向?qū)ο蠓治鼋⑵饋淼膭?dòng)態(tài)模型,是分析并發(fā)性的主要依據(jù)。如果兩個(gè)對象彼此間不存在交互,或者它們同時(shí)接受事件,則這兩個(gè)對象在本質(zhì)上是并發(fā)的11/1/2022368.6設(shè)計(jì)任務(wù)管理子系統(tǒng)一、分析并發(fā)性10/23/20228.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng),包括確定各類任務(wù)并把任務(wù)分配給適當(dāng)?shù)挠布蜍浖?zhí)行1、確定事件驅(qū)動(dòng)型任務(wù)如與設(shè)備、屏幕窗口等的通信2、確定時(shí)鐘驅(qū)動(dòng)型任務(wù)某些任務(wù)每隔一定時(shí)間間隔就被觸發(fā)以執(zhí)行某些處理工作過程:睡眠,接收中斷,處理中斷,睡眠……11/1/2022378.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)3、確定優(yōu)先任務(wù)高優(yōu)先級(jí)低優(yōu)先級(jí)4、確定關(guān)鍵任務(wù)關(guān)鍵任務(wù)是有關(guān)系統(tǒng)成功或失敗的關(guān)鍵處理,這類處理通常都有嚴(yán)格的可靠性要求對高可靠性處理應(yīng)該精心設(shè)計(jì)和編碼,并且應(yīng)該嚴(yán)格測試11/1/2022388.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)5、確定協(xié)調(diào)任務(wù)當(dāng)系統(tǒng)中存在三個(gè)以上任務(wù)時(shí),就應(yīng)該增加一個(gè)任務(wù),用它作為協(xié)調(diào)任務(wù)6、盡量減少任務(wù)數(shù)必須仔細(xì)分析和選擇每個(gè)確實(shí)需要的任務(wù)。應(yīng)該使系統(tǒng)中包含的任務(wù)數(shù)盡量少11/1/2022398.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)7、確定資源需求使用多處理器或固件,主要是為了滿足高性能的需求。設(shè)計(jì)者必須通過計(jì)算系統(tǒng)載荷(即每秒處理的業(yè)務(wù)數(shù)及處理一個(gè)業(yè)務(wù)所花費(fèi)的時(shí)間),來估算所需要的CPU(或其他固件)的處理能力11/1/2022408.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)一、選擇數(shù)據(jù)存儲(chǔ)管理模式三種模式1、文件管理系統(tǒng)OS的一部分,但是需要額外代碼2、關(guān)系數(shù)據(jù)庫管理系統(tǒng)一致的接口標(biāo)準(zhǔn)化的語言3、面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)擴(kuò)展的關(guān)系數(shù)據(jù)庫管理系統(tǒng)和擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語言11/1/2022418.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)一、選擇數(shù)據(jù)存儲(chǔ)管理模式10/28.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)1、設(shè)計(jì)數(shù)據(jù)格式1)文件系統(tǒng)第一范式(就是數(shù)據(jù)表的每一列不可再分)2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)第三范式每個(gè)非關(guān)鍵字屬性僅函數(shù)依賴于主關(guān)鍵字如“學(xué)生系宿舍”存在傳遞依賴,不符合第三范式3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)擴(kuò)展的關(guān)系數(shù)據(jù)庫途徑擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語言途徑11/1/2022428.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/238.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)2、設(shè)計(jì)相應(yīng)的服務(wù)如果某個(gè)類的對象需要存儲(chǔ)起來,則在這個(gè)類中增加一個(gè)屬性和服務(wù),用于完成存儲(chǔ)對象自身的工作1)文件系統(tǒng)打開,檢索,更新,關(guān)閉注意,為提高性能應(yīng)該批量處理訪問文件的要求11/1/2022438.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/238.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)2、設(shè)計(jì)相應(yīng)的服務(wù)2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)訪問數(shù)據(jù)表,檢索,更新3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)擴(kuò)展的關(guān)系數(shù)據(jù)庫途徑擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語言途徑11/1/2022448.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/238.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)三、實(shí)例ATM中,需要存儲(chǔ)的對象主要是賬戶類的對象。為了支持?jǐn)?shù)據(jù)管理子系統(tǒng)的實(shí)現(xiàn),賬戶對象必須知道自己是怎樣存儲(chǔ)的每個(gè)對象自己保存自己由數(shù)據(jù)管理子系統(tǒng)負(fù)責(zé)存儲(chǔ)對象11/1/2022458.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)三、實(shí)例10/23/2022458.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)對象模型進(jìn)行對象設(shè)計(jì)的基本框架對象模型中,通常只在每個(gè)類中列出很少幾個(gè)最核心的服務(wù)動(dòng)態(tài)模型對象中的許多服務(wù)都與對象收到的事件密切相關(guān)11/1/2022468.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)10/23/28.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)功能模型 DFD中的某些處理可能與對象提供的服務(wù)相對應(yīng)11/1/2022478.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)10/23/28.8設(shè)計(jì)類中的服務(wù)二、設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法1、設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法1)算法復(fù)雜度2)容易理解與容易實(shí)現(xiàn)3)易修改2、選擇數(shù)據(jù)結(jié)構(gòu)3、定義內(nèi)部類和內(nèi)部操作11/1/2022488.8設(shè)計(jì)類中的服務(wù)二、設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法10/23/28.9設(shè)計(jì)關(guān)聯(lián)在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)人員必須確定實(shí)現(xiàn)關(guān)聯(lián)的具體策略一、關(guān)聯(lián)的遍歷(使用關(guān)聯(lián)的方式)單向遍歷雙向遍歷11/1/2022498.9設(shè)計(jì)關(guān)聯(lián)在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)人員必須確定實(shí)現(xiàn)8.9設(shè)計(jì)關(guān)聯(lián)二、實(shí)現(xiàn)單向關(guān)聯(lián)關(guān)聯(lián)的重?cái)?shù)是一階的實(shí)現(xiàn)關(guān)聯(lián)的指針是一個(gè)簡單指針關(guān)聯(lián)的重?cái)?shù)是多階的需要用一個(gè)指針集合實(shí)現(xiàn)關(guān)聯(lián)實(shí)例(下二頁)11/1/2022508.9設(shè)計(jì)關(guān)聯(lián)二、實(shí)現(xiàn)單向關(guān)聯(lián)10/23/2022508.9設(shè)計(jì)關(guān)聯(lián)11/1/2022518.9設(shè)計(jì)關(guān)聯(lián)10/23/20225111/1/20225210/23/2022528.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)方法一、只用屬性實(shí)現(xiàn)一個(gè)方向的關(guān)聯(lián),當(dāng)需要反向遍歷時(shí)就執(zhí)行一次正向查找11/1/2022538.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)10/23/2022538.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)方法二、兩個(gè)方向的關(guān)聯(lián)都用屬性實(shí)現(xiàn)11/1/2022548.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)10/23/2022548.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)方法三、用獨(dú)立的關(guān)聯(lián)對象實(shí)現(xiàn)雙向關(guān)聯(lián)11/1/2022558.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)10/23/2022558.9設(shè)計(jì)關(guān)聯(lián)四、鏈屬性的實(shí)現(xiàn)三種情形:1:1關(guān)聯(lián)1:N關(guān)聯(lián)M:N關(guān)聯(lián)11/1/2022568.9設(shè)計(jì)關(guān)聯(lián)四、鏈屬性的實(shí)現(xiàn)10/23/2022568.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)二、提高效率的幾項(xiàng)技術(shù)1、增加冗余關(guān)聯(lián)(分析時(shí)應(yīng)避免的)以提高訪問效率哈希表實(shí)現(xiàn)11/1/2022578.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)哈希表實(shí)現(xiàn)10/23/208.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)二、提高效率的幾項(xiàng)技術(shù)1、增加冗余關(guān)聯(lián)以提高訪問效率限定詞(索引)11/1/2022588.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)限定詞(索引)10/23/8.10設(shè)計(jì)優(yōu)化二、提高效率的幾項(xiàng)技術(shù)2、調(diào)整查詢次序例:查詢“揚(yáng)州所有的女公交司機(jī)”應(yīng)安排什么查詢次序?3、保留派生屬性(中間結(jié)果)11/1/2022598.10設(shè)計(jì)優(yōu)化二、提高效率的幾項(xiàng)技術(shù)10/23/2028.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系在面向?qū)ο笤O(shè)計(jì)過程中,建立良好的繼承關(guān)系是優(yōu)化設(shè)計(jì)的一項(xiàng)重要內(nèi)容1、抽象與具體首先創(chuàng)建一些滿足具體用途的類,然后對它們進(jìn)行歸納,一旦歸納出一些通用的類以后,往往可以根據(jù)需要再派生出具體類。在進(jìn)行了一些具體化(即專門化)的工作之后,也許就應(yīng)該再次歸納了11/1/2022608.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系10/23/20226011/1/20226110/23/20226111/1/20226210/23/20226211/1/20226310/23/20226311/1/20226410/23/2022648.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系2、為提高繼承程度而修改類定義不能違背領(lǐng)域知識(shí)和常識(shí)應(yīng)該確?,F(xiàn)有類的協(xié)議(即同外部世界的接口)不變3、利用委托實(shí)現(xiàn)行為共享11/1/2022658.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系10/23/202265繼承了add,remove,first,last將List的實(shí)例作為屬性,從而其本身只有兩個(gè)操作11/1/202266繼承了add,remove,first,last將List的8.11實(shí)例問題的初衷介紹一個(gè)簡化的C++類庫管理系統(tǒng)的分析和設(shè)計(jì)過程11/1/2022678.11實(shí)例問題的初衷10/23/2022678.11實(shí)例一、面向?qū)ο蠓治?、需求1)管理用C++語言定義的類2)用戶能夠方便地向類庫中添加新的類,并能建立新類與庫中原有類的關(guān)系3)用戶能夠通過類名從類庫中查詢出指定的類4)用戶能夠查看或修改與指定類有關(guān)的信息(包括數(shù)據(jù)成員的定義、成員函數(shù)的定義及這個(gè)類與其他類的關(guān)系)11/1/2022688.11實(shí)例一、面向?qū)ο蠓治?0/23/2022688.11實(shí)例一、面向?qū)ο蠓治?、需求5)用戶能夠從類庫中刪除指定的類6)用戶能夠在瀏覽窗口中方便、快速地瀏覽當(dāng)前類的父類和子類7)具有“聯(lián)想”瀏覽功能,也就是說,可以把當(dāng)前類的某個(gè)子類或父類指定為新的當(dāng)前類,從而瀏覽這個(gè)新當(dāng)前類的父類和子類8)用戶能夠查看或修改某個(gè)類的指定成員函數(shù)的源代碼11/1/2022698.11實(shí)例一、面向?qū)ο蠓治?0/23/2022698.11實(shí)例一、面向?qū)ο蠓治?、需求9)本系統(tǒng)是一個(gè)簡化的多用戶系統(tǒng),每個(gè)用戶都可以建立自己的類庫,不同類庫之間互不干擾10)對于用戶的誤操作或錯(cuò)誤的輸入數(shù)據(jù),系統(tǒng)能給出適當(dāng)?shù)奶崾拘畔?,并且仍然繼續(xù)穩(wěn)定地運(yùn)行11)系統(tǒng)易學(xué)易用,用戶界面應(yīng)該是GUI(圖形用戶界面)的11/1/2022708.11實(shí)例一、面向?qū)ο蠓治?0/23/2022708.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象基本對象就兩個(gè)類庫類(類條目)由需求3)4)條可知類條目中應(yīng)包含屬性:類名父類列表成員函數(shù)列表數(shù)據(jù)成員列表11/1/2022718.11實(shí)例一、面向?qū)ο蠓治?0/23/2022718.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中的每個(gè)“父類”應(yīng)包含信息:名字訪問權(quán)虛基類標(biāo)志(virtual)11/1/2022728.11實(shí)例一、面向?qū)ο蠓治?0/23/2022728.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中的每個(gè)“成員函數(shù)”應(yīng)包含信息:函數(shù)名訪問權(quán)(public,protected,private)虛函數(shù)標(biāo)志(virtual)返回值類型參數(shù)函數(shù)代碼(需求8))11/1/2022738.11實(shí)例一、面向?qū)ο蠓治?0/23/2022738.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中的每個(gè)“數(shù)據(jù)成員”應(yīng)包含信息:數(shù)據(jù)名訪問權(quán)(public,protected,private)數(shù)據(jù)類型由于“父類”、“成員函數(shù)”、“數(shù)據(jù)成員”的相對獨(dú)立性,將它們都作為對象11/1/2022748.11實(shí)例一、面向?qū)ο蠓治?0/23/2022748.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中應(yīng)包含操作:對于類名(設(shè)置類名)對于父類列表(添加、刪除、更改)對于成員函數(shù)(添加、刪除、更改)對于數(shù)據(jù)成員(添加、刪除、更改)11/1/2022758.11實(shí)例一、面向?qū)ο蠓治?0/23/2022758.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類庫包含的屬性:庫名類條目列表類庫包含的操作:插入一個(gè)類條目(需求2))刪除一個(gè)類條目(需求5))存儲(chǔ)類庫讀出類庫(放到內(nèi)存中)11/1/2022768.11實(shí)例一、面向?qū)ο蠓治?0/23/2022768.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型2)分析類—&—對象之間的關(guān)系一個(gè)用戶擁有多個(gè)類庫每個(gè)類庫由0或多個(gè)類條目組成每個(gè)類條目由0或多個(gè)父類每個(gè)類條目0或多個(gè)數(shù)據(jù)成員每個(gè)類條目0或多個(gè)成員函數(shù)組成注:上述關(guān)系全是對象之間的關(guān)系,而不是類之間的關(guān)系11/1/2022778.11實(shí)例一、面向?qū)ο蠓治?0/23/2022778.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型下頁動(dòng)態(tài)模型(無需)不存在狀態(tài)轉(zhuǎn)換的問題功能模型(無需)沒有數(shù)據(jù)轉(zhuǎn)換的問題,所以無需用DFD描述功能11/1/2022788.11實(shí)例一、面向?qū)ο蠓治?0/23/20227811/1/20227910/23/2022798.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)1、設(shè)計(jì)類庫結(jié)構(gòu)兩種可選結(jié)構(gòu)二叉樹(下頁圖示)鏈表操作簡單,邏輯表現(xiàn)力不好11/1/2022808.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/2022808.11實(shí)例討論其典型優(yōu)缺點(diǎn)11/1/2022818.11實(shí)例討論其典型優(yōu)缺點(diǎn)10/23/2022818.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)1、設(shè)計(jì)類庫結(jié)構(gòu)最終的選擇:11/1/2022828.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/2022828.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)2、設(shè)計(jì)問題域子系統(tǒng)從實(shí)現(xiàn)的角度對前述對象模型所做補(bǔ)充:1)類條目(ClassEntry)用“父類鏈表頭指針”、“成員函數(shù)鏈表頭指針”、“數(shù)據(jù)成員鏈表頭指針”代替對應(yīng)的列表增加“注釋”增加“next”指針增加“查找指定父類信息”、“查找指定成員函數(shù)信息”、“查找指定數(shù)據(jù)成員信息”11/1/2022838.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/2022838.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)2、設(shè)計(jì)問題域子系統(tǒng)從實(shí)現(xiàn)的角度對前述對象模型所做補(bǔ)充:2)類庫(ClassEntryLink)將“類條目列表”改為“類鏈頭指針”應(yīng)有服務(wù)(取得庫中類條目的個(gè)數(shù),讀文件并在內(nèi)存中建立類鏈表,寫鏈表,插入一個(gè)類條目,刪除一個(gè)類條目,按類名查找并將內(nèi)容復(fù)制到指定地點(diǎn))11/1/2022848.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/2022848.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)2、設(shè)計(jì)問題域子系統(tǒng)從實(shí)現(xiàn)的角度對前述對象模型所做補(bǔ)充:3)父類(ClassBase),成員函數(shù)(ClassFun),數(shù)據(jù)成員(ClassData),各添加一個(gè)指針(next)4)類條目緩沖區(qū)(Buffer)11/1/2022858.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/20228511/1/20228610/23/2022868.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)3、設(shè)計(jì)人-機(jī)交互子系統(tǒng)1)窗口包含下述構(gòu)件:登錄窗口11/1/2022878.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/2022878.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)3、設(shè)計(jì)人-機(jī)交互子系統(tǒng)1)窗口包含下述構(gòu)件:主窗口11/1/2022888.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/202288創(chuàng)建窗口11/1/202289創(chuàng)建窗口10/23/202289選擇瀏覽方式窗口11/1/202290選擇瀏覽方式窗口10/23/202290類名瀏覽窗口11/1/202291類名瀏覽窗口10/23/2022918.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)3、設(shè)計(jì)人-機(jī)交互子系統(tǒng)1)窗口包含下述構(gòu)件:按類關(guān)系瀏覽窗口(略)2)重用我們設(shè)計(jì)的是一個(gè)可重用類庫管理系統(tǒng),在設(shè)計(jì)和實(shí)現(xiàn)這個(gè)類庫管理系統(tǒng)的過程中,自然應(yīng)該盡可能重用已有的軟構(gòu)件11/1/2022928.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/2022928.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)3、設(shè)計(jì)人-機(jī)交互子系統(tǒng)2)重用采用VC環(huán)境,盡可能重用MFC中的類上述所有的窗口類可以從MFC中的CDialog類繼承只有很少的編程工作量4、其它類(略)沒有設(shè)計(jì)如下的兩個(gè)子系統(tǒng):任務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)11/1/2022938.11實(shí)例二、面向?qū)ο笤O(shè)計(jì)10/23/202293第八章面向?qū)ο笤O(shè)計(jì)11/1/202294第八章面向?qū)ο笤O(shè)計(jì)10/23/20221第八章面向?qū)ο笤O(shè)計(jì)說明簡寫為OOD面向?qū)ο笤O(shè)計(jì)就是用面向?qū)ο笥^點(diǎn)建立求解域模型的過程面向?qū)ο笤O(shè)計(jì)可以被分為兩個(gè)階段系統(tǒng)設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)對象設(shè)計(jì)確定解空間中的類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)服務(wù)的算法11/1/202295第八章面向?qū)ο笤O(shè)計(jì)說明10/23/20222第八章面向?qū)ο笤O(shè)計(jì)8.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則8.2啟發(fā)規(guī)則8.3系統(tǒng)分解8.4設(shè)計(jì)問題域子系統(tǒng)8.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)11/1/202296第八章面向?qū)ο笤O(shè)計(jì)8.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則10/23/2第八章面向?qū)ο笤O(shè)計(jì)8.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)8.8設(shè)計(jì)類中的服務(wù)8.9設(shè)計(jì)關(guān)聯(lián)8.10設(shè)計(jì)優(yōu)化8.11實(shí)例11/1/202297第八章面向?qū)ο笤O(shè)計(jì)8.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/23/8.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則明確設(shè)計(jì)決定質(zhì)量,決定可維護(hù)性第四章的幾條原理仍然有效,增加了面向?qū)ο蟮奶攸c(diǎn)模塊化抽象逐步求精信息隱藏11/1/2022988.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則明確10/23/202258.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則1、模塊化2、抽象3、信息隱藏4、弱耦合交互耦合(僅通過消息連接來實(shí)現(xiàn))盡量降低消息連接的復(fù)雜程度減少對象發(fā)送(或接收)的消息數(shù)11/1/2022998.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則1、模塊化10/23/202268.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則4、弱耦合繼承耦合應(yīng)該越緊密越好在設(shè)計(jì)時(shí)應(yīng)該使特殊類盡量多繼承并使用其一般化類的屬性和服務(wù)5、強(qiáng)內(nèi)聚服務(wù)內(nèi)聚類內(nèi)聚一般-特殊內(nèi)聚(應(yīng)符合多數(shù)人的概念)11/1/20221008.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則4、弱耦合10/23/202278.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則6、可重用首先,盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類)其次,如果確實(shí)需要?jiǎng)?chuàng)建新類,則在設(shè)計(jì)這些新類的協(xié)議時(shí),應(yīng)該考慮將來的可重復(fù)使用性11/1/20221018.1面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則6、可重用10/23/202288.2啟發(fā)規(guī)則明確回顧第四章中的七條啟發(fā)式規(guī)則提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模塊的作用域應(yīng)該在控制域之內(nèi)力爭降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測11/1/20221028.2啟發(fā)規(guī)則明確10/23/202298.2啟發(fā)規(guī)則一、設(shè)計(jì)結(jié)果應(yīng)該清晰易懂-為了以后可能的重用服務(wù)1、用詞一致2、使用已有的協(xié)議3、減少消息模式的數(shù)目4、避免模糊的定義11/1/20221038.2啟發(fā)規(guī)則一、設(shè)計(jì)結(jié)果應(yīng)該清晰易懂-為了以后可能的重用8.2啟發(fā)規(guī)則二、一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)應(yīng)該使類等級(jí)中包含的層次數(shù)適當(dāng)(即繼承的層數(shù))11/1/20221048.2啟發(fā)規(guī)則二、一般-特殊結(jié)構(gòu)的深度應(yīng)適當(dāng)10/23/28.2啟發(fā)規(guī)則三、設(shè)計(jì)簡單的類1、避免包含過多的屬性2、有明確的定義3、盡量簡化對象之間的合作關(guān)系4、不要提供太多服務(wù)典型地,一個(gè)類提供的公共服務(wù)不超過7個(gè)11/1/20221058.2啟發(fā)規(guī)則三、設(shè)計(jì)簡單的類10/23/2022128.2啟發(fā)規(guī)則四、使用簡單的協(xié)議一般來說,消息中的參數(shù)不要超過3個(gè)(不是絕對的)五、使用簡單的服務(wù)面向?qū)ο笤O(shè)計(jì)出來的類中的服務(wù)通常都很小,一般只有3~5行源程序語句,可以用僅含一個(gè)動(dòng)詞和一個(gè)賓語的簡單句子描述它的功能11/1/20221068.2啟發(fā)規(guī)則四、使用簡單的協(xié)議10/23/2022138.2啟發(fā)規(guī)則六、把設(shè)計(jì)變動(dòng)減至最小通常,設(shè)計(jì)的質(zhì)量越高,設(shè)計(jì)結(jié)果保持不變的時(shí)間也越長11/1/20221078.2啟發(fā)規(guī)則六、把設(shè)計(jì)變動(dòng)減至最小10/23/202218.3系統(tǒng)分解說明大多數(shù)系統(tǒng)的面向?qū)ο笤O(shè)計(jì)模型,在邏輯上都由四大部分組成。這四大部分對應(yīng)于組成目標(biāo)系統(tǒng)的四個(gè)子系統(tǒng)問題域子系統(tǒng)人-機(jī)交互子系統(tǒng)任務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)11/1/20221088.3系統(tǒng)分解說明10/23/2022158.3系統(tǒng)分解說明面向?qū)ο笤O(shè)計(jì)模型也包含五個(gè)層次主題層類-&對象層結(jié)構(gòu)層屬性層服務(wù)層11/1/20221098.3系統(tǒng)分解說明10/23/2022168.3系統(tǒng)分解11/1/20221108.3系統(tǒng)分解10/23/2022178.3系統(tǒng)分解一、子系統(tǒng)之間的兩種交互方式客戶-供應(yīng)商關(guān)系(Client_supplier)單向交互平等伙伴關(guān)系(peer_to_peer)雙向交互推薦11/1/20221118.3系統(tǒng)分解一、子系統(tǒng)之間的兩種交互方式10/23/208.3系統(tǒng)分解二、組織系統(tǒng)的兩種方案1、層次組織封閉式馬爾可夫原則開放式2、塊狀組織這種組織方案把軟件系統(tǒng)垂直地分解成若干個(gè)相對獨(dú)立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的服務(wù)11/1/20221128.3系統(tǒng)分解二、組織系統(tǒng)的兩種方案10/23/202218.4設(shè)計(jì)問題域子系統(tǒng)說明面向?qū)ο笤O(shè)計(jì)僅需從實(shí)現(xiàn)角度對問題域模型作一些補(bǔ)充或修改,主要是增添、合并或分解類—&—對象、屬性及服務(wù),調(diào)整繼承關(guān)系等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時(shí),應(yīng)該把它進(jìn)一步分解成若干個(gè)更小的子系統(tǒng)11/1/20221138.4設(shè)計(jì)問題域子系統(tǒng)說明10/23/2022208.4設(shè)計(jì)問題域子系統(tǒng)一、調(diào)整需求用戶需求或外部環(huán)境發(fā)生了變化分析員對問題域理解不透徹或缺乏領(lǐng)域?qū)<規(guī)椭?,?dǎo)致面向?qū)ο蠓治瞿P筒荒軠?zhǔn)確反映用戶的真正需求二、重用已有的類三、把問題域類組合在一起在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)者往往通過引入一個(gè)根類而把問題域類組合在一起11/1/20221148.4設(shè)計(jì)問題域子系統(tǒng)一、調(diào)整需求10/23/2022218.4設(shè)計(jì)問題域子系統(tǒng)四、增加一般化類以建立協(xié)議五、ATM系統(tǒng)之例見下頁星型拓?fù)渌鶆澐值娜齻€(gè)更小的子系統(tǒng)實(shí)際上就是分析階段所劃分的三個(gè)主題11/1/20221158.4設(shè)計(jì)問題域子系統(tǒng)四、增加一般化類以建立協(xié)議10/2311/1/202211610/23/2022238.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)說明在第四章的基礎(chǔ)上從面向?qū)ο笤O(shè)計(jì)的角度做些補(bǔ)充一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則1、一致性使用一致的術(shù)語,一致的步驟,一致的動(dòng)作2、減少步驟11/1/20221178.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)說明10/23/2022248.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)11/1/20221188.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)10/23/2022258.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則3、及時(shí)提供反饋信息11/1/20221198.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則4、提供撤銷命令5、無須記憶6、易學(xué)11/1/20221208.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)11/1/20221218.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)10/23/2022288.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則7、富有吸引力11/1/20221228.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)一、設(shè)計(jì)人-機(jī)交互界面的準(zhǔn)則108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略1、分類用戶分類角度按技能水平分類(新手/初級(jí)/中級(jí)/高級(jí))按職務(wù)分類(總經(jīng)理/經(jīng)理/職員)按所屬集團(tuán)分類(職員/顧客)2、描述用戶應(yīng)該仔細(xì)了解將來使用系統(tǒng)的每類用戶的情況,把獲得的各項(xiàng)信息記錄下來11/1/20221238.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略1011/1/202212410/23/20223111/1/202212510/23/2022328.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略3、設(shè)計(jì)命令層次1)研究現(xiàn)有的人-機(jī)交互含義和準(zhǔn)則2)確定初始的命令層次實(shí)質(zhì)上是用過程抽象機(jī)制組織起來的、可供選用的服務(wù)的表示形式3)精化命令層次(考慮下述因素)次序在命令層的每一部分內(nèi)把服務(wù)排好次序11/1/20221268.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略108.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略3、設(shè)計(jì)命令層次3)精化命令層次整體-部分關(guān)系有助于在命令層中分組組織服務(wù)寬度和深度操作步驟應(yīng)該用盡量少的單擊、拖動(dòng)和擊鍵組合來表達(dá)命令,而且應(yīng)該為高級(jí)用戶提供簡捷的操作方法4)設(shè)計(jì)人-機(jī)交互類(以MFC為例)11/1/20221278.5設(shè)計(jì)人-機(jī)交互子系統(tǒng)二、設(shè)計(jì)人-機(jī)交互界面的策略108.6設(shè)計(jì)任務(wù)管理子系統(tǒng)說明設(shè)計(jì)工作的一項(xiàng)重要內(nèi)容是,確定哪些是必須同時(shí)動(dòng)作的對象,哪些是相互排斥的對象,然后進(jìn)一步設(shè)計(jì)任務(wù)管理子系統(tǒng)11/1/20221288.6設(shè)計(jì)任務(wù)管理子系統(tǒng)說明10/23/2022358.6設(shè)計(jì)任務(wù)管理子系統(tǒng)一、分析并發(fā)性通過面向?qū)ο蠓治鼋⑵饋淼膭?dòng)態(tài)模型,是分析并發(fā)性的主要依據(jù)。如果兩個(gè)對象彼此間不存在交互,或者它們同時(shí)接受事件,則這兩個(gè)對象在本質(zhì)上是并發(fā)的11/1/20221298.6設(shè)計(jì)任務(wù)管理子系統(tǒng)一、分析并發(fā)性10/23/20228.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)設(shè)計(jì)任務(wù)管理子系統(tǒng),包括確定各類任務(wù)并把任務(wù)分配給適當(dāng)?shù)挠布蜍浖?zhí)行1、確定事件驅(qū)動(dòng)型任務(wù)如與設(shè)備、屏幕窗口等的通信2、確定時(shí)鐘驅(qū)動(dòng)型任務(wù)某些任務(wù)每隔一定時(shí)間間隔就被觸發(fā)以執(zhí)行某些處理工作過程:睡眠,接收中斷,處理中斷,睡眠……11/1/20221308.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)3、確定優(yōu)先任務(wù)高優(yōu)先級(jí)低優(yōu)先級(jí)4、確定關(guān)鍵任務(wù)關(guān)鍵任務(wù)是有關(guān)系統(tǒng)成功或失敗的關(guān)鍵處理,這類處理通常都有嚴(yán)格的可靠性要求對高可靠性處理應(yīng)該精心設(shè)計(jì)和編碼,并且應(yīng)該嚴(yán)格測試11/1/20221318.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)5、確定協(xié)調(diào)任務(wù)當(dāng)系統(tǒng)中存在三個(gè)以上任務(wù)時(shí),就應(yīng)該增加一個(gè)任務(wù),用它作為協(xié)調(diào)任務(wù)6、盡量減少任務(wù)數(shù)必須仔細(xì)分析和選擇每個(gè)確實(shí)需要的任務(wù)。應(yīng)該使系統(tǒng)中包含的任務(wù)數(shù)盡量少11/1/20221328.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)7、確定資源需求使用多處理器或固件,主要是為了滿足高性能的需求。設(shè)計(jì)者必須通過計(jì)算系統(tǒng)載荷(即每秒處理的業(yè)務(wù)數(shù)及處理一個(gè)業(yè)務(wù)所花費(fèi)的時(shí)間),來估算所需要的CPU(或其他固件)的處理能力11/1/20221338.6設(shè)計(jì)任務(wù)管理子系統(tǒng)二、設(shè)計(jì)任務(wù)管理子系統(tǒng)10/23/8.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)一、選擇數(shù)據(jù)存儲(chǔ)管理模式三種模式1、文件管理系統(tǒng)OS的一部分,但是需要額外代碼2、關(guān)系數(shù)據(jù)庫管理系統(tǒng)一致的接口標(biāo)準(zhǔn)化的語言3、面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)擴(kuò)展的關(guān)系數(shù)據(jù)庫管理系統(tǒng)和擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語言11/1/20221348.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)一、選擇數(shù)據(jù)存儲(chǔ)管理模式10/28.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)1、設(shè)計(jì)數(shù)據(jù)格式1)文件系統(tǒng)第一范式(就是數(shù)據(jù)表的每一列不可再分)2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)第三范式每個(gè)非關(guān)鍵字屬性僅函數(shù)依賴于主關(guān)鍵字如“學(xué)生系宿舍”存在傳遞依賴,不符合第三范式3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)擴(kuò)展的關(guān)系數(shù)據(jù)庫途徑擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語言途徑11/1/20221358.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/238.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)2、設(shè)計(jì)相應(yīng)的服務(wù)如果某個(gè)類的對象需要存儲(chǔ)起來,則在這個(gè)類中增加一個(gè)屬性和服務(wù),用于完成存儲(chǔ)對象自身的工作1)文件系統(tǒng)打開,檢索,更新,關(guān)閉注意,為提高性能應(yīng)該批量處理訪問文件的要求11/1/20221368.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/238.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)2、設(shè)計(jì)相應(yīng)的服務(wù)2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)訪問數(shù)據(jù)表,檢索,更新3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)擴(kuò)展的關(guān)系數(shù)據(jù)庫途徑擴(kuò)展的面向?qū)ο蟪绦蛟O(shè)計(jì)語言途徑11/1/20221378.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)二、設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)10/238.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)三、實(shí)例ATM中,需要存儲(chǔ)的對象主要是賬戶類的對象。為了支持?jǐn)?shù)據(jù)管理子系統(tǒng)的實(shí)現(xiàn),賬戶對象必須知道自己是怎樣存儲(chǔ)的每個(gè)對象自己保存自己由數(shù)據(jù)管理子系統(tǒng)負(fù)責(zé)存儲(chǔ)對象11/1/20221388.7設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)三、實(shí)例10/23/2022458.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)對象模型進(jìn)行對象設(shè)計(jì)的基本框架對象模型中,通常只在每個(gè)類中列出很少幾個(gè)最核心的服務(wù)動(dòng)態(tài)模型對象中的許多服務(wù)都與對象收到的事件密切相關(guān)11/1/20221398.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)10/23/28.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)功能模型 DFD中的某些處理可能與對象提供的服務(wù)相對應(yīng)11/1/20221408.8設(shè)計(jì)類中的服務(wù)一、確定類中應(yīng)有的服務(wù)10/23/28.8設(shè)計(jì)類中的服務(wù)二、設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法1、設(shè)計(jì)實(shí)現(xiàn)服務(wù)的算法1)算法復(fù)雜度2)容易理解與容易實(shí)現(xiàn)3)易修改2、選擇數(shù)據(jù)結(jié)構(gòu)3、定義內(nèi)部類和內(nèi)部操作11/1/20221418.8設(shè)計(jì)類中的服務(wù)二、設(shè)計(jì)實(shí)現(xiàn)服務(wù)的方法10/23/28.9設(shè)計(jì)關(guān)聯(lián)在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)人員必須確定實(shí)現(xiàn)關(guān)聯(lián)的具體策略一、關(guān)聯(lián)的遍歷(使用關(guān)聯(lián)的方式)單向遍歷雙向遍歷11/1/20221428.9設(shè)計(jì)關(guān)聯(lián)在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)人員必須確定實(shí)現(xiàn)8.9設(shè)計(jì)關(guān)聯(lián)二、實(shí)現(xiàn)單向關(guān)聯(lián)關(guān)聯(lián)的重?cái)?shù)是一階的實(shí)現(xiàn)關(guān)聯(lián)的指針是一個(gè)簡單指針關(guān)聯(lián)的重?cái)?shù)是多階的需要用一個(gè)指針集合實(shí)現(xiàn)關(guān)聯(lián)實(shí)例(下二頁)11/1/20221438.9設(shè)計(jì)關(guān)聯(lián)二、實(shí)現(xiàn)單向關(guān)聯(lián)10/23/2022508.9設(shè)計(jì)關(guān)聯(lián)11/1/20221448.9設(shè)計(jì)關(guān)聯(lián)10/23/20225111/1/202214510/23/2022528.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)方法一、只用屬性實(shí)現(xiàn)一個(gè)方向的關(guān)聯(lián),當(dāng)需要反向遍歷時(shí)就執(zhí)行一次正向查找11/1/20221468.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)10/23/2022538.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)方法二、兩個(gè)方向的關(guān)聯(lián)都用屬性實(shí)現(xiàn)11/1/20221478.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)10/23/2022548.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)方法三、用獨(dú)立的關(guān)聯(lián)對象實(shí)現(xiàn)雙向關(guān)聯(lián)11/1/20221488.9設(shè)計(jì)關(guān)聯(lián)三、實(shí)現(xiàn)雙向關(guān)聯(lián)10/23/2022558.9設(shè)計(jì)關(guān)聯(lián)四、鏈屬性的實(shí)現(xiàn)三種情形:1:1關(guān)聯(lián)1:N關(guān)聯(lián)M:N關(guān)聯(lián)11/1/20221498.9設(shè)計(jì)關(guān)聯(lián)四、鏈屬性的實(shí)現(xiàn)10/23/2022568.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)二、提高效率的幾項(xiàng)技術(shù)1、增加冗余關(guān)聯(lián)(分析時(shí)應(yīng)避免的)以提高訪問效率哈希表實(shí)現(xiàn)11/1/20221508.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)哈希表實(shí)現(xiàn)10/23/208.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)二、提高效率的幾項(xiàng)技術(shù)1、增加冗余關(guān)聯(lián)以提高訪問效率限定詞(索引)11/1/20221518.10設(shè)計(jì)優(yōu)化一、確定優(yōu)先級(jí)限定詞(索引)10/23/8.10設(shè)計(jì)優(yōu)化二、提高效率的幾項(xiàng)技術(shù)2、調(diào)整查詢次序例:查詢“揚(yáng)州所有的女公交司機(jī)”應(yīng)安排什么查詢次序?3、保留派生屬性(中間結(jié)果)11/1/20221528.10設(shè)計(jì)優(yōu)化二、提高效率的幾項(xiàng)技術(shù)10/23/2028.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系在面向?qū)ο笤O(shè)計(jì)過程中,建立良好的繼承關(guān)系是優(yōu)化設(shè)計(jì)的一項(xiàng)重要內(nèi)容1、抽象與具體首先創(chuàng)建一些滿足具體用途的類,然后對它們進(jìn)行歸納,一旦歸納出一些通用的類以后,往往可以根據(jù)需要再派生出具體類。在進(jìn)行了一些具體化(即專門化)的工作之后,也許就應(yīng)該再次歸納了11/1/20221538.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系10/23/20226011/1/202215410/23/20226111/1/202215510/23/20226211/1/202215610/23/20226311/1/202215710/23/2022648.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系2、為提高繼承程度而修改類定義不能違背領(lǐng)域知識(shí)和常識(shí)應(yīng)該確保現(xiàn)有類的協(xié)議(即同外部世界的接口)不變3、利用委托實(shí)現(xiàn)行為共享11/1/20221588.10設(shè)計(jì)優(yōu)化三、調(diào)整繼承關(guān)系10/23/202265繼承了add,remove,first,last將List的實(shí)例作為屬性,從而其本身只有兩個(gè)操作11/1/2022159繼承了add,remove,first,last將List的8.11實(shí)例問題的初衷介紹一個(gè)簡化的C++類庫管理系統(tǒng)的分析和設(shè)計(jì)過程11/1/20221608.11實(shí)例問題的初衷10/23/2022678.11實(shí)例一、面向?qū)ο蠓治?、需求1)管理用C++語言定義的類2)用戶能夠方便地向類庫中添加新的類,并能建立新類與庫中原有類的關(guān)系3)用戶能夠通過類名從類庫中查詢出指定的類4)用戶能夠查看或修改與指定類有關(guān)的信息(包括數(shù)據(jù)成員的定義、成員函數(shù)的定義及這個(gè)類與其他類的關(guān)系)11/1/20221618.11實(shí)例一、面向?qū)ο蠓治?0/23/2022688.11實(shí)例一、面向?qū)ο蠓治?、需求5)用戶能夠從類庫中刪除指定的類6)用戶能夠在瀏覽窗口中方便、快速地瀏覽當(dāng)前類的父類和子類7)具有“聯(lián)想”瀏覽功能,也就是說,可以把當(dāng)前類的某個(gè)子類或父類指定為新的當(dāng)前類,從而瀏覽這個(gè)新當(dāng)前類的父類和子類8)用戶能夠查看或修改某個(gè)類的指定成員函數(shù)的源代碼11/1/20221628.11實(shí)例一、面向?qū)ο蠓治?0/23/2022698.11實(shí)例一、面向?qū)ο蠓治?、需求9)本系統(tǒng)是一個(gè)簡化的多用戶系統(tǒng),每個(gè)用戶都可以建立自己的類庫,不同類庫之間互不干擾10)對于用戶的誤操作或錯(cuò)誤的輸入數(shù)據(jù),系統(tǒng)能給出適當(dāng)?shù)奶崾拘畔?,并且仍然繼續(xù)穩(wěn)定地運(yùn)行11)系統(tǒng)易學(xué)易用,用戶界面應(yīng)該是GUI(圖形用戶界面)的11/1/20221638.11實(shí)例一、面向?qū)ο蠓治?0/23/2022708.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象基本對象就兩個(gè)類庫類(類條目)由需求3)4)條可知類條目中應(yīng)包含屬性:類名父類列表成員函數(shù)列表數(shù)據(jù)成員列表11/1/20221648.11實(shí)例一、面向?qū)ο蠓治?0/23/2022718.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中的每個(gè)“父類”應(yīng)包含信息:名字訪問權(quán)虛基類標(biāo)志(virtual)11/1/20221658.11實(shí)例一、面向?qū)ο蠓治?0/23/2022728.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中的每個(gè)“成員函數(shù)”應(yīng)包含信息:函數(shù)名訪問權(quán)(public,protected,private)虛函數(shù)標(biāo)志(virtual)返回值類型參數(shù)函數(shù)代碼(需求8))11/1/20221668.11實(shí)例一、面向?qū)ο蠓治?0/23/2022738.11實(shí)例一、面向?qū)ο蠓治?、建立對象模型1)確定類—&—對象類條目中的每個(gè)“數(shù)據(jù)成員”應(yīng)包含信息:數(shù)據(jù)名訪問權(quán)(public,protected,private)數(shù)據(jù)類型由于“父類”、“成員函數(shù)”、“數(shù)據(jù)成員”的相對獨(dú)立性,將它

溫馨提示

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

評論

0/150

提交評論