您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 面向对象分析与设计侯爱民chapter05.
第5章顺序图和协作图5.1交互图概述5.2顺序图5.3顺序图中的消息5.4建立顺序图的步骤5.5协作图5.6建立协作图的步骤5.7顺序图与协作图的比较5.8顺序图与协作图的转换5.1交互图概述动态模型:动态模型描述了系统随时间变化的行为,这些行为是根据从静态视图中抽取的系统的瞬间值的变化来描述的。动态模型主要包括交互图和行为图。交互图包括顺序图和协作图。行为图包括状态图和活动图。5.1交互图概述顺序图——用来显示对象之间的关系,并强调对象之间消息的时间顺序,同时显示对象之间的交互。协作图——用来描述对象之间的交互关系。5.1交互图概述状态图——通过对类对象的生存周期建立模型来描述对象随时间变化的动态行为。活动图——是一种特殊形式的状态机,用于对计算流程和工作流程建模。5.1交互图概述顺图的定义:顺序图是用来描述对象之间以及对象与参与者(actor)之间的动态协作(谁向谁发消息)关系,以及协作过程中行为次序(消息的先后次序)的图形文档。它通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间的消息传递情况。5.1交互图概述顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。5.1交互图概述对象:对象是系统中用来描述客观事物的一个实体,是基本单位。一个对象由一组属性和对这组属性进行操作的一组方法组成。objectName:ClassName:ClassNameobjectName显示对象名和类名只显示类名只显示对象名5.1交互图概述类:类是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。类的实例就是对象。5.1交互图概述EmployeeNamePositionSalaryStartDateEndDate◆hire()◆fire()◆promote()◆getSalary()◆retire()类Employee5.1交互图概述交互图包括:顺序图(sequencediagram)协作图(collaborationdiagram)顺序图着重描述对象按照时间顺序的消息交换。协作图着重描述系统成分(指:对象,消息,链)如何分工。5.1交互图概述顺序图和协作图从不同的角度表达了系统中的交互和系统的行为。它们之间可以相互转化。一个用例需要多个顺序图或协作图。除非特别简单的用例。此时,这个用例只需要一个顺序图来描述行为。5.1交互图概述交互图可以帮助分析人员对照检查每个用例中所描述的用户需求是否已经落实到能够完成这些功能的类中去实现。交互图描述的是对象之间的消息发送关系,而不是类之间的关系。5.2顺序图顺序图,也称时序图。Rumbaugh给出的定义:顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。:Driver:Caroper()5.2顺序图顺序图描述了对象之间传递消息的时间顺序。它用来表示用例中的行为顺序,强调消息时间顺序的交互图。当执行一个用例行为时,顺序图中的每一条消息对应了一个类操作,或状态机中引起转换的触发事件。5.2顺序图object1:C1:Jreoper()object2:C2object3:C3oper1()oper2()oper3()对象维时间维(时间递增)对象生命线控制焦点消息顺序图激活期5.2顺序图学位初评:教务人员学生学号()成绩管理奖惩管理学生学号()所有课程成绩()学生学号()所有奖惩记录()5.2顺序图困惑一:在前面的两个顺序图中,前一个是对象之间交互,后一个是功能模块之间交互怎么理解“顺序图”的概念?5.2顺序图困惑一的回答:顺序图是由一组参与者(系统内依次彼此交互的各个组成部分)组成如果一个系统很容易、很清晰地用若干个对象描述,那么顺序图就以“对象”为参与者5.2顺序图困惑一的回答:顺序图是由一组参与者(系统内依次彼此交互的各个组成部分)组成如果一个系统很容易、很清晰地用若干个功能模块描述,那么顺序图就以“功能模块”为参与者功能模块的最后代码实现,终究“归根”到对象及其方法上5.2顺序图困惑二:交互图通常用来描述一个用例的行为一个用例需要多个顺序图或协作图怎么理解“用例图”与“顺序图”的关系?5.2顺序图困惑二的回答:下面给出一个用例图AuthorCredentialsDatabaseRecordApplicationFailureCheckIdentityCreateanewRegularBlogAccountextendAdministratorincludeCreateanewEditorialBlogAccountCreateanewBlogaccount5.2顺序图困惑二的回答:用例“CreateanewRegularBlogAccount”的用例描述主要流程步骤动作1管理者要求系统创建一个新博客帐户2管理者选择一般(regular)的帐户类型3管理者输入作者详细数据4使用作者凭证数据库,验证作者详细数据5创建新的一般型的博客帐户6通过电子邮件将新博客帐户详细数据的摘要发给作者5.2顺序图困惑二的回答:用例“CreateanewRegularBlogAccount”的顺序图5.2顺序图:ContentManagementSystemcreateNewBlogAccount()checkAuthorDetails(author:AuthorDetails)actoradmin:Administratoractoracd:AuthorCredentialsDBactores:EmailSystemselectBlogAccountType(type)enterAuthorDetails(author:AuthorDetails)createNewBlogAccount(author:AuthorDetails)sendEmail(email:Email)emailBlogDteails(regularBlogAccount)5.2顺序图顺序图中的建模元素:对象(参与者实例也是对象)生命线控制焦点消息5.2顺序图对象:3种命名方式显示对象名和类名只显示类名,不显示对象名(匿名对象)。此时,用类角色代表实际的对象。只显示对象名,不显示类名(不关心对象所属的类名)5.2顺序图objectName:ClassName:ClassNameobjectName显示对象名和类名只显示类名只显示对象名5.2顺序图生命线:从对象图标向下延伸的一条虚线表示对象存在的时间:Driver5.2顺序图生命线:生命线表示一个对象在一段时期内的存在正是因为这个特性,使顺序图适合对象之间消息的时间顺序一般情况下,对象的生命线从图的顶部画到底部,表示对象存在于交互的整个过程5.2顺序图控制焦点(又称激活期):在生命线上的小矩形表示时间段的符号在这个时间段内,对象将执行相应的操作:Driver:Caroper()5.2顺序图控制焦点:控制焦点可以嵌套,更精确地说明消息的开始和结束位置object1:C1object2:C2object3:C3oper1()oper2()oper3()嵌套消息的开始位置消息的结束位置5.2顺序图控制焦点:激活期表示一个对象执行一个动作的期间,即对象激活的时间段激活矩形的高度代表激活持续时间这个特性可视化地描述了对象执行一项操作的时间5.2顺序图消息:从一个对象的生命线到另一个对象的生命线的箭头定义交互和协作中交换的信息一个对象或类可以通过消息请求另一个对象或类来完成特定功能5.3顺序图中的消息消息种类:调用消息异步消息返回消息反身消息阻止消息超时消息5.3顺序图中的消息调用消息:调用消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者放弃或返回控制早期版本中,也称为同步消息为了图的简洁,与调用消息配对的返回消息可以不用画出来接收者是一个需要通过消息驱动才能执行动作的对象(被动对象)5.3顺序图中的消息调用消息::Driver:Caroper()注意箭头形状5.3顺序图中的消息异步消息:异步消息的发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待消息接收者返回消息或控制接收者和发送者是并发工作的:Driver:Caroper()注意箭头形状5.3顺序图中的消息返回消息:返回消息表示从过程调用返回如果是从过程调用返回,则返回消息是隐含的,所以返回消息可以不用画出来对于非过程调用,如果有返回消息,必须明确表示出来返回消息用虚箭头表示5.3顺序图中的消息返回消息::Driver:Caroper()5.3顺序图中的消息反身消息:在反身消息中,消息的发送者和接收者是同一个对象。:CustomerActor1:cancel():Event:Performance2:cancelPerformance()3*[foreachperformancewhosedate≥today]:delete():void4:returnvoid6:returnvoid5:returnvoid5.3顺序图中的消息阻止消息:消息发送者发出消息给接收者,如果接收者无法立即接收消息,则发送者放弃这个消息用折回的箭头表示:Driver:Caroper()注意箭头形状5.3顺序图中的消息超时消息:消息发送者发出消息给接收者,并按指定时间等待。如果接收者无法在指定时间内接收消息,则发送者放弃这个消息用附带小圆圈表示:Driver:Caroper()注意箭头形状5.3顺序图中的消息消息的语法格式:[predecessor][guard-condition][sequence-expression][return-value:=]message-name([argument-list])predecessor:必须先发生的消息的列表guard-condition:警戒条件sequence-expression:消息顺序表达式5.3顺序图中的消息消息的语法格式:[predecessor][guard-condition][sequence-expression][return-value:=]message-name([argument-list])return-value:消息的返回值的名字列表message-name:消息名argument-list:消息的参数列表5.4建立顺序图的步骤①确定交互过程的上下文②识别参与交互过程的对象③为每个对象设置生命线,即确定哪些对象存在于整个交互过程中,哪些对象在交互过程中被创建和撤消④从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息5.4建立顺序图的步骤⑤如果需要表示消息的嵌套,或/和表示消息发生时的时间点,则采用控制焦点⑥如果需要说明时间约束,则在消息旁边加上约束说明⑦如果需要,可以为每个消息附上前置条件和后置条件5.4建立顺序图的步骤读卡机:客户1:插卡ATM屏幕2:读卡号3:屏幕初始化5:输入密码6:验证卡号取款机帐户4:提示输入密码5.4建立顺序图的步骤读卡机:客户7:选择取钱,输入提取金额ATM屏幕9:验证金额8:提交金额11:提供钱、收据取款机帐户12:退卡10:扣钱5.4建立顺序图的步骤总结:激活期代表一个对象直接或间接的执行一个动作(操作)的时间。激活矩形的高度代表激活持续时间。激活期可以被理解成C语言中一对花括号“{…}”中的内容。一个单独的顺序图只能显示一个控制流。即用例的一个脚本。5.4建立顺序图的步骤总结:一般来说,一个完整的控制流肯定是复杂的,因此需要多个顺序图来描述。一些顺序图是主要的,另一些顺序图用来描述可选择的路径和一些例外。再用一个包,对它们进行统一的管
本文标题:面向对象分析与设计侯爱民chapter05.
链接地址:https://www.777doc.com/doc-1960734 .html