§5 顺序图和协作图

上传人:第*** 文档编号:54463710 上传时间:2018-09-13 格式:PPT 页数:30 大小:194KB
返回 下载 相关 举报
§5 顺序图和协作图_第1页
第1页 / 共30页
§5 顺序图和协作图_第2页
第2页 / 共30页
§5 顺序图和协作图_第3页
第3页 / 共30页
§5 顺序图和协作图_第4页
第4页 / 共30页
§5 顺序图和协作图_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《§5 顺序图和协作图》由会员分享,可在线阅读,更多相关《§5 顺序图和协作图(30页珍藏版)》请在金锄头文库上搜索。

1、第4章 顺序图和协作图,本章重点: 1.顺序图和协作图的定义 2.顺序图和协作图的区别 3.顺序图和协作图的建模步骤 4.几种消息的定义及区别,本章难点: 1.在实际的建模中哪里该使用顺序图,哪里该使用协作图? 2.消息的识别,4.1 交互图概述,它通常用来描述一个用例的行为,显示该用例中所涉及的对象和这些对象之间消息传递情况。,交互图包括顺序图(Sequence diagram)和协作图(Collaboration diagram)两种形式。,定义:交互图(interaction diagram)是用来描述对象之间以及对象与参与者之间的动态协作关系和协作过程中行为次序的图形文档。,顺序图着重

2、描述对象按照时间顺序的消息交换,并且把用例行为分配给类。协作图着重描述系统成分如何协同工作,强调对象间的结构关系。,交互图可以帮助分析人员对照检查每个用例中所描述的用户需求,如这些需求是否已经落实到能够完成这些功能的类中去实现,提醒分析人员去补充遗漏的类和方法。,交互图和类图可以相互补充。类图对类的描述比较充分,但对对象之间的消息交互情况的表达不够详细,而交互图不考虑系统中的所有类和对象,但可以表示系统中某几个对象之间的交互。,需要说明的是,交互图描述对象之间的消息发送关系,而不是类之间的关系。在交互图中一般不会包括系统中的所有类的对象,但同一个类可以有多个对象出现在交互图中。,顺序图和协作图

3、从不同的角度表达了系统中的交互和系统的行为,它们之间可以互相转化。,4.2 顺序图(Sequence diagram),1定义:Rumbaugh对顺序图的定义是,顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。,特别地,顺序图中显示的是参与交互的对象及对象之间消息交互的顺序。,顺序图中包括的建模元素有:对象(参与者实例也是对象)、生命线(lifeline)、激活(Activation)、消息(Message)等。,2、对象,顺序图中对象的符号和对象图中对象所用的符号一样。 将对象置于顺序的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中

4、被创建的。,对象的命名方式:顺序图中对象的命名方式有3种(协作图中也一样。,第一种命名方式包括对象名和类名; 第二种只显示类名,即表示这是一个匿名对象; 第三种只显示对象名而不显示类名,即不关心这个对象属于哪个类。,图4.1 顺序图中对象的命名方式,3、 生命线,生命线是一条垂直的虚线,表示顺序图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线。 生命线是一个时间线,从顺序图的顶部一直延伸到底部,所用的时间取决于交互持续的时间。 对象与生命线结合在一起称为对象的生命线,对象的生命线包含矩形的对象图标以及图标下面的生命线。,对象的生命线:,4、激活,激活表示该对象被占用以完成某个

5、任务,去激活指的则是对象处于空闲状态、在等待消息。 激活是顺序图中表示时间段的符号,在这个时间段内,对象将执行相应的操作。 在UML中,为了表示对象是激活的,可以将该对象的生命线拓宽成为矩形。其中的矩形称为激活条或控制期,对象就是在激活条的顶部被激活的,对象在完成自己的工作后被去激活。,激活条,5、消息,消息定义的是对象之间某种形式的通信,它可以激发某个操作、唤起信号或导致目标对象的创建或撤销。 消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。 消息可以用于在对象间传递参数。 消息可以是信号,也可以是调用。 在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型。,4.3 顺序

6、图中的消息,4.3.1 调用消息(procedure call)/同步消息(synchronous),消息是顺序图中的一个重要概念。,调用消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接收者放弃或返回控制。即指示在消息完成之前,以及该消息发送的任何消息完成之前,工作流被中断。,调用消息用实线和实心箭头表示。,图4.3 调用消息,另外调用消息必有一个配对的返回消息,为了图的简洁和清晰,与调用消息配对的返回消息可以不用画出。,一般地,调用消息的接收者必须是一个被动对象,即它是一个需要通过消息驱动才能执行其动作的对象。,4.3.2 异步消息(asynchronous),异步消息的发送者

7、通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接收者返回消息和控制。,异步消息的发送者和消息的接收者并发工作。 异步消息使用实线和开口箭头表示。 异步消息的接收者必须是一个主动对象,即它是一个不需要通过消息驱动就能执行其动作的对象。,图4.4 异步消息,4.3.3 返回消息(return),如果是从过程调用返回,则返回消息是隐含的,所以返回消息可以不用画出来。对于非过程调用,如果有返回消息,则必须明确表示出来。返回消息在UML中用虚线和开口箭头表示。,返回消息表示控制流返回到调用对象。,4.3.4 阻止消息(balking message)和超时消息(time-out messa

8、ge),阻止消息是指消息的发送者发送消息给消息的接收者,如果接收者无法立即接收消息,则发送者放弃这个消息。阻止消息时ROSE扩充的消息类型。ROSE中用折回箭头表示。,4.3.5超时消息是指消息的发送者发送消息给消息的接收者并按指定的时间等待,如果接收者无法在指定的时间内接收消息,则发送者放弃这个消息。,另外还有两种消息:返身消息(自返消息)和简单消息。 返身消息(Reflexive Message)指消息的发送者发送消息给自身。 简单消息(Flat/Simple Message)指不考虑同步或异步的问题的一种消息。因为有时我们不需要关心是同步还是异步的,有时候甚至不知道。尤其在高层分析时,有

9、时没有必要指定一个消息是同步还是异步的。,4.4 建立顺序图的步骤,在分析和设计过程中,建立顺序图并没有一个标准的步骤,下面给出的步骤只是指导性的原则:,确定交互过程的上下文(context),即工作流。 识别参与交互过程的对象,即从左到右布置对象。 为每个对象设置生命线,即确定哪些对象存在于整个交互过程中,哪些对象在交互过程中被创建和撤消。 从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息,即添加消息和条件以便创造每一个工作流。 如果需要表示消息的嵌套,和/或表示消息发生时时间点,则采用控制焦点。 如果需要说明时间约束,则在消息旁边加上约束说明。 如果需要,可以为

10、每个消息附上前置条件和后置条件。,4.5 协作图,1定义:协作图用来建模对象或者参与者之间的交互,用来描述这些对象或者参与者之间是如何进行通信的。即协作图用于描述系统行为是如何由系统的成分协作实现的图,协作图中包括的建模元素有对象(包括参与者实例、多对象)、消息、链等。,协作图可以看作是类图和顺序图的交集。要想创建一个系统,这些类的实例(对象)需要彼此通信和交互。换句话说,它们需要协作。,2多对象:在协作图中,多对象指的是由多个对象组成的对象集合,一般这些对象是属于同一个类的。当需要把消息同时发送给多个对象而不是单个对象的时候,就要使用多对象这个概念,在协作图中,多对象用多个方框的重叠表示,如

11、图4.8所示。,3 、 消息,协作图中的消息类型与顺序图中的相同,只不过为了说明交互过程中消息的时间顺序,需要给消息添加顺序号。 顺序号是消息的一个数字前缀,是一个整数,由1开始递增,每个消息都必须由唯一的顺序号。,4、链,协作图中链的符号和对象图中链所用的符号是一样的,即一条连接两个类角色的实线。 为了说明一个对象如何与另一个对象连接,可以在链的末路上附上一个路径构造型。,4.6 建立协作图的步骤,在分析和设计过程中,建立协作图并没有一个标准的步骤,下面给出的步骤只是指导性的原则:,确定交互过程的上下文(context),即工作流。 识别参与交互过程的对象。 如果需要,为每个对象设置初始特性

12、。 确定对象之间的链(Link),以及沿着链的消息。 从引发这个交互过程的初始消息开始,将随后的每个消息附到相应的链上。 如果需要说明时间约束,则在消息旁边加上约束说明。 如果需要,可以为每个消息附上前置条件和后置条件。,4.7 顺序图和协作图的比较,顺序图和协作图都属于交互图,都用于描述系统中对象之间的动态关系。两者可以相互转换,但两者强调的重点不同。顺序图强调的是消息的时间顺序,而协作图强调的是参与交互的对象的组织。,两个图中所使用的建模元素,两者也各有特点。顺序图中有对象生命线和控制焦点,协作图中没有;协作图中有路径,并且协作图中的消息必须要有消息顺序号,但顺序图中没有路径,也可以没有消

13、息顺序号。,和协作图相比,顺序图在表示算法、对象的生命期、具有多线程特征的对象等方面相对来说更容易一些,但在表示并发控制流方面会困难一些。,顺序图和协作图在语义上是等价的,两者之间可以相互转换,但两者并不能完全相互代替。顺序图可以表示某些协作图无法表示的信息,同样,协作图也可以表示某些顺序图无法表示的信息。,例如,在顺序图中不能表示对象与对象之间的链,对于多对象和主动对象也不能直接显示出来,在协作图中则可以表示;协作图不能表示生命线的分叉,在顺序图中则可以表示。,4.8 工具支持 4.9 常见问题分析,如何在顺序图中表示消息的循环发送? 如何在顺序图中表示消息的条件发送? 如何在顺序图中表示时

14、间约束? 如何在顺序图中表示方法的递归? 顺序图中的对象如何确定?顺序图和类图是否同时生成并交互修改? 如果对象具有多态性,发送对象不可能事先知道目标对象属于哪个类,因此在交互图中如何确定目标对象所属的类? 如何在交互图中表示广播消息? 如何在协作图中表示创建一个对象?,4.10 小结,顺序图和协作图都属于交互图,是UML中的动态建模机制。 顺序图强调的是消息的时间顺序,而协作图强调的是参加交互的对象的组织。 顺序图中包括的建模元素有对象、生命线、控制焦点、消息等;协作图中包括的建模元素有对象、消息链等。 交互图中的消息分为调用消息、异步消息、返回消息和阻止消息和超时消息等,另外还有返身消息(自返消息)和简单消息。 建立顺序图和协作图没有标准的步骤,只有一些指导性原则。,习题:,交互图有哪两种类型? 顺序图的两个组件是什么? 顺序图建模什么内容? 给出同步消息和异步消息的定义。 什么是生命线? 创建的新对象在顺序图中如何表示? 在协作图中如何表示一个消息? 在协作图中如何表示出消息的时间顺序? 协作图中如何表示一状态变化? 两种图“语义等价”是什么含义? 同步和异步分别意味着什么? 消息条件的作用是什么? 几种类型的消息分别是什么,它们之间的区别是什么? 用例图与顺序图之间的区别是什么? 同步消息和异步消息之间的区别是什么?,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号