




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、GRASP:基于職責(zé)設(shè)計對象 簡介決定方法歸屬于哪個對象和對象之間如何交互,其意義重大,應(yīng)謹(jǐn)慎從事。掌握OOD涉及一套柔性原則,自由度很大,這正是OOD的復(fù)雜所在。2精選ppt2UML與設(shè)計原則最關(guān)鍵的軟件開發(fā)工具是受過良好設(shè)計原則訓(xùn)練的思維3精選ppt3對象設(shè)計設(shè)計的輸入4精選ppt4對象設(shè)計對象設(shè)計中的活動確定設(shè)計方式建立動態(tài)模型(交互圖)和靜態(tài)模型(類圖)應(yīng)用設(shè)計模式其它:UI和數(shù)據(jù)庫設(shè)計等輸出交互圖、類圖和包圖UI的草圖和原型數(shù)據(jù)庫模型報表的草圖和原型5精選ppt5職責(zé)和職責(zé)驅(qū)動設(shè)計(RDD)職責(zé)(Responsibility):類元的契約或義務(wù)。 方法(Method):用來實現(xiàn)(履行
2、)職責(zé)。 一個職責(zé)可能要許多類和方法(method)來實現(xiàn),也可能只要很少方法來實現(xiàn),這是由職責(zé)的粒度(granularity)來決定的。思考軟件對象設(shè)計以及大型構(gòu)件的流行方式是,考慮其職責(zé)、角色和協(xié)作。這些被稱為職責(zé)驅(qū)動設(shè)計的大型方法的一部分。對象職責(zé) 其所作所為的抽象6精選ppt6職責(zé)和職責(zé)驅(qū)動設(shè)計(RDD)對象的職責(zé)分為以下兩種類型:“認(rèn)知”職責(zé)(knowing)“知道”私有的封裝數(shù)據(jù)“知道”相關(guān)聯(lián)的對象“知道”能夠派生或計算出的事物“行為”職責(zé)(doing)“做”自身的一些事情。如創(chuàng)建一個對象或進(jìn)行一次計算?!白觥逼渌鼘ο蟮某跏蓟僮鳌?控制和協(xié)調(diào)其它對象的活動。提問:1、Sale負(fù)責(zé)
3、創(chuàng)建SalesLineItems。 2、Sale負(fù)責(zé)認(rèn)知其總額。7精選ppt7職責(zé)和職責(zé)驅(qū)動設(shè)計(RDD)準(zhǔn)則:領(lǐng)域模型通常產(chǎn)生與“認(rèn)知”相關(guān)職責(zé)。 例如:如果領(lǐng)域模型的Sale類具有time屬性,那么根據(jù)低表示差異,軟件的Sale類應(yīng)該知道其產(chǎn)生的時間。職責(zé)的粒度 職責(zé)的粒度會影響職責(zé)到類和方法的轉(zhuǎn)換。 大粒度職責(zé) 具有數(shù)百個和方法。 小粒度職責(zé)可能只是一個方法。 例如: “提供訪問關(guān)系數(shù)據(jù)庫”的職責(zé)可能涉及一個子系統(tǒng)中的200個類和數(shù)千個方法。 “創(chuàng)建Sale”職責(zé)可能僅涉及一個類中的一個方法。8精選ppt8GRASP:基本OO設(shè)計的系統(tǒng)方法GRASP :General Responsib
4、ility Assignment Software Patterns(通用職責(zé)分配軟件模式)核心思想“職責(zé)分配”即Responsibility Assignment。GRASP提出了幾個基本原則,用來解決面向?qū)ο笤O(shè)計的一些問題。GRASP:使用職責(zé)進(jìn)行OO設(shè)計的學(xué)習(xí)工具GoF(Gang of Four)設(shè)計模式是針對特定問題而提出的解決方法GRASP則是站在面向?qū)ο笤O(shè)計的角度,告訴我們怎么樣設(shè)計問題空間中的類與它們的行為責(zé)任,以及明確類之間的相互關(guān)系等等。GRASP可以說是GoF等設(shè)計模式的基礎(chǔ)。 9精選ppt9職責(zé)、GRASP和UML圖之間的關(guān)系10精選ppt10什么是設(shè)計模式GRASP9個
5、基本的OO設(shè)計原則或primitive building blockOne persons pattern is another persons primitive building block.模式是對問題和解決方案的已命名描述模式名:信息專家(Information Expert)問題:為了獲取某些信息,分配職責(zé)給對象的基本原則是什么?解決方案:將職責(zé)分配給信息專家 - 含有滿足職責(zé)所需信息的 類。11精選ppt11GRASP簡短示例涉及9個Pattern中的5個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)建者問題:誰創(chuàng)建了A?解決方案(可被視作建議):如果以下條件之一成立,則可以將創(chuàng)建類A實例的職責(zé)分配給類B。B包含了A對象; B組成聚集了A;B記錄了A;B緊密地使用A;B具有A的初始化數(shù)據(jù)注:B和A指的是軟件對象,而不是領(lǐng)域模型對象。13精選ppt13Creator14精選ppt14在動態(tài)和靜態(tài)模型中應(yīng)用創(chuàng)建者模式15精選ppt15信息專家(Information Expert )模式Problem: Who
7、 knows about a Square object, given a key?模式名:信息專家(或?qū)<遥﹩栴}:給對象分配職責(zé)的基本原則是什么?解決方案(建議):將職責(zé)分配給具有完成該職責(zé)所需信息的那個類16精選ppt16Information Expertwhy Expert is a useful (Low Coupling)17精選ppt17Low Coupling Question: Why Board over Dog?模式名:低耦合問題:如何減少因變化產(chǎn)生的影響?解決方案(建議):分配職責(zé)以使(不必要的)耦合保持在較低的水平。使用該原則對可選方案進(jìn)行評估18精選ppt18Low
8、 CouplingKey Point: Expert Supports Low Coupling 19精選ppt19Controller MVS原則20精選ppt20Controller21精選ppt21Controller模式名:控制器問題:在UI層之上首先接收和協(xié)調(diào)(控制)系統(tǒng)操作的對象是什么?解決方案:將接收或處理系統(tǒng)事件消息的職責(zé)分派給代表下列事務(wù)的類:代表全部“系統(tǒng)”或“根對象”,如MonopolyGame對象代表運行軟件的設(shè)備,如Phone,BankCashMachine代表用例或會話出現(xiàn)。通常命名為Handler, Session。如,PlayMonopolyGameHandle
9、r。22精選ppt22Controller23精選ppt23High Cohesion 24精選ppt24High Cohesion模式名:高內(nèi)聚問題:怎樣使對象保持有內(nèi)聚、可理解和可管理,同時具有支持低耦合的附加作用?解決方案:職責(zé)分配應(yīng)保持高內(nèi)聚,依此來評估備選方案。25精選ppt25在對象設(shè)計中應(yīng)用GRASPCreator誰創(chuàng)建它?精選ppt262627精選ppt27Information Expert 誰負(fù)責(zé)得到銷售總額?28精選ppt28誰負(fù)責(zé)小計?29精選ppt29誰回答價格?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)點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 誰負(fù)責(zé)創(chuàng)建它并與Sale關(guān)聯(lián)34
12、精選ppt34現(xiàn)實世界Register記錄了Payment35精選ppt3536精選ppt36Low Coupling討論低耦合是在制定設(shè)計決策期間必須牢記的原則耦合的種類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 適度耦合高耦合對穩(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問題與解決方案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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)地重樓購銷合同標(biāo)準(zhǔn)文本
- 秋季學(xué)期個人發(fā)展計劃
- 典當(dāng)行房產(chǎn)借款合同標(biāo)準(zhǔn)文本
- 農(nóng)村公寓轉(zhuǎn)讓合同標(biāo)準(zhǔn)文本
- 2025裝飾裝潢工程合同
- 水務(wù)行業(yè)質(zhì)量管理體系的構(gòu)建計劃
- 養(yǎng)殖竹鼠合同回收合同標(biāo)準(zhǔn)文本
- 2025年汽車租賃協(xié)議合同范文
- 2025建筑設(shè)備租賃協(xié)議(合同版本)
- 2025專屬定制合同及員工手冊等企業(yè)規(guī)章制度服務(wù)
- 分布式電源并網(wǎng)驗收意見單
- 頸椎功能障礙指數(shù),Neck Disabilitv Index,NDI
- 贛建字號江西省建設(shè)工程材料預(yù)算價格編制辦法
- 工程結(jié)算表單模板
- DB65∕T 4492-2022 和田玉(白玉)分級
- GB∕T 10544-2022 橡膠軟管及軟管組合件 油基或水基流體適用的鋼絲纏繞增強(qiáng)外覆橡膠液壓型 規(guī)范
- 超星爾雅學(xué)習(xí)通《大學(xué)生職業(yè)發(fā)展與就業(yè)指導(dǎo)(仁能達(dá)教育科技公司)》2020章節(jié)測試含答案(下)
- 作物田間試驗記載表
- 連續(xù)就讀證明模版
- 居家養(yǎng)老陪同就醫(yī)服務(wù)要求
- 10t龍門吊基礎(chǔ)承載力計算書
評論
0/150
提交評論