




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、GRASP:基于職責(zé)設(shè)計(jì)對(duì)象 簡(jiǎn)介決定方法歸屬于哪個(gè)對(duì)象和對(duì)象之間如何交互,其意義重大,應(yīng)謹(jǐn)慎從事。掌握OOD涉及一套柔性原則,自由度很大,這正是OOD的復(fù)雜所在。2精選ppt2UML與設(shè)計(jì)原則最關(guān)鍵的軟件開(kāi)發(fā)工具是受過(guò)良好設(shè)計(jì)原則訓(xùn)練的思維3精選ppt3對(duì)象設(shè)計(jì)設(shè)計(jì)的輸入4精選ppt4對(duì)象設(shè)計(jì)對(duì)象設(shè)計(jì)中的活動(dòng)確定設(shè)計(jì)方式建立動(dòng)態(tài)模型(交互圖)和靜態(tài)模型(類圖)應(yīng)用設(shè)計(jì)模式其它:UI和數(shù)據(jù)庫(kù)設(shè)計(jì)等輸出交互圖、類圖和包圖UI的草圖和原型數(shù)據(jù)庫(kù)模型報(bào)表的草圖和原型5精選ppt5職責(zé)和職責(zé)驅(qū)動(dòng)設(shè)計(jì)(RDD)職責(zé)(Responsibility):類元的契約或義務(wù)。 方法(Method):用來(lái)實(shí)現(xiàn)(履行
2、)職責(zé)。 一個(gè)職責(zé)可能要許多類和方法(method)來(lái)實(shí)現(xiàn),也可能只要很少方法來(lái)實(shí)現(xiàn),這是由職責(zé)的粒度(granularity)來(lái)決定的。思考軟件對(duì)象設(shè)計(jì)以及大型構(gòu)件的流行方式是,考慮其職責(zé)、角色和協(xié)作。這些被稱為職責(zé)驅(qū)動(dòng)設(shè)計(jì)的大型方法的一部分。對(duì)象職責(zé) 其所作所為的抽象6精選ppt6職責(zé)和職責(zé)驅(qū)動(dòng)設(shè)計(jì)(RDD)對(duì)象的職責(zé)分為以下兩種類型:“認(rèn)知”職責(zé)(knowing)“知道”私有的封裝數(shù)據(jù)“知道”相關(guān)聯(lián)的對(duì)象“知道”能夠派生或計(jì)算出的事物“行為”職責(zé)(doing)“做”自身的一些事情。如創(chuàng)建一個(gè)對(duì)象或進(jìn)行一次計(jì)算?!白觥逼渌鼘?duì)象的初始化操作。 控制和協(xié)調(diào)其它對(duì)象的活動(dòng)。提問(wèn):1、Sale負(fù)責(zé)
3、創(chuàng)建SalesLineItems。 2、Sale負(fù)責(zé)認(rèn)知其總額。7精選ppt7職責(zé)和職責(zé)驅(qū)動(dòng)設(shè)計(jì)(RDD)準(zhǔn)則:領(lǐng)域模型通常產(chǎn)生與“認(rèn)知”相關(guān)職責(zé)。 例如:如果領(lǐng)域模型的Sale類具有time屬性,那么根據(jù)低表示差異,軟件的Sale類應(yīng)該知道其產(chǎn)生的時(shí)間。職責(zé)的粒度 職責(zé)的粒度會(huì)影響職責(zé)到類和方法的轉(zhuǎn)換。 大粒度職責(zé) 具有數(shù)百個(gè)和方法。 小粒度職責(zé)可能只是一個(gè)方法。 例如: “提供訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)”的職責(zé)可能涉及一個(gè)子系統(tǒng)中的200個(gè)類和數(shù)千個(gè)方法。 “創(chuàng)建Sale”職責(zé)可能僅涉及一個(gè)類中的一個(gè)方法。8精選ppt8GRASP:基本OO設(shè)計(jì)的系統(tǒng)方法GRASP :General Responsib
4、ility Assignment Software Patterns(通用職責(zé)分配軟件模式)核心思想“職責(zé)分配”即Responsibility Assignment。GRASP提出了幾個(gè)基本原則,用來(lái)解決面向?qū)ο笤O(shè)計(jì)的一些問(wèn)題。GRASP:使用職責(zé)進(jìn)行OO設(shè)計(jì)的學(xué)習(xí)工具GoF(Gang of Four)設(shè)計(jì)模式是針對(duì)特定問(wèn)題而提出的解決方法GRASP則是站在面向?qū)ο笤O(shè)計(jì)的角度,告訴我們?cè)趺礃釉O(shè)計(jì)問(wèn)題空間中的類與它們的行為責(zé)任,以及明確類之間的相互關(guān)系等等。GRASP可以說(shuō)是GoF等設(shè)計(jì)模式的基礎(chǔ)。 9精選ppt9職責(zé)、GRASP和UML圖之間的關(guān)系10精選ppt10什么是設(shè)計(jì)模式GRASP9個(gè)
5、基本的OO設(shè)計(jì)原則或primitive building blockOne persons pattern is another persons primitive building block.模式是對(duì)問(wèn)題和解決方案的已命名描述模式名:信息專家(Information Expert)問(wèn)題:為了獲取某些信息,分配職責(zé)給對(duì)象的基本原則是什么?解決方案:將職責(zé)分配給信息專家 - 含有滿足職責(zé)所需信息的 類。11精選ppt11GRASP簡(jiǎn)短示例涉及9個(gè)Pattern中的5個(gè)Creator(創(chuàng)建者)Information Expert (信息專家)Low Coupling (低耦合)Controlle
6、r (控制器)High Cohesion (高內(nèi)聚)12精選ppt12創(chuàng)建者(Creator)模式Problem: Who creates the Square object?模式名:創(chuàng)建者問(wèn)題:誰(shuí)創(chuàng)建了A?解決方案(可被視作建議):如果以下條件之一成立,則可以將創(chuàng)建類A實(shí)例的職責(zé)分配給類B。B包含了A對(duì)象; B組成聚集了A;B記錄了A;B緊密地使用A;B具有A的初始化數(shù)據(jù)注:B和A指的是軟件對(duì)象,而不是領(lǐng)域模型對(duì)象。13精選ppt13Creator14精選ppt14在動(dòng)態(tài)和靜態(tài)模型中應(yīng)用創(chuàng)建者模式15精選ppt15信息專家(Information Expert )模式Problem: Who
7、 knows about a Square object, given a key?模式名:信息專家(或?qū)<遥﹩?wèn)題:給對(duì)象分配職責(zé)的基本原則是什么?解決方案(建議):將職責(zé)分配給具有完成該職責(zé)所需信息的那個(gè)類16精選ppt16Information Expertwhy Expert is a useful (Low Coupling)17精選ppt17Low Coupling Question: Why Board over Dog?模式名:低耦合問(wèn)題:如何減少因變化產(chǎn)生的影響?解決方案(建議):分配職責(zé)以使(不必要的)耦合保持在較低的水平。使用該原則對(duì)可選方案進(jìn)行評(píng)估18精選ppt18Low
8、 CouplingKey Point: Expert Supports Low Coupling 19精選ppt19Controller MVS原則20精選ppt20Controller21精選ppt21Controller模式名:控制器問(wèn)題:在UI層之上首先接收和協(xié)調(diào)(控制)系統(tǒng)操作的對(duì)象是什么?解決方案:將接收或處理系統(tǒng)事件消息的職責(zé)分派給代表下列事務(wù)的類:代表全部“系統(tǒng)”或“根對(duì)象”,如MonopolyGame對(duì)象代表運(yùn)行軟件的設(shè)備,如Phone,BankCashMachine代表用例或會(huì)話出現(xiàn)。通常命名為Handler, Session。如,PlayMonopolyGameHandle
9、r。22精選ppt22Controller23精選ppt23High Cohesion 24精選ppt24High Cohesion模式名:高內(nèi)聚問(wèn)題:怎樣使對(duì)象保持有內(nèi)聚、可理解和可管理,同時(shí)具有支持低耦合的附加作用?解決方案:職責(zé)分配應(yīng)保持高內(nèi)聚,依此來(lái)評(píng)估備選方案。25精選ppt25在對(duì)象設(shè)計(jì)中應(yīng)用GRASPCreator誰(shuí)創(chuàng)建它?精選ppt262627精選ppt27Information Expert 誰(shuí)負(fù)責(zé)得到銷售總額?28精選ppt28誰(shuí)負(fù)責(zé)小計(jì)?29精選ppt29誰(shuí)回答價(jià)格?30精選ppt3031精選ppt31Information Expert 討論it is a basic
10、guiding principle used continuously in object design the fulfillment of a responsibility often requires information that is spread across different classes of objects. DIY禁忌because of problems in coupling and cohesion For example, who should be responsible for saving a Sale in a database? 32精選ppt32I
11、nformation Expert優(yōu)點(diǎn)Information encapsulation is maintained since objects use their own information to fulfill tasks. usually supports low coupling Behavior is distributed across the classes that have the required information . High cohesion is usually supported 33精選ppt33Low Coupling 誰(shuí)負(fù)責(zé)創(chuàng)建它并與Sale關(guān)聯(lián)34
12、精選ppt34現(xiàn)實(shí)世界Register記錄了Payment35精選ppt3536精選ppt36Low Coupling討論低耦合是在制定設(shè)計(jì)決策期間必須牢記的原則耦合的種類TypeX has an attribute that refers to a TypeY instanceA TypeX object calls on services of a TypeY object.TypeX has a method that references an instance of TypeY TypeX is a direct or indirect subclass of TypeY TypeY
13、 is an interface, and TypeX implements that interface 適度耦合高耦合對(duì)穩(wěn)定和普遍使用的元素而言并不是問(wèn)題37精選ppt37Controller 38精選ppt38ControllerA controller is the first object beyond the UI layer that is responsible for receiving or handling a system operation message. 解決方案Represents the overall system, a root object, a dev
14、ice that the software is running within, or a major subsystemthese are all variations of a facade controller.Represents a use case scenario within which the system event occurs Coordinator Session39精選ppt39Controller40精選ppt40Controller41精選ppt41Controller討論保證了UI不包括應(yīng)用邏輯Normally, a controller should del
15、egate to other objects the work that needs to be done; it coordinates or controls the activity. It does not do much work itself.42精選ppt42ControllerImplementation with Java Swing: Rich Client UI43精選ppt43ControllerImplementation with Java Swing: Rich Client UI44精選ppt44Controller問(wèn)題與解決方案bloated controller There is only a single controller class receiving all system events in the system, and there are many of them. The controller itself performs many of the tasks necessary to fulfill the system event, without delegating the work. A contr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離婚債務(wù)承擔(dān)與分割合同
- 二零二五年度土地抵押債權(quán)債務(wù)解除與資產(chǎn)評(píng)估協(xié)議
- 二零二五年度吊裝工程進(jìn)度控制與驗(yàn)收協(xié)議合同
- 2025年度貨運(yùn)行業(yè)專業(yè)司機(jī)勞動(dòng)合同
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)出資協(xié)議范例
- 2025年汽車維修廠針對(duì)車主自帶配件的免責(zé)責(zé)任合同
- 2025年度砂石開(kāi)采綠色供應(yīng)鏈管理合作協(xié)議
- 二零二五年度教育培訓(xùn)機(jī)構(gòu)報(bào)名定金合同
- 二零二五年度國(guó)際市場(chǎng)拓展融資借款合同
- 二零二五年度工地現(xiàn)場(chǎng)臨時(shí)用工人員權(quán)益保障及職業(yè)規(guī)劃協(xié)議
- 2025年中國(guó)靈巧手行業(yè)市場(chǎng)規(guī)模、行業(yè)集中度及發(fā)展前景研究報(bào)告
- 技術(shù)分紅協(xié)議書(shū)范本合同6篇
- 七下語(yǔ)文第一至三單元讀讀寫(xiě)寫(xiě)字詞積累(注音+解釋)
- 【物理】同一直線上二力的合成 2024-2025學(xué)年人教版物理八年級(jí)下冊(cè)
- 《?;穬?chǔ)罐設(shè)計(jì)與制備技術(shù)規(guī)范》
- 天津2025年應(yīng)急管理部天津消防研究所招聘27人歷年參考題庫(kù)(頻考版)含答案解析
- 2024年徐州礦務(wù)集團(tuán)第二醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 裝配式建筑深化設(shè)計(jì)-1.2.3 裝配式建筑深化設(shè)計(jì)拆分原47課件講解
- 淹溺安全培訓(xùn)課件
- 【MOOC】園林植物應(yīng)用設(shè)計(jì)-北京林業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年中國(guó)汽車出口與投資國(guó)別指南-泰國(guó)篇-中國(guó)汽車工業(yè)協(xié)會(huì)
評(píng)論
0/150
提交評(píng)論