




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二部分面向?qū)ο笙到y(tǒng)分析與設(shè)計(jì)
第二部分面向?qū)ο笙到y(tǒng)分析與設(shè)計(jì)1第八講主要內(nèi)容:從需求分析進(jìn)入設(shè)計(jì)
交互圖的UML表示法
設(shè)計(jì)模式和GRASP
expertcreator
highcohesionlowcouplingcontroller第八講主要內(nèi)容:從需求分析進(jìn)入設(shè)計(jì)expert2第14章--FROMREQUIREMENTSTO
DESIGNINTHISITERATION迭代中從需求到設(shè)計(jì)到目前為止,我們?cè)诜治霭咐龝r(shí)強(qiáng)調(diào)了需求調(diào)查,領(lǐng)域的概念以及與系統(tǒng)有關(guān)的操作。按照UP指導(dǎo),可能有10%的重要需求在初始階段調(diào)查,細(xì)化階段第一次迭代已稍微細(xì)致地進(jìn)行了調(diào)查和分析。下來(lái)可以對(duì)這一部分需求轉(zhuǎn)入進(jìn)行解決方案的設(shè)計(jì)。設(shè)計(jì)工作是借助于設(shè)計(jì)軟件對(duì)象間的協(xié)作來(lái)完成的。第14章--FROMREQUIREMENTSTO
3主要思想迭代地做正確的事情,所作的事情要正確。
(需求分析)(系統(tǒng)設(shè)計(jì))以對(duì)象(object)來(lái)進(jìn)行設(shè)計(jì)。
按對(duì)象設(shè)計(jì)的方案包括建立交互圖(interactiondiagrams)和設(shè)計(jì)類類圖(designclassdiagrams)應(yīng)用職責(zé)分配(assigningresponsibilities)的原則和設(shè)計(jì)模式(designpatterns)來(lái)建立交互圖主要思想迭代地做正確的事情,所作的事情要正確。按對(duì)象設(shè)計(jì)4第15章--INTERACTIONDIAGRAM
NOTATION交互圖的表示法第15章--INTERACTIONDIAGRAM
N5順序圖(SequenceDiagrams)和協(xié)作圖(CollaborationDiagrams)協(xié)作圖(CollaborationDiagrams)順序圖(SequenceDiagrams)交互圖(InteractionDiagrams)順序圖(SequenceDiagrams)和協(xié)作圖(Col6圖:15.1Collaborationdiagram
bamessage1()message2()message3()method1()…b.method2()…b.method3()…method1()method2()method3()圖:15.1Collaborationdiagramb7圖:15.2Sequencediagram.
message1()message2()message3()圖:15.2Sequencediagram.messa8協(xié)作圖的例子:makePayment說(shuō)明:消息makePament被發(fā)送給一個(gè)Register的實(shí)例。沒(méi)有指出發(fā)送者。Register的實(shí)例發(fā)送makePament消息給一個(gè)Sale的實(shí)例。Sale的實(shí)例創(chuàng)建一個(gè)Payment的實(shí)例。圖:15.3Collaborationdiagram.
makePayment(cashTendered)1:makePayment(cashTendered)1.1:create(cashTendered)
協(xié)作圖的例子:makePayment說(shuō)明:圖:15.3C9圖:15.4Sequencediagram.
:RegisterAnactivationboxshowingthefocusofcontrol圖:15.4Sequencediagram.:Regi10交互圖表示法的公共部分/1表示類(classes)和實(shí)例(instances)圖:15.5Classandinstances.
交互圖表示法的公共部分/1表示類(classes)和實(shí)例(i11交互圖表示法的公共部分/2基本的消息表達(dá)式TheUMLhasastandardsyntaxformessageexpressions:
return:=message(parameter:parameterType):returnType
Typeinformationmaybeexcludedifobviousorunimportant.Forexample:
spec:=getProductSpect(id)
spec:=getProductSpect(id:ItemID)
spec:=getProductSpect(id:ItemID)
ProductSpecification
交互圖表示法的公共部分/2基本的消息表達(dá)式TheUMLh12基本協(xié)作圖的基本表示法連接線(Link)消息(Messages)發(fā)給自身的消息(Messagesto“self”orThis)實(shí)例創(chuàng)建(CreationofInstances)消息編號(hào)順序(MessageNumberSequencing)條件消息(ConditionalMessages)互斥條件的路徑(MutuallyExclusiveConditionalPaths)迭代(IterationorLooping)發(fā)給對(duì)象集中對(duì)象的消息迭代(IterationOveraCollection(Multiobject))發(fā)給類對(duì)象的消息(MessagestoClassObject)基本協(xié)作圖的基本表示法連接線(Link)13圖:15.6Linklines.
連接(Link)圖:15.6Linklines.連接(Link)14圖:15.7Messages.
消息(Messages)圖:15.7Messages.消息(Messages)15圖:15.8Messagesto"this."
發(fā)給自身的消息(Messagesto“self”orThis)圖:15.8Messagesto"this."發(fā)給自16圖:15.9Instancecreation.
實(shí)例創(chuàng)建(CreationofInstances)圖:15.9Instancecreation.實(shí)例創(chuàng)建17圖:15.10amorecomplexcaseisshown.
消息編號(hào)順序(MessageNumberSequencing)圖:15.10amorecomplexcaseis18圖:
15.11Complexsequencenumbering.
消息編號(hào)順序(MessageNumberSequencing)圖:15.11Complexsequencenumb19圖:15.12Conditionalmessage.
條件消息(ConditionalMessages)圖:15.12Conditionalmessage.條20圖:15.13Mutuallyexclusivemessages.互斥條件的路徑(MutuallyExclusiveConditionalPaths)圖:15.13Mutuallyexclusivemes21圖:15.14Iteration.迭代(IterationorLooping)圖:15.14Iteration.迭代(Iteration22圖:
15.15Iterationoveramultiobject.
對(duì)象集的迭代(IterationOveraCollection(Multiobject))圖:15.15Iterationoveramult23圖:15.16Messagestoaclassobject(staticmethodinvocation).
類對(duì)象消息(MessagestoClassObject)圖:15.16Messagestoaclassob24順序圖的基本表示法連接線(Links)--順序圖不用連接符號(hào)消息(Messages)表示消息返回(IllustratingReturns)發(fā)給自身的消息(Messagesto“self”orThis)實(shí)例創(chuàng)建(CreationofInstances)對(duì)象生命線和對(duì)象銷毀(ObjectLifelinesandObjectDestruction)條件消息(ConditionalMessages)互斥條件消息(MutuallyExclusiveConditionalMessages)單一消息的迭代(IterationforSingleMessage)一組消息的迭代(IterationforaSeriesofMessages)發(fā)給對(duì)象集中對(duì)象的消息迭代(IterationOveraCollection(Multiobject))發(fā)給類對(duì)象的消息(MessagestoClassObject)順序圖的基本表示法連接線(Links)--順序圖不用連接符25圖:15.17Messagesandfocusofcontrolwithactivationboxes.
消息(Messages)同步消息異步消息圖:15.17Messagesandfocusof26圖:15.18Showingreturns.表示消息返回(IllustratingReturns)消息返回圖:15.18Showingreturns.表示消息返回27圖:
15.19Messagesto"this."發(fā)給自身的消息(Messagesto“self”orThis)圖:15.19Messagesto"this."發(fā)給28圖:15.20Instancecreationandobjectlifelines.
實(shí)例創(chuàng)建(CreationofInstances)圖:15.20Instancecreationand29圖:15.21Objectdestruction
對(duì)象生命線和對(duì)象銷毀(ObjectLifelinesandObjectDestruction)圖:15.21Objectdestruction對(duì)象生30圖:15.22Aconditionalmessage.
條件消息(ConditionalMessages)圖:15.22Aconditionalmessage.31圖:15.23Mutuallyexclusiveconditionalmessages互斥條件消息(MutuallyExclusiveConditionalMessages)圖:15.23Mutuallyexclusivecon32圖:15.24Iterationforonemessage.單一消息的迭代(IterationforSingleMessage)圖:15.24Iterationforonemess33圖:15.25Iterationforasequenceof
一組消息的迭代(IterationforaSeriesofMessages)圖:15.25Iterationforasequen34圖:15.26Iterationoveramultiobject
對(duì)象集的迭代(IterationOveraCollection(Multiobject))圖:15.26Iterationoveramulti35圖:15.27Invokingclassorstaticmethods類對(duì)象消息(MessagestoClassObject)圖:15.27Invokingclassorstat36第16章--GRASP:DESIGNINGOBJECTSWITHRESPONSIBILITIESGRASP:設(shè)計(jì)具有職責(zé)的對(duì)象第16章--GRASP:DESIGNINGOBJEC37職責(zé)(Responsibility)和方法(Methods)UML定義職責(zé)(Responsibility)為“一個(gè)類型的契約或義務(wù)(acontractorobligationofaclassifier)”
。方法(Method)用來(lái)實(shí)現(xiàn)(履行)職責(zé)。一個(gè)職責(zé)可能要許多類和方法(method)來(lái)實(shí)現(xiàn),也可能只要很少方法來(lái)實(shí)現(xiàn),這是由職責(zé)的粒度(granularity)來(lái)決定的。職責(zé)(Responsibility)和方法(Methods)38職責(zé)(Responsibility)可分成兩類:“知道”型職責(zé)(knowing)“做”型職責(zé)(doing)“知道”私有的封裝數(shù)據(jù)“知道”相關(guān)聯(lián)的對(duì)象“知道”能夠派生或計(jì)算出的事物“做”自身的一些事情。如創(chuàng)建一個(gè)對(duì)象或進(jìn)行一次計(jì)算?!白觥逼渌鼘?duì)象的初始化操作??刂坪蛥f(xié)調(diào)其它對(duì)象的活動(dòng)。職責(zé)(Responsibility)可分成兩類:“知道”型39職責(zé)(Responsibility)和交互圖(InteractionDiagrams):在UML制品(artifacts)中,通常是在建立交互圖的語(yǔ)境來(lái)考慮對(duì)象的職責(zé)分配,通過(guò)方法來(lái)實(shí)現(xiàn)職責(zé)。職責(zé)(Responsibility)和交互圖(Interac40圖:16.1Responsibilitiesandmethodsarerelated.
創(chuàng)建Payments的職責(zé)用makePament(cashTendered)消息引用。意味著我們應(yīng)該給Sale類設(shè)計(jì)一個(gè)方法makePament(cashTendered)實(shí)現(xiàn)創(chuàng)建Payments的職責(zé)。圖:16.1Responsibilitiesandme41圖:16.2Softwareclassesillustratemethodnames.
UML對(duì)軟件類的表示法Saledate:Datetime:TimemakePayment(cashTendered)圖:16.2Softwareclassesillust42設(shè)計(jì)模式(Patterns)富有經(jīng)驗(yàn)的面向?qū)ο蠹夹g(shù)專家(或其它軟件開(kāi)發(fā)人員)為解決某些問(wèn)題而設(shè)計(jì)的解決方案,可作為通用原則(GeneralPrinciples)和慣用法(Idioms),用于指導(dǎo)軟件設(shè)計(jì)。如果將這些原則和慣用法以一種結(jié)構(gòu)化的形式加以描述,給出問(wèn)題和解決方案,然后起一個(gè)名字。這就是設(shè)計(jì)模式(Patterns)。例如:模式名:信息專家(InformationExpert)問(wèn)題:為了獲取某些信息,分配職責(zé)給對(duì)象的基本原則是什么?解決方案:將職責(zé)分配給信息專家--含有滿足職責(zé)所需信息的類。設(shè)計(jì)模式是一些針對(duì)特定問(wèn)題的成功的解決方案設(shè)計(jì)模式(Patterns)富有經(jīng)驗(yàn)的面向?qū)ο?3GRASP:分配職責(zé)通用原則的模式
GRASP作為設(shè)計(jì)模式來(lái)描述對(duì)象設(shè)計(jì)和職責(zé)分配的基本原則。GRASP模式:InformationExpertCreator
HighCohesionLowCouplingControllerGeneralResponsibilityAssignmentSoftwarePatternGRASP:分配職責(zé)通用原則的模式GRASP作為44信息專家(InformationExpert)模式名:信息專家(或?qū)<遥┙鉀Q的問(wèn)題:為了獲取某些信息,分配職責(zé)給對(duì)象的基本原則是什么?解決方案:將職責(zé)分配給信息專家--含有滿足職責(zé)所需信息的類。信息專家(InformationExpert)模式名:信息45圖:12.9Apartialdomainmodel.我們指望從領(lǐng)域模型找出知道銷售總金額有關(guān)信息的專家,這個(gè)專家可能是Sale假設(shè),某些類需要知道一次銷售(Sale)的總金額。我們將這個(gè)職責(zé)分配給誰(shuí)?圖:12.9Apartialdomainmodel.46圖:16.3AssociationsofSale.
圖:16.3AssociationsofSale.47圖:16.4Partialinteractionandclassdiagrams.
我們按領(lǐng)域模型的Sale概念類設(shè)計(jì)一個(gè)軟件類Sale,將分配給對(duì)象:Sale的職責(zé),實(shí)現(xiàn)為類Sale的一個(gè)方法getTotal()。我們按InformationExpert模式,給對(duì)象:Sale分配一個(gè)取得總金額的職責(zé)getTotal()。圖:16.4Partialinteractionand48圖:16.5CalculatingtheSaletotal
按領(lǐng)域模型的SalesLineItem概念類設(shè)計(jì)一個(gè)軟件類SalesLineItem,將分配給對(duì)象:SalesLineItem的職責(zé)實(shí)現(xiàn)為類SalesLineItem的方法getSubtotal()。為了得到每個(gè)銷售項(xiàng)的子金額,按InformationExpert模式,給對(duì)象:SalesLineItem分配職責(zé)getSubtotal()。圖:16.5CalculatingtheSaleto49圖:16.6CalculatingtheSaletotal.
按領(lǐng)域模型的ProductSpecification概念類設(shè)計(jì)一個(gè)軟件類ProductSpecification,將分配給對(duì)象:ProductSpecification的職責(zé)實(shí)現(xiàn)為類ProductSpecification的一個(gè)方法getPrice()。為了得到產(chǎn)品價(jià)格,按InformationExpert模式,給對(duì)象:ProductSpecification,分配一個(gè)取得商品價(jià)格的職責(zé)getPrice()。圖:16.6CalculatingtheSaleto50結(jié)論:為了履行知道和回答銷售總金額的職責(zé),設(shè)計(jì)了知道相應(yīng)信息的三個(gè)類(設(shè)計(jì)類),分配給它們相應(yīng)的職責(zé)。設(shè)計(jì)類職責(zé)SaleSalesLineItemPruductSpecification知道銷售總金額知道銷售項(xiàng)子計(jì)金額知道商品價(jià)格結(jié)論:為了履行知道和回答銷售總金額的職責(zé),設(shè)計(jì)了知道相應(yīng)信息51創(chuàng)建者(Creator)模式名:創(chuàng)建者解決的問(wèn)題:誰(shuí)負(fù)責(zé)創(chuàng)來(lái)建某個(gè)類的新的實(shí)例?解決方案:如果以下一個(gè)或多個(gè)條件成立,則可以將創(chuàng)建類A的實(shí)例的職責(zé)分配給類B。B聚集了A對(duì)象;B包含了A對(duì)象;B記錄了A對(duì)象的實(shí)例;B經(jīng)常使用A對(duì)象;當(dāng)A的實(shí)例被創(chuàng)建時(shí),B具有要傳遞給A的初始化數(shù)據(jù)(也就是說(shuō),B是創(chuàng)建A的實(shí)例這項(xiàng)任務(wù)的信息專家)創(chuàng)建者(Creator)模式名:創(chuàng)建者52圖:16.7Partialdomainmodel.
在POS應(yīng)用系統(tǒng)中,由誰(shuí)負(fù)責(zé)創(chuàng)建SalesLineItem的實(shí)例?按創(chuàng)建者模式,從領(lǐng)域模型找到Sale類包含(聚集)了SalesLineItem類。Sale類可作為SalesLineItem實(shí)例的創(chuàng)建者。圖:16.7Partialdomainmodel.在53圖:16.8CreatingaSalesLineltem.
實(shí)現(xiàn)時(shí)給Sale類定義一個(gè)方法makeLineItem,用于創(chuàng)建SalesLineItem的實(shí)例。Sale類聚集許多SalesLineItem的對(duì)象,分配makeLineItem,職責(zé)給Sale用于創(chuàng)建SalesLineItem的實(shí)例。圖:16.8CreatingaSalesLinelte54創(chuàng)建者模式的討論創(chuàng)建者模式支持低耦合度,意味著具有較低的依賴關(guān)系和較高的重用機(jī)會(huì)。因?yàn)楸粍?chuàng)建的類很可能早已經(jīng)對(duì)創(chuàng)建者類可見(jiàn)(即在創(chuàng)建者類已有方法涉及被創(chuàng)建者類),耦合程度不會(huì)增加。創(chuàng)建者模式的討論創(chuàng)建者模式支持低耦合度,意味著具有較低的依賴55第八講結(jié)束第八講結(jié)束56第二部分面向?qū)ο笙到y(tǒng)分析與設(shè)計(jì)
第二部分面向?qū)ο笙到y(tǒng)分析與設(shè)計(jì)57第八講主要內(nèi)容:從需求分析進(jìn)入設(shè)計(jì)
交互圖的UML表示法
設(shè)計(jì)模式和GRASP
expertcreator
highcohesionlowcouplingcontroller第八講主要內(nèi)容:從需求分析進(jìn)入設(shè)計(jì)expert58第14章--FROMREQUIREMENTSTO
DESIGNINTHISITERATION迭代中從需求到設(shè)計(jì)到目前為止,我們?cè)诜治霭咐龝r(shí)強(qiáng)調(diào)了需求調(diào)查,領(lǐng)域的概念以及與系統(tǒng)有關(guān)的操作。按照UP指導(dǎo),可能有10%的重要需求在初始階段調(diào)查,細(xì)化階段第一次迭代已稍微細(xì)致地進(jìn)行了調(diào)查和分析。下來(lái)可以對(duì)這一部分需求轉(zhuǎn)入進(jìn)行解決方案的設(shè)計(jì)。設(shè)計(jì)工作是借助于設(shè)計(jì)軟件對(duì)象間的協(xié)作來(lái)完成的。第14章--FROMREQUIREMENTSTO
59主要思想迭代地做正確的事情,所作的事情要正確。
(需求分析)(系統(tǒng)設(shè)計(jì))以對(duì)象(object)來(lái)進(jìn)行設(shè)計(jì)。
按對(duì)象設(shè)計(jì)的方案包括建立交互圖(interactiondiagrams)和設(shè)計(jì)類類圖(designclassdiagrams)應(yīng)用職責(zé)分配(assigningresponsibilities)的原則和設(shè)計(jì)模式(designpatterns)來(lái)建立交互圖主要思想迭代地做正確的事情,所作的事情要正確。按對(duì)象設(shè)計(jì)60第15章--INTERACTIONDIAGRAM
NOTATION交互圖的表示法第15章--INTERACTIONDIAGRAM
N61順序圖(SequenceDiagrams)和協(xié)作圖(CollaborationDiagrams)協(xié)作圖(CollaborationDiagrams)順序圖(SequenceDiagrams)交互圖(InteractionDiagrams)順序圖(SequenceDiagrams)和協(xié)作圖(Col62圖:15.1Collaborationdiagram
bamessage1()message2()message3()method1()…b.method2()…b.method3()…method1()method2()method3()圖:15.1Collaborationdiagramb63圖:15.2Sequencediagram.
message1()message2()message3()圖:15.2Sequencediagram.messa64協(xié)作圖的例子:makePayment說(shuō)明:消息makePament被發(fā)送給一個(gè)Register的實(shí)例。沒(méi)有指出發(fā)送者。Register的實(shí)例發(fā)送makePament消息給一個(gè)Sale的實(shí)例。Sale的實(shí)例創(chuàng)建一個(gè)Payment的實(shí)例。圖:15.3Collaborationdiagram.
makePayment(cashTendered)1:makePayment(cashTendered)1.1:create(cashTendered)
協(xié)作圖的例子:makePayment說(shuō)明:圖:15.3C65圖:15.4Sequencediagram.
:RegisterAnactivationboxshowingthefocusofcontrol圖:15.4Sequencediagram.:Regi66交互圖表示法的公共部分/1表示類(classes)和實(shí)例(instances)圖:15.5Classandinstances.
交互圖表示法的公共部分/1表示類(classes)和實(shí)例(i67交互圖表示法的公共部分/2基本的消息表達(dá)式TheUMLhasastandardsyntaxformessageexpressions:
return:=message(parameter:parameterType):returnType
Typeinformationmaybeexcludedifobviousorunimportant.Forexample:
spec:=getProductSpect(id)
spec:=getProductSpect(id:ItemID)
spec:=getProductSpect(id:ItemID)
ProductSpecification
交互圖表示法的公共部分/2基本的消息表達(dá)式TheUMLh68基本協(xié)作圖的基本表示法連接線(Link)消息(Messages)發(fā)給自身的消息(Messagesto“self”orThis)實(shí)例創(chuàng)建(CreationofInstances)消息編號(hào)順序(MessageNumberSequencing)條件消息(ConditionalMessages)互斥條件的路徑(MutuallyExclusiveConditionalPaths)迭代(IterationorLooping)發(fā)給對(duì)象集中對(duì)象的消息迭代(IterationOveraCollection(Multiobject))發(fā)給類對(duì)象的消息(MessagestoClassObject)基本協(xié)作圖的基本表示法連接線(Link)69圖:15.6Linklines.
連接(Link)圖:15.6Linklines.連接(Link)70圖:15.7Messages.
消息(Messages)圖:15.7Messages.消息(Messages)71圖:15.8Messagesto"this."
發(fā)給自身的消息(Messagesto“self”orThis)圖:15.8Messagesto"this."發(fā)給自72圖:15.9Instancecreation.
實(shí)例創(chuàng)建(CreationofInstances)圖:15.9Instancecreation.實(shí)例創(chuàng)建73圖:15.10amorecomplexcaseisshown.
消息編號(hào)順序(MessageNumberSequencing)圖:15.10amorecomplexcaseis74圖:
15.11Complexsequencenumbering.
消息編號(hào)順序(MessageNumberSequencing)圖:15.11Complexsequencenumb75圖:15.12Conditionalmessage.
條件消息(ConditionalMessages)圖:15.12Conditionalmessage.條76圖:15.13Mutuallyexclusivemessages.互斥條件的路徑(MutuallyExclusiveConditionalPaths)圖:15.13Mutuallyexclusivemes77圖:15.14Iteration.迭代(IterationorLooping)圖:15.14Iteration.迭代(Iteration78圖:
15.15Iterationoveramultiobject.
對(duì)象集的迭代(IterationOveraCollection(Multiobject))圖:15.15Iterationoveramult79圖:15.16Messagestoaclassobject(staticmethodinvocation).
類對(duì)象消息(MessagestoClassObject)圖:15.16Messagestoaclassob80順序圖的基本表示法連接線(Links)--順序圖不用連接符號(hào)消息(Messages)表示消息返回(IllustratingReturns)發(fā)給自身的消息(Messagesto“self”orThis)實(shí)例創(chuàng)建(CreationofInstances)對(duì)象生命線和對(duì)象銷毀(ObjectLifelinesandObjectDestruction)條件消息(ConditionalMessages)互斥條件消息(MutuallyExclusiveConditionalMessages)單一消息的迭代(IterationforSingleMessage)一組消息的迭代(IterationforaSeriesofMessages)發(fā)給對(duì)象集中對(duì)象的消息迭代(IterationOveraCollection(Multiobject))發(fā)給類對(duì)象的消息(MessagestoClassObject)順序圖的基本表示法連接線(Links)--順序圖不用連接符81圖:15.17Messagesandfocusofcontrolwithactivationboxes.
消息(Messages)同步消息異步消息圖:15.17Messagesandfocusof82圖:15.18Showingreturns.表示消息返回(IllustratingReturns)消息返回圖:15.18Showingreturns.表示消息返回83圖:
15.19Messagesto"this."發(fā)給自身的消息(Messagesto“self”orThis)圖:15.19Messagesto"this."發(fā)給84圖:15.20Instancecreationandobjectlifelines.
實(shí)例創(chuàng)建(CreationofInstances)圖:15.20Instancecreationand85圖:15.21Objectdestruction
對(duì)象生命線和對(duì)象銷毀(ObjectLifelinesandObjectDestruction)圖:15.21Objectdestruction對(duì)象生86圖:15.22Aconditionalmessage.
條件消息(ConditionalMessages)圖:15.22Aconditionalmessage.87圖:15.23Mutuallyexclusiveconditionalmessages互斥條件消息(MutuallyExclusiveConditionalMessages)圖:15.23Mutuallyexclusivecon88圖:15.24Iterationforonemessage.單一消息的迭代(IterationforSingleMessage)圖:15.24Iterationforonemess89圖:15.25Iterationforasequenceof
一組消息的迭代(IterationforaSeriesofMessages)圖:15.25Iterationforasequen90圖:15.26Iterationoveramultiobject
對(duì)象集的迭代(IterationOveraCollection(Multiobject))圖:15.26Iterationoveramulti91圖:15.27Invokingclassorstaticmethods類對(duì)象消息(MessagestoClassObject)圖:15.27Invokingclassorstat92第16章--GRASP:DESIGNINGOBJECTSWITHRESPONSIBILITIESGRASP:設(shè)計(jì)具有職責(zé)的對(duì)象第16章--GRASP:DESIGNINGOBJEC93職責(zé)(Responsibility)和方法(Methods)UML定義職責(zé)(Responsibility)為“一個(gè)類型的契約或義務(wù)(acontractorobligationofaclassifier)”
。方法(Method)用來(lái)實(shí)現(xiàn)(履行)職責(zé)。一個(gè)職責(zé)可能要許多類和方法(method)來(lái)實(shí)現(xiàn),也可能只要很少方法來(lái)實(shí)現(xiàn),這是由職責(zé)的粒度(granularity)來(lái)決定的。職責(zé)(Responsibility)和方法(Methods)94職責(zé)(Responsibility)可分成兩類:“知道”型職責(zé)(knowing)“做”型職責(zé)(doing)“知道”私有的封裝數(shù)據(jù)“知道”相關(guān)聯(lián)的對(duì)象“知道”能夠派生或計(jì)算出的事物“做”自身的一些事情。如創(chuàng)建一個(gè)對(duì)象或進(jìn)行一次計(jì)算。“做”其它對(duì)象的初始化操作??刂坪蛥f(xié)調(diào)其它對(duì)象的活動(dòng)。職責(zé)(Responsibility)可分成兩類:“知道”型95職責(zé)(Responsibility)和交互圖(InteractionDiagrams):在UML制品(artifacts)中,通常是在建立交互圖的語(yǔ)境來(lái)考慮對(duì)象的職責(zé)分配,通過(guò)方法來(lái)實(shí)現(xiàn)職責(zé)。職責(zé)(Responsibility)和交互圖(Interac96圖:16.1Responsibilitiesandmethodsarerelated.
創(chuàng)建Payments的職責(zé)用makePament(cashTendered)消息引用。意味著我們應(yīng)該給Sale類設(shè)計(jì)一個(gè)方法makePament(cashTendered)實(shí)現(xiàn)創(chuàng)建Payments的職責(zé)。圖:16.1Responsibilitiesandme97圖:16.2Softwareclassesillustratemethodnames.
UML對(duì)軟件類的表示法Saledate:Datetime:TimemakePayment(cashTendered)圖:16.2Softwareclassesillust98設(shè)計(jì)模式(Patterns)富有經(jīng)驗(yàn)的面向?qū)ο蠹夹g(shù)專家(或其它軟件開(kāi)發(fā)人員)為解決某些問(wèn)題而設(shè)計(jì)的解決方案,可作為通用原則(GeneralPrinciples)和慣用法(Idioms),用于指導(dǎo)軟件設(shè)計(jì)。如果將這些原則和慣用法以一種結(jié)構(gòu)化的形式加以描述,給出問(wèn)題和解決方案,然后起一個(gè)名字。這就是設(shè)計(jì)模式(Patterns)。例如:模式名:信息專家(InformationExpert)問(wèn)題:為了獲取某些信息,分配職責(zé)給對(duì)象的基本原則是什么?解決方案:將職責(zé)分配給信息專家--含有滿足職責(zé)所需信息的類。設(shè)計(jì)模式是一些針對(duì)特定問(wèn)題的成功的解決方案設(shè)計(jì)模式(Patterns)富有經(jīng)驗(yàn)的面向?qū)ο?9GRASP:分配職責(zé)通用原則的模式
GRASP作為設(shè)計(jì)模式來(lái)描述對(duì)象設(shè)計(jì)和職責(zé)分配的基本原則。GRASP模式:InformationExpertCreator
HighCohesionLowCouplingControllerGeneralResponsibilityAssignmentSoftwarePatternGRASP:分配職責(zé)通用原則的模式GRASP作為100信息專家(InformationExpert)模式名:信息專家(或?qū)<遥┙鉀Q的問(wèn)題:為了獲取某些信息,分配職責(zé)給對(duì)象的基本原則是什么?解決方案:將職責(zé)分配給信息專家--含有滿足職責(zé)所需信息的類。信息專家(InformationExpert)模式名:信息101圖:12.9Apartialdomainmodel.我們指望從領(lǐng)域模型找出知道銷售總金額有關(guān)信息的專家,這個(gè)專家可能是Sale假設(shè),
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京郵電大學(xué)《國(guó)際投資與信貸》2023-2024學(xué)年第二學(xué)期期末試卷
- 公共交通線路審批管理制度
- 直埋管施工方案
- 特種陶瓷磨豆?jié){機(jī)問(wèn)卷調(diào)查
- 城市路燈井施工方案
- 江西省新八校聯(lián)考2024-2025學(xué)年高三上學(xué)期1月期末聯(lián)考英語(yǔ)試題【含答案】
- 甘肅省酒泉市2024-2025學(xué)年高一(下)開(kāi)學(xué)生物試卷-(含解析)
- 城市公共廣告施工方案
- 電表安裝施工方案
- 反濾土工布施工方案
- 馬克思恩格斯列寧經(jīng)典著作選讀課件
- 機(jī)械裝配工藝作業(yè)指導(dǎo)書
- 初中綜合實(shí)踐活動(dòng)《動(dòng)技術(shù)-1探究營(yíng)養(yǎng)與烹飪》培優(yōu)課件
- (完整word版)風(fēng)電項(xiàng)目開(kāi)發(fā)前期工作流程
- 2023年初中升學(xué)考試語(yǔ)文中考漫畫練習(xí)題123
- 2022屆“一本、二本臨界生”動(dòng)員大會(huì)(2023.5)
- 中小學(xué)生綜合素質(zhì)評(píng)價(jià)表
- 《語(yǔ)文課程標(biāo)準(zhǔn)》義務(wù)教育2022年修訂版【原版】
- 食堂工作人員安全培訓(xùn)內(nèi)容資料
- 體檢報(bào)告單入職體檢模板
- 航運(yùn)公司安全生產(chǎn)應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論