




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二部分面向对象系统分析与设计
第二部分面向对象系统分析与设计1第八讲主要内容:从需求分析进入设计
交互图的UML表示法
设计模式和GRASP
expertcreator
highcohesionlowcouplingcontroller第八讲主要内容:从需求分析进入设计expert2第14章--FROMREQUIREMENTSTO
DESIGNINTHISITERATION迭代中从需求到设计到目前为止,我们在分析案例时强调了需求调查,领域的概念以及与系统有关的操作。按照UP指导,可能有10%的重要需求在初始阶段调查,细化阶段第一次迭代已稍微细致地进行了调查和分析。下来可以对这一部分需求转入进行解决方案的设计。设计工作是借助于设计软件对象间的协作来完成的。第14章--FROMREQUIREMENTSTO
3主要思想迭代地做正确的事情,所作的事情要正确。
(需求分析)(系统设计)以对象(object)来进行设计。
按对象设计的方案包括建立交互图(interactiondiagrams)和设计类类图(designclassdiagrams)应用职责分配(assigningresponsibilities)的原则和设计模式(designpatterns)来建立交互图主要思想迭代地做正确的事情,所作的事情要正确。按对象设计4第15章--INTERACTIONDIAGRAM
NOTATION交互图的表示法第15章--INTERACTIONDIAGRAM
N5顺序图(SequenceDiagrams)和协作图(CollaborationDiagrams)协作图(CollaborationDiagrams)顺序图(SequenceDiagrams)交互图(InteractionDiagrams)顺序图(SequenceDiagrams)和协作图(Col6图:15.1Collaborationdiagram
bamessage1()message2()message3()method1()…b.method2()…b.method3()…method1()method2()method3()图:15.1Collaborationdiagramb7图:15.2Sequencediagram.
message1()message2()message3()图:15.2Sequencediagram.messa8协作图的例子:makePayment说明:消息makePament被发送给一个Register的实例。没有指出发送者。Register的实例发送makePament消息给一个Sale的实例。Sale的实例创建一个Payment的实例。图:15.3Collaborationdiagram.
makePayment(cashTendered)1:makePayment(cashTendered)1.1:create(cashTendered)
协作图的例子:makePayment说明:图:15.3C9图:15.4Sequencediagram.
:RegisterAnactivationboxshowingthefocusofcontrol图:15.4Sequencediagram.:Regi10交互图表示法的公共部分/1表示类(classes)和实例(instances)图:15.5Classandinstances.
交互图表示法的公共部分/1表示类(classes)和实例(i11交互图表示法的公共部分/2基本的消息表达式TheUMLhasastandardsyntaxformessageexpressions:
return:=message(parameter:parameterType):returnType
Typeinformationmaybeexcludedifobviousorunimportant.Forexample:
spec:=getProductSpect(id)
spec:=getProductSpect(id:ItemID)
spec:=getProductSpect(id:ItemID)
ProductSpecification
交互图表示法的公共部分/2基本的消息表达式TheUMLh12基本协作图的基本表示法连接线(Link)消息(Messages)发给自身的消息(Messagesto“self”orThis)实例创建(CreationofInstances)消息编号顺序(MessageNumberSequencing)条件消息(ConditionalMessages)互斥条件的路径(MutuallyExclusiveConditionalPaths)迭代(IterationorLooping)发给对象集中对象的消息迭代(IterationOveraCollection(Multiobject))发给类对象的消息(MessagestoClassObject)基本协作图的基本表示法连接线(Link)13图:15.6Linklines.
连接(Link)图:15.6Linklines.连接(Link)14图:15.7Messages.
消息(Messages)图:15.7Messages.消息(Messages)15图:15.8Messagesto"this."
发给自身的消息(Messagesto“self”orThis)图:15.8Messagesto"this."发给自16图:15.9Instancecreation.
实例创建(CreationofInstances)图:15.9Instancecreation.实例创建17图:15.10amorecomplexcaseisshown.
消息编号顺序(MessageNumberSequencing)图:15.10amorecomplexcaseis18图:
15.11Complexsequencenumbering.
消息编号顺序(MessageNumberSequencing)图:15.11Complexsequencenumb19图:15.12Conditionalmessage.
条件消息(ConditionalMessages)图:15.12Conditionalmessage.条20图:15.13Mutuallyexclusivemessages.互斥条件的路径(MutuallyExclusiveConditionalPaths)图:15.13Mutuallyexclusivemes21图:15.14Iteration.迭代(IterationorLooping)图:15.14Iteration.迭代(Iteration22图:
15.15Iterationoveramultiobject.
对象集的迭代(IterationOveraCollection(Multiobject))图:15.15Iterationoveramult23图:15.16Messagestoaclassobject(staticmethodinvocation).
类对象消息(MessagestoClassObject)图:15.16Messagestoaclassob24顺序图的基本表示法连接线(Links)--顺序图不用连接符号消息(Messages)表示消息返回(IllustratingReturns)发给自身的消息(Messagesto“self”orThis)实例创建(CreationofInstances)对象生命线和对象销毁(ObjectLifelinesandObjectDestruction)条件消息(ConditionalMessages)互斥条件消息(MutuallyExclusiveConditionalMessages)单一消息的迭代(IterationforSingleMessage)一组消息的迭代(IterationforaSeriesofMessages)发给对象集中对象的消息迭代(IterationOveraCollection(Multiobject))发给类对象的消息(MessagestoClassObject)顺序图的基本表示法连接线(Links)--顺序图不用连接符25图:15.17Messagesandfocusofcontrolwithactivationboxes.
消息(Messages)同步消息异步消息图:15.17Messagesandfocusof26图:15.18Showingreturns.表示消息返回(IllustratingReturns)消息返回图:15.18Showingreturns.表示消息返回27图:
15.19Messagesto"this."发给自身的消息(Messagesto“self”orThis)图:15.19Messagesto"this."发给28图:15.20Instancecreationandobjectlifelines.
实例创建(CreationofInstances)图:15.20Instancecreationand29图:15.21Objectdestruction
对象生命线和对象销毁(ObjectLifelinesandObjectDestruction)图:15.21Objectdestruction对象生30图:15.22Aconditionalmessage.
条件消息(ConditionalMessages)图:15.22Aconditionalmessage.31图:15.23Mutuallyexclusiveconditionalmessages互斥条件消息(MutuallyExclusiveConditionalMessages)图:15.23Mutuallyexclusivecon32图:15.24Iterationforonemessage.单一消息的迭代(IterationforSingleMessage)图:15.24Iterationforonemess33图:15.25Iterationforasequenceof
一组消息的迭代(IterationforaSeriesofMessages)图:15.25Iterationforasequen34图:15.26Iterationoveramultiobject
对象集的迭代(IterationOveraCollection(Multiobject))图:15.26Iterationoveramulti35图:15.27Invokingclassorstaticmethods类对象消息(MessagestoClassObject)图:15.27Invokingclassorstat36第16章--GRASP:DESIGNINGOBJECTSWITHRESPONSIBILITIESGRASP:设计具有职责的对象第16章--GRASP:DESIGNINGOBJEC37职责(Responsibility)和方法(Methods)UML定义职责(Responsibility)为“一个类型的契约或义务(acontractorobligationofaclassifier)”
。方法(Method)用来实现(履行)职责。一个职责可能要许多类和方法(method)来实现,也可能只要很少方法来实现,这是由职责的粒度(granularity)来决定的。职责(Responsibility)和方法(Methods)38职责(Responsibility)可分成两类:“知道”型职责(knowing)“做”型职责(doing)“知道”私有的封装数据“知道”相关联的对象“知道”能够派生或计算出的事物“做”自身的一些事情。如创建一个对象或进行一次计算。“做”其它对象的初始化操作。控制和协调其它对象的活动。职责(Responsibility)可分成两类:“知道”型39职责(Responsibility)和交互图(InteractionDiagrams):在UML制品(artifacts)中,通常是在建立交互图的语境来考虑对象的职责分配,通过方法来实现职责。职责(Responsibility)和交互图(Interac40图:16.1Responsibilitiesandmethodsarerelated.
创建Payments的职责用makePament(cashTendered)消息引用。意味着我们应该给Sale类设计一个方法makePament(cashTendered)实现创建Payments的职责。图:16.1Responsibilitiesandme41图:16.2Softwareclassesillustratemethodnames.
UML对软件类的表示法Saledate:Datetime:TimemakePayment(cashTendered)图:16.2Softwareclassesillust42设计模式(Patterns)富有经验的面向对象技术专家(或其它软件开发人员)为解决某些问题而设计的解决方案,可作为通用原则(GeneralPrinciples)和惯用法(Idioms),用于指导软件设计。如果将这些原则和惯用法以一种结构化的形式加以描述,给出问题和解决方案,然后起一个名字。这就是设计模式(Patterns)。例如:模式名:信息专家(InformationExpert)问题:为了获取某些信息,分配职责给对象的基本原则是什么?解决方案:将职责分配给信息专家--含有满足职责所需信息的类。设计模式是一些针对特定问题的成功的解决方案设计模式(Patterns)富有经验的面向对象43GRASP:分配职责通用原则的模式
GRASP作为设计模式来描述对象设计和职责分配的基本原则。GRASP模式:InformationExpertCreator
HighCohesionLowCouplingControllerGeneralResponsibilityAssignmentSoftwarePatternGRASP:分配职责通用原则的模式GRASP作为44信息专家(InformationExpert)模式名:信息专家(或专家)解决的问题:为了获取某些信息,分配职责给对象的基本原则是什么?解决方案:将职责分配给信息专家--含有满足职责所需信息的类。信息专家(InformationExpert)模式名:信息45图:12.9Apartialdomainmodel.我们指望从领域模型找出知道销售总金额有关信息的专家,这个专家可能是Sale假设,某些类需要知道一次销售(Sale)的总金额。我们将这个职责分配给谁?图:12.9Apartialdomainmodel.46图:16.3AssociationsofSale.
图:16.3AssociationsofSale.47图:16.4Partialinteractionandclassdiagrams.
我们按领域模型的Sale概念类设计一个软件类Sale,将分配给对象:Sale的职责,实现为类Sale的一个方法getTotal()。我们按InformationExpert模式,给对象:Sale分配一个取得总金额的职责getTotal()。图:16.4Partialinteractionand48图:16.5CalculatingtheSaletotal
按领域模型的SalesLineItem概念类设计一个软件类SalesLineItem,将分配给对象:SalesLineItem的职责实现为类SalesLineItem的方法getSubtotal()。为了得到每个销售项的子金额,按InformationExpert模式,给对象:SalesLineItem分配职责getSubtotal()。图:16.5CalculatingtheSaleto49图:16.6CalculatingtheSaletotal.
按领域模型的ProductSpecification概念类设计一个软件类ProductSpecification,将分配给对象:ProductSpecification的职责实现为类ProductSpecification的一个方法getPrice()。为了得到产品价格,按InformationExpert模式,给对象:ProductSpecification,分配一个取得商品价格的职责getPrice()。图:16.6Calculatingt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 7605:2025 EN Underwater acoustics - Measurement of underwater ambient sound
- 英语关于食物课件
- 英语倒装的说课课件
- 无障碍建设管理办法
- 昆虫类养殖管理办法
- 新客户稽核管理办法
- 合同管理办法法规员
- 无组织排放管理办法
- 注册师奖励管理办法
- 博士预答辩管理办法
- 《离骚》拼音及注释
- 宝钢设备大修管理办法
- 成人阻塞性睡眠呼吸暂停多学科诊疗指南主要内容
- Q-CSG1211016-2025 光伏发电站接入电网技术规范
- 社保费培训课件税务局
- 《ISO 37001-2025 反贿赂管理体系要求及使用指南》专业深度解读和应用培训指导材料之1:2范围+3术语和定义(雷泽佳编制-2025A1)
- 音乐节与音乐会策划项目可行性分析报告
- (2021年)emi滤波器设计规范
- 云硫矿业招聘试题及答案
- 心理健康b证笔试考试试题及答案
- 小学生中草药课件
评论
0/150
提交评论