版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Chap 16 GRASP: Designing Objects With Responsibilitiesn目標(biāo):n1.定義模式n2.學(xué)習(xí)運(yùn)用5個GRASP模式2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程主要內(nèi)容Chap 9 用例模型:繪制系統(tǒng)順序圖Chap 10 領(lǐng)域模型:可視化概念Chap 11 領(lǐng)域模型:添加關(guān)聯(lián)Chap 12 領(lǐng)域模型:添加屬性Chap 13 用例模型:用操作契約增加細(xì)節(jié)Chap 14 迭代中的從需求到設(shè)計Chap 15 交互圖表示法Chap 16 GRASP:根據(jù)職責(zé)設(shè)計對象Chap 17 設(shè)計模型:GRASP模式與用例實現(xiàn)Chap 18 設(shè)計模型:決定可見
2、性Chap 19 設(shè)計模型:創(chuàng)建設(shè)計類圖Chap 20 實現(xiàn)模型:將設(shè)計映射成代碼2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程設(shè)計n在確定了需求和產(chǎn)生領(lǐng)域模型之后,為軟件類添加方法,并且定義對象間的消息傳遞,從而實現(xiàn)需求.n主要目標(biāo):決定哪些方法位于哪些地方以及對象間如何交互的.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Responsibilities and MethodsnResponsibilities are assigned to classes of objects during object design. nE.g., “a Sale is responsib
3、le for creating SalesLineItems” (a doing“做做”型型), nor “a Sale is responsible for knowing its total” (a knowing“知道知道”型型). 2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程R&Mn“做”型職責(zé)包括: (1)自己執(zhí)行一些行為,如創(chuàng)建一個對象或進(jìn)行一次計算等;(2)在其它對象中初始化操作;(3)在其它對象中控制或協(xié)調(diào)各項活動.n“知道”型職責(zé)包括: (1)了解私有的封裝數(shù)據(jù);(2)了解相關(guān)聯(lián)的對象;(3)了解能夠派生或者計算的事物.2022-4-25東南大學(xué)“軟件開發(fā)方法
4、與技術(shù)”課程R&MnA responsibility is not the same thing as a method, but methods are implemented to fulfill responsibilities.n職責(zé)是對象設(shè)計過程中被分配給對象類的. 例如“一個Sale類負(fù)責(zé)產(chǎn)生一個SalesLineItem類”(一個“做”型職責(zé));又如,“一個Sale類知道sale對象的total”.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Responsibilities and Interaction Diagramn交互圖體現(xiàn)了如何為對象分配職責(zé)交互圖體現(xiàn)了
5、如何為對象分配職責(zé). . 當(dāng)交互圖創(chuàng)建當(dāng)交互圖創(chuàng)建時時, , 實際上已經(jīng)為對象分配了職責(zé)實際上已經(jīng)為對象分配了職責(zé), ,反應(yīng)到交互圖反應(yīng)到交互圖就是該對象發(fā)送相應(yīng)的消息到不同類的對象就是該對象發(fā)送相應(yīng)的消息到不同類的對象. .n本章的重點本章的重點: GRASP: GRASP模式的基本原則模式的基本原則, ,以及如何運(yùn)用以及如何運(yùn)用GRASPGRASP模式來指導(dǎo)職責(zé)分配問題模式來指導(dǎo)職責(zé)分配問題. .2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程PatternsnOO developers build up a repertoire o
6、f全部技能 both general principles and idiomatic solutions that guide them in the creation of software. nA pattern is a named problem/solution pair. nSample pattern:nPattern Name: Information ExpertnProblem What is a basic principle by which to assign responsibilities to objects?nSolution: Assign a respo
7、nsibility to the class that has the information needed to fulfill it.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Patternsn簡單地說,模式是一種已命名的問題/解決方案對,可以應(yīng)用到新的語境中,并提供了如何在新場合下應(yīng)用的建議和優(yōu)缺點的討論.n兩點強(qiáng)調(diào):n (1)模式應(yīng)該是不斷重復(fù)的n (2)模式擁有名稱提煉和整合諸多概念便于理解和記憶;有利于交流,如下例.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程PatternsnFred: “你認(rèn)為我們應(yīng)該把產(chǎn)生一個SaleLineItem對象的職責(zé)分配給誰?如果采
8、用工廠模式,我認(rèn)為使用Register類比較合適.”nWilma:“使用創(chuàng)建者模式吧,我認(rèn)為Sale類更合適.”nFred: “好的,你真棒!我怎么沒想到!”2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程GRASPnGRASP is an acronym(只取首字母的縮寫) that stands for General Responsibility Assignment Software Patterns.nFirst five GRASP patterns:nInformation Expert(信息專家)nCreator(創(chuàng)建者)nLow Coupling(低耦合)nHigh Co
9、hesion(高內(nèi)聚)nController(控制器)2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Information Expert Pattern信息專家模式信息專家模式nProblem: What is a general principle of assigning responsibilities to objects? nSolution: Assign a responsibility to the information expertthe class that has the information necessary to fulfill the responsib
10、ility.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程IEnE.g. In the POS application, some class needs to know the grand total (總數(shù)之和總數(shù)之和)of a sale.nWho should be responsible for that?nPerhaps the Sale class is the information expert to know the total. nHowever, the Sale needs other classes to plish that.2022-4-25東南大學(xué)“軟件開
11、發(fā)方法與技術(shù)”課程IE2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程IEnWhat information is needed to determine the grand total? n (1)It is necessary to know about all the SalesLineItem instances of a sale and the sum of their subtotals. n (2)A Sale instance contains these; therefore, Sale is an information expert for the work.202
12、2-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程nWhat information is needed to determine the line item subtotal? n SalesLineItem.quantity and ProductSpecification.price are needed. nThe SalesLineItem knows its quantity and its associated ProductSpecification; therefore, by Information Expert, SalesLineItem should determine
13、the subtotal; it is the information expert.IE2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程A few more words about Expertn信息專家模式核心思想信息專家模式核心思想: :把職責(zé)分配給具有完成某把職責(zé)分配給具有完成某項職責(zé)所需信息的個體項職責(zé)所需信息的個體. .n信息專家模式在職責(zé)分配中使用得非常廣泛信息專家模式在職責(zé)分配中使用得非常廣泛, ,它是它是對象設(shè)計中經(jīng)常使用的基本指導(dǎo)原則對象設(shè)計中經(jīng)常使用的基本指導(dǎo)原則. .n職責(zé)的履行需要信息職責(zé)的履行需要信息, ,而信
14、息往往分布在不同的對而信息往往分布在不同的對象中象中. .這就意味著許多這就意味著許多“部分部分”的信息專家有時需的信息專家有時需要協(xié)作才能來完成一個任務(wù)要協(xié)作才能來完成一個任務(wù)( (如上例如上例).).2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程A few more words 例外情況:例外情況:The Expert is very frequently used,however, not always. E.g. who should be responsible for saving a sale in a database?This is a complicated resp
15、onsibility, and if we assign it to Sale, it will lead to problems related to cohesion and coupling. 2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程優(yōu)點n因為對象使用自己的信息來實現(xiàn)服務(wù),所以信息的封裝性得以維持. 低耦合/健壯性/易維護(hù)性.n行為分散在不同的類中,這些類各自具有完成行為所需要的信息. 這些“輕量級”的類易于理解和維護(hù).2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Creator Pattern創(chuàng)建者模式創(chuàng)建者模式nProblem: We want to have a
16、general principle for the assignment of creation responsibilities(分配創(chuàng)分配創(chuàng)建對象職責(zé)建對象職責(zé)). nSolution: Assign class B the responsibility to create an instance of class A if one or more of the following is true:2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Creator PatternnFor example: In NextGen POS, Who should be responsible
17、for the creation of a SalesLineItem? (哪個類應(yīng)該負(fù)責(zé)產(chǎn)生SalesLineItem的實例?)n根據(jù)創(chuàng)建者模式,我們應(yīng)該尋找哪個類聚合或者包含了SalesLineItem類的實例.因為一個Sale類包含(實際上是聚合)了許多SalesLineItem對象,所以創(chuàng)建者模式指明Sale類是創(chuàng)建SalesLineItem類實例的很好的候選者.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Creator Pattern2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程nThis assignment req
18、uires that a method makeLineItem is defined in the Sale class.n注意(again):職責(zé)是在繪制交互圖的時候考慮和決定的.類圖的方法欄表示了職責(zé)分配的結(jié)果,職責(zé)具體由這些方法來實現(xiàn).Creator Pattern2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Creator Patternn討論n 1.創(chuàng)建者模式指導(dǎo)怎樣分配“與創(chuàng)建對象”相關(guān)的職責(zé)。創(chuàng)建者模式的基本目的是找到一個在任何情況下都與被創(chuàng)建對象相關(guān)聯(lián)的創(chuàng)建者,選擇這樣的類作為創(chuàng)建者能支持低耦合。n 2.集合聚集了部分,容器包含了內(nèi)容,記錄器記錄了被記錄的數(shù)據(jù),這些類之
19、間的關(guān)系在類圖中非常普遍. Creator Pattern建議:封裝的容器類和記錄器類是創(chuàng)建“自己包含或者記錄的元素”的很好候選者.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Creator Patternn優(yōu)點優(yōu)點: : 支持低耦合支持低耦合, ,這種設(shè)計意味著具有更低的這種設(shè)計意味著具有更低的維護(hù)依賴性和更高的重用機(jī)會維護(hù)依賴性和更高的重用機(jī)會. . 創(chuàng)建者模式之所創(chuàng)建者模式之所以可能不增加耦合性是由于被創(chuàng)建類對于創(chuàng)建類以可能不增加耦合性是由于被創(chuàng)建類對于創(chuàng)建類而言已經(jīng)可見了而言已經(jīng)可見了, ,正是因為已存在的關(guān)聯(lián)使得它正是因為已存在的關(guān)聯(lián)使得它成為創(chuàng)建者成為創(chuàng)建者. .2022-
20、4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程nSometimes the creation might be complicated, e.g. using recycled instances for performance reasons. nIn this cases it is advisable to delegate the creation to some helper class (Factory pattern: chap 23).Complicated Creation2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Low Coupling Pattern低耦合低耦合模式
21、模式nProblem: How to support low dependency, low change impact, and increased reuse? (怎樣支持低的依賴性,怎樣支持低的依賴性,減小變更帶來的影響,提高重用性減小變更帶來的影響,提高重用性)nSolution: Assign a responsibility so that coupling remains low.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程nCoupling is a measure of how strongly one class relies on other classes. n
22、A class with high (or strong) coupling relies on many other classes. Such classes may be undesirable; some suffer from the following problems:nChanges in related classes force local changes.nHarder to understand in isolation.nHarder to reuse.Low Coupling Pattern2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Example Bad
23、Couplingn舉例:考慮在銷售點終端系統(tǒng)中,假設(shè)要創(chuàng)建一舉例:考慮在銷售點終端系統(tǒng)中,假設(shè)要創(chuàng)建一個個Payment的實例并使它和的實例并使它和Sale之間的實例關(guān)之間的實例關(guān)聯(lián),哪個類應(yīng)當(dāng)承擔(dān)職責(zé)呢?在真實世界中聯(lián),哪個類應(yīng)當(dāng)承擔(dān)職責(zé)呢?在真實世界中Register記錄了一個記錄了一個Payment的實例,根據(jù)創(chuàng)的實例,根據(jù)創(chuàng)建者模式,建者模式, Register類應(yīng)該是創(chuàng)建類應(yīng)該是創(chuàng)建Payment的的候選類。候選類。2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Bad Couplingn方案一:一個方案一:一個Register發(fā)送一個發(fā)送一個addPayment消息給消息給Sa
24、le實例,并將新生成的實例,并將新生成的Payment實例作為一個參數(shù)傳實例作為一個參數(shù)傳遞給遞給Sale。 Register需要知道需要知道Payment類的消息,兩者類的消息,兩者被耦合。被耦合。2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Good Couplingn方案二:一個方案二:一個Sale實例最終要和一個實例最終要和一個Payment實例耦合起實例耦合起來。因此來。因此Payment由由Sale創(chuàng)建,沒有增加耦合度,所以整創(chuàng)建,沒有增加耦合度,所以整體耦合度低。體耦合度低。2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Bad Coupling2022-4-25東南大
25、學(xué)“軟件開發(fā)方法與技術(shù)”課程Good Coupling (why?)2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Low Coupling Patternn討論: (1)低耦合是一個設(shè)計目標(biāo),也是一個評估原則; (2)低耦合模式鼓勵職責(zé)分配時不增加耦合性.從而避免了高耦合可能產(chǎn)生的不良后果;(3)低耦合模式的極端情況就是類之間沒有耦合.n優(yōu)點: (1)不受其它組件改變的影響;(2)便于單獨理解;(3)重用方便.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Low Coupling Pattern2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程High Cohesion Patt
26、ern高內(nèi)高內(nèi)聚模式聚模式nProblem How to keep complexity manageable?nSolution Assign a responsibility so that cohesion remains high.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程High Cohesion PatternnA class with highly related responsibilities, and which does not do a tremendous amount of work, has high cohesion. nA class with lo
27、w cohesion does many unrelated things, or does too much work. They are:nhard to comprehendnhard to reusenhard to maintainndelicate; constantly effected by change(系統(tǒng)脆弱,常常受到變化帶來的影響)2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程ExamplenThe same example problem used in the Low Coupling pattern can be analyzed for High Cohe
28、sion.nIf we make the Register responsible for doing work related to more operations, it will e increasingly burdened with tasks and e incohesive.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程ExamplenThe point is not that this single Payment creation task in itself makes the Register incohesive, but as part of a larger
29、picture, it may suggest a trend toward low cohesion.2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Example2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Example2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Varying Degrees of Functional CohesionnVery low cohesion. A class is solely responsible for many things in very different functional areas.RDB-RPC-Interface
30、nLow cohesion. A class has sole responsibility for a complex task in one functional area.RDBInterface 2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Varying Degrees of Functional CohesionnHigh cohesion. A class has moderate responsibilities in one functional area and collaborates with other classes to fulfill tasks.RDBI
31、nterfacenModerate cohesion. A class has lightweight and sole responsibilities in a few different areas that are logically related to the class concept, but not to each other.Company2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程High Cohesion Patternn優(yōu)點: 設(shè)計的清晰性和易于理解性得到提高。(1)維護(hù)和擴(kuò)展得到簡化;(2)常常支持低耦合;(3)重用性提高。2022-4-25東南大學(xué)“軟件開發(fā)方法與技術(shù)”課程Controller Pattern控制器模控制器模式式nProblem nAn input system event is an event gene
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水資源管理政策與法規(guī)
- 區(qū)塊鏈技術(shù)應(yīng)用授權(quán)委托書樣本
- 煙囪自動滅火系統(tǒng)安裝合同
- 環(huán)保國際合作機(jī)構(gòu)財務(wù)管理辦法
- 文化主題客棧租賃合同
- 核能發(fā)電用電安全檢查細(xì)則
- 鋼結(jié)構(gòu)節(jié)能施工合同
- 城市景觀雕塑維修臨建合同
- 2024年橋梁工程設(shè)計施工總承包合同
- 2024年物聯(lián)網(wǎng)平臺搭建與應(yīng)用合同
- 304焊接工藝參數(shù)
- 交感神經(jīng)相關(guān)性疼痛及其治療通用課件
- 工裝夾具項目開發(fā)計劃書
- 中小學(xué)生研學(xué)旅行 投標(biāo)方案(技術(shù)方案)
- 文創(chuàng)產(chǎn)品市場營銷策略
- 社區(qū)生鮮可行性報告
- 6款課堂活動隨機(jī)點名-抽獎模板(可編輯)兩套
- 2023新兵集訓(xùn)總結(jié)發(fā)言
- 《輻射安全許可證》申請條件核查表
- 《財務(wù)管理》課程教學(xué)成果創(chuàng)新報告
- DB15-T 2537-2022 涉路工程安全性評價報告編制指南
評論
0/150
提交評論