第4章顺序图和协作图_第1页
第4章顺序图和协作图_第2页
第4章顺序图和协作图_第3页
第4章顺序图和协作图_第4页
第4章顺序图和协作图_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章顺序图与协作图4.1交互图概述Interactiondiagram,是描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档;通常用来描述一个用例的行为,实现一个用例,完成对系统的动态行为建模;包含两种:顺序图(或时序图,sequencediagram)协作图(collaborationdiagram)顺序图面向时间描述对象交互的图协作图对象间消息协作的结构化视图4.2

顺序图UML-4-4.2.1概要顺序图用来表示用例中的行为顺序。任何用例都可以使用顺序图进一步阐明和实现。顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。顺序图属于动态建模。顺序图的重点在消息序列上,也就是说,描述消息是如何在对象间发送和接收的。表示了对象之间传送消息的时间顺序。浏览顺序图的方法是:从上到下查看对象间交换的消息。4.2顺序图按照时间顺序显示对象之间交互的图4.2顺序图UML-6-

顺序图与用例图和类图的关系例子--移动电话系统的用例图移动用户移动网络与对方通话下载图符下载铃声管理电话本例子--移动电话系统的顺序图:移动用户:移动按键:移动显示:移动手机:移动基站按数字键显示按键号码按发送键连接基站建立连接连接成功显示连接成功例子--移动电话系统的协作图:移动用户1:按数字键3:按发送键

:移动按键2:显示按键号码

:移动显示

:移动手机

:移动基站4:连接基站5:建立连接6:连接成功7:显示连接成功4.2

顺序图UML-10-4.2.2顺序图中的事物(建模元素)事物名称解释图参与者与系统、子系统或类发生交互作用的外部用户(参见用例图定义)。对象顺序图的横轴上是与序列有关的对象。对象的表示方法是:矩形框中写有对象或类名,且名字下面有下划线。生命线坐标轴纵向的虚线表示对象在序列中的执行情况(即发送和接收的消息,对象的活动)这条虚线称为对象的“生命线”。消息符号消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。参与者或对象参与者和对象按照从左到右的顺序排列一般最多两个参与者,他们分列两端。启动这个用例的活动者往往排在最左边;接收消息的活动者则排在最右端;对象从左到右按照重要性排列或按照消息先后顺序排列。参与者或对象对象的命名方式有三种:包括对象名和类名类名(匿名对象)对象名(不关心类)生命线生命线(Lifeline):每个对象都有自己的生命线,用来表示在该用例中一个对象在一段时间内的存在垂直的虚线如果对象生命期结束,则用注销符号表示对象默认的位置在图顶部,表示对象在交互之前已经存在如果是在交互过程中由另外的对象所创建,则位于图的中间某处。激活期激活期(activation)/控制焦点(focusofcontrol)对象在一段时间内获得了焦点,也称激活期对象执行某个动作的时期空心矩形条激活期的长短意味着对象执行某个动作的时间有多长,可以通过约束{10ms}来限制执行时间的长短。消息面向对象方法中,消息是对象间交互信息的主要方式。结构化程序设计中,模块间传递信息的方式主要是过程(或函数)调用。对象A向对象B发送消息,可以简单地理解为对象A调用对象B的一个操作(operation)。消息顺序图中,尽力保持消息的顺序是从左到右排列的。一个顺序图的消息流开始于左上方,消息2的位置比消息1低,这意味着消息2的顺序比消息1要迟。因为西方的阅读习惯是从左到右。顺序图中消息编号可显示,也可不显示。协作图中必须显示。4.2

顺序图UML-17-简单的例子从参与者到对象和从对象到参与者之间发送的消息从对象传递给另一个对象的消息在类图中的类的对象使用系统的参与者,这个系统是为某个用例的某个场景设计的对象生命线表示从上到下的时间顺序,消息1在消息2之前发生,消息2在消息3之前发生窄长方框用以强调这个部分处于活动状态消息格式:operation(parameterlist)

向哪个对象发消息实际上就是调用它的类中的操作,就是调用箭头指向的对象所在类的一个operation。例:订单类发消息给客户类调用客户类中的“验证客户”操作4.2

顺序图UML-18-复杂的例子信息亭售票中心信用卡服务从这个例子中可以看出:Kjosk类中的操作有

ShowAvailable(seat-list)DemandPayment(cost)printtickets(performance,seats)ejectcardBoxOffice中的操作有

Request(count,performance)SelectSeatsInsertCard(CardNumber)authorizedCreditCardService类中的操作有

charge(cardnumber,cost)

此图是描述购票这个用例的顺序图。顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款这个用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。此图中存在的事物有:

对象(信息亭Kjosk,售票中心BoxOffice,信用卡服务CreditCardService),生命线,消息符号。信息亭发Request(count,performance)消息给售票中心,表示调用售票中心类的Request(count,performance)操作,来查询演出的信息。售票中心发ShowAvailable(seat-list)消息给信息亭,表示调用信息亭类中的ShowAvailable(seat-list)操作,给出可用的座位表。…………消息UML三种消息:调用(ProcedureCall)消息----同步消息异步(Asynchronous)消息返回(Return)消息Rose扩充:阻止(Balking)消息超时(Time-out)消息消息UML三种消息:调用(ProcedureCall)发送者把消息发送后,等待直到接收者返回控制,可以表示同步;实心箭头符号消息UML三种消息:异步(Asynchronous)消息发送后,发送者继续操作,不等待,常用于并发;消息UML三种消息:返回(Return)表示消息的返回。消息上方放置返回值同步消息的返回可以画出(如果想明确表达返回值),也可以不画出,直接隐含。异步消息可以有返回,也可以没有。(可以响应异步消息,也可以不响应该异步消息。)如果顺序图上显示有编号,则返回消息的编号和当初发送消息的编号完全一样。虚线箭头表示,和依赖关系不要混淆消息自调用(SelfCall)某对象自己调用自己的操作UML标记(嵌套的矩形条)Rose标记消息Rose新增消息阻止(Balking)接收者如果无法立即接收消息,则发送者放弃该消息超时(Time-out)如果接收者无法在指定的时间内接收消息,则发送者放弃该消息Q:这两种消息可以看做是同步or异步消息?消息格式[前缀][警戒条件][顺序表达式][返回值:=]消息名([参数列表])例:2:display()简单消息1.3.1:p:=find()带返回值的嵌套消息[x<0]4:invert(x,color)条件消息3.1*[x=1..10]:update()

循环消息a3,b4/c2:copy(a,b)线程同步1.1a,1.1b/1.2:continue()带前缀消息在发送线程c的第2个消息之前,必须先发送线程a的第3个消息和线程b的第4个消息在发送消息1.2之前必须已经同时发送并发消息给线程a和b前缀(predecessor)语法:消息序列号,消息序列号,.../前缀是一个用来同步线程或路径(path)的表达式意思是在发送当前消息之前指定序列号的消息被处理(必须连续执行)消息序列号之间用逗号隔开,用斜杠结束例如1.1a,1.1b/1.2:continue()

,在发送消息1.2之前必须已经同时发送并发消息给线程a和b消息警戒条件(guard-condition)语法:[条件短语]条件短语通常用伪代码或真正的程序语言来表示,UML并不规定其语法例如,[x<0]4:invert(x,color)消息序列表达式(sequence-expression)语法[integer|name][recurrence]:integer为指定消息顺序的序列号,消息1是消息序列的开始消息,1.1是消息1的处理过程中的第一条嵌套的消息,消息1.2是消息1的处理过程中的第二条嵌套的消息,一个消息序列的例子如1,1.1,1.2,1.2.1,1.2.2,1.3,等。这样的序列号不仅能够表示消息的顺序而且还能表示消息的嵌套关系(当消息是异步消息时消息为嵌套的操作调用及返回)name表示并发控制线程,例如1.2a和1.2b为同时发送的并发消息消息消息recurrence表示一个条件或迭代的执行,有两种选择*[循环子句]循环子句(iteration-clause)用来指定一个循环(重复执行)例如:一个包括循环的消息

1.1*[x=1..10]:doSomething()[条件子句]条件子句一般用来表示分支而不是用作警戒条件[x<0]是两个可以用来分支的条件子句这两个条件只能有一个为真因而只有一个分支被执行(即发送与分支有关的消息)条件子句和循环子句都可以用伪代码或真正的编程语言来表示序列表达式用冒号结束消息返回值、消息名和参数表返回值表示一个操作调用(即一个消息)的结果消息Rose中的消息Rose中的消息Simple和Asynchronous都可表示异步,UML1.4之后的版本用Simple消息表示异步ProcedureCall和Synchronous和都可表示同步,UML早期版本用“同步消息”这一术语,目前常用ProcedureCall消息表示同步Return不变新增balking和time-out消息4.2.3建立顺序图的步骤确定交互过程的上下文识别参与交互过程的对象为每个对象设置生命线从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息.如果需要嵌套或(和)表示消息发生的时间点,使用FOC.如果需要说明时间约束,则在消息旁边加上约束说明.如果需要,可以为每个消息设置前置条件和后置条件.4.2.4案例:存款分析级别的顺序图,粗略,双斜杠——忽略消息同步异步类别也无妨4.2.4案例:新增书目和图书操作4.2顺序图UML-38-①②③④⑤⑦⑥⑨⑧⑩1指出左图中的参与者?A①B②C③D④2哪些是对象?A①B②③④C④D⑤⑥⑦⑧⑨⑩3Server类调用了CreditService类中的什么操作?A⑦B⑧C⑦⑧D⑧⑨练习题1.A2.B3.B4.2.5练习用户打印文件,计算机向打印服务器发送打印命令,打印机如果空闲,则直接打印,否则把打印文件存储在打印队列中。用户打印文件,计算机向打印服务器发送打印命令,打印机如果空闲,则直接打印,否则把打印文件存储在打印队列中。4.2.5练习管理员通过课程管理器打印课程UML的信息顺序图制作提示:只关注核心对象顺序图用于描述某个用例的部分交互细节管理员通过课程管理器打印课程UML的信息管理员通过课程管理器打印所有课程信息4.3协作图协作图是用于描述系统的行为是如何由系统成分协作实现的图.对象object链link消息message协作图中的元素:4.3.1多对象多对象是多个对象组成的集合,往往是同一个类的对象;如果消息同时发给多个对象,则用多对象表示;在顺序图中仍然显示为单对象一样的图标,

rose中multipleinstance协作图中重叠的方框。4.3.2活动对象/主动对象主动对象是一组属性和一组方法的封装体,其中至少有一个方法不需要接收消息就能主动执行(称为主动方法)主动对象是不需接收消息就可自动启动交互的对象除了含有主动方法外,主动对象和被动对象无区别

UML标记Rose标记4.3.3建立协作图的步骤确定交互过程的上下文识别参与交互过程的对象如果需要,为每个对象设置初始特性确定对象之间的链,及沿着链的消息从引发该交互过程的初始消息开始,将每个消息附到相应的链上如果需要表示消息嵌套,则有Dewey十进制表示.如果需要说明时间约束,则在消息旁边加上约束说明如果需要,可以为每个消息设置前置条件和后置条件4.3.4案例:存款4.2.4案例:存款—顺序图4.4顺序图与协作图的比较相同点规定责任,二者均直观地规定了发送对象和接收对象的责任.支持消息,二者均支持所有的消息类型.衡量工具,二者均是衡量耦合性的工具.不同点协作图强调参与交互的对象的组织结构;顺序图强调消息的时间顺序.顺序图可以反映对象的创建/激活/撤消;协作图不能.协作图能反应动作路径,消息必须有顺序号;顺序图没有.4.4顺序图与协作图的比较汽车租赁系统中”客户还车”的顺序图4.4顺序图与协作图的比较汽车租赁系统中”客户还车”的协作图4.4顺序图与协作图的比较案例:查询学生信息—顺序图4.4顺序图与协作图的比较案例:查询学生信息—协作图4.4顺序图与协作图的比较

顺序图和协作图都属于交互图,这两种图之间的区别在于:顺序图基于时间,按时间顺序显示出现的任务;协作图显示任务和信息(对象)的交互方式。在协作图中,时间以编码形式显示,很难选取。虽然存在这些根本区别,但这两类图有相同之处:都用于显示对象和用户如何交互以执行任务。

4.5顺序图与协作图的转换

顺序图与协作图语义等价、可相互转换但不能完全相互代替,利用Rationalrose支持顺序图与协作图之间的转换。

顺序图转换为协作图

1、从sequence框图创建collaboration框图:

2、打开sequence框图;

3、选择Browse>CreatecollaborationDiagram;或者,直接按下F5键;

从协作图转换成顺序图

1、从collaboration框图创建sequence框图:

2、打开collaboration框图;

3、选择Browse>CreateSequenceDiagram;或者,直接按下F5键;1、确定系统中的类课堂练习:建模储户在ATM机上存钱操作的协作图。2、确定类之间关系3、对象实例之间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论