当前位置:文档之家› UML课件(顺序图和协作图)

UML课件(顺序图和协作图)



顺序图
面向时间描述对象交互的图

协作图
对象间消息的结构化视图
2 顺序图

按照时间顺序显式对象之间交互的图
2.1 顺序图的组成

活动者(actor)或者 对象(object) 生命线(lifeline) 激活(activation)/ 控制焦点(focus of control) 消息(message)

2.5 消息

格式

[前缀][守卫条件][顺序表达式][返回值:=]消息名([参数列表])
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
recurrence表示一个条件或迭代的执行有两种选择
* [ 循环子句 ] 循环子句(iteration-clause)用来指定一个循环(重复执行) 例如:一个包括循环的消息 1.1 *[x = 1..10] : doSomething()

[ 条件子句 ] 条件子句一般用来表示分支而不是用作守卫条件[x<0],是 两个可以用来分枝的条件子句,这两个条件只能有一个为 真因而只有一个分枝被执行(即发送与分枝有关的消息) 条件子句和循环子句都可以用伪代码或真正的编程语言表示 序列表达式用冒号结束

2.5 消息

UML三种消息:
调用(Procedure
Call) 异步(Asynchronous) 返回(Return)
Rose扩充:
阻止(Balking)
超时(Time-out)
2.5 消息

UML三种消息:
调用(Procedure
Call) 发送者把消息发送后,等待直到接收者返回控制, 可以表示同步; 实心箭头符号
面向对象方法中,消息是对象间交互信息的主要方 式。 结构化程序设计中,模块间传递信息的方式主要是 过程(或函数)调用。 对象A向对象B发送消息,可以简单地理解为对象A 调用对象B的一个操作(operation)。
2.5 消息

顺序图中,尽力保持消息的顺序是从左到右排列的。 一个顺序图的消息流开始于左上方,消息2的位置 比消息1低,这意味着消息2的顺序比消息1要迟。 因为西方的阅读习惯是从左到右。 顺序图中消息编号可显示,也可不显示。协作图中 必须显示。
2.2 活动者或对象


活动者和对象按照从左到右的顺序排列 一般最多两个活动者,他们分列两端。启动这个 用例的活动者往往排在最左边;接收消息的活动 者则排在最右端; 对象从左到右按照重要性排列或按照消息先后顺 序排列。
2.2 活动者或对象

对象的命名方式有三种:
包括对象名和类名 类名(匿名对象) 对象名(不关心类)

2.5 消息

自调用(回授)(Self Call)
某对象自己调用自己的操作 UML标记
(嵌套的矩形条)
Rose标记
2.5 消息

Rose新增消息
阻止(Balking)
接收者如果无法立即接收消息,则发送者放弃该消息 超时(Time-out) 如果接收者无法在指定的时间内接收消息,则发送者放 弃该消息

守卫条件(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为同时发送 的并发消息
2.3 生命线

生命线(Lifeline):
每个对象都有自己的生命线,用来表示在该用例中一个对
象在一段时间内的存在 垂直的虚线 如果对象生命期结束,则用注销符号表示 对象默认的位置在图顶部,表示对象在交互之前已经存在 如果是在交互过程中由另外的对象所创建,则位于图的中 间某处。
例:


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

激活期(activation)/控制焦点(focus of control)
对象在一段时间内获得了焦点,也称激活期
对象执行某个动作的时期 空心矩形条
激活期的长短意味着对象执行某个动作的时间有多长,
可以通过约束{10ms}来限制执行时间的长短。
2.5 消息



返回值、消息名和参数表 返回值表示一个操作调用(即一个消息)的结果
2.7 建立顺序图的步骤

确定交互的范围; 识别参与交互的对象和活动者; 设置对象生命线开始和结束; 设置消息; 细化消息;
3 协作图
描述系统对象(或活动者)如何共同协作 实现用例; 强调的是参与交互的对象的组织; 一般,顺序图和交互图可以相互转换, Rose提供了转换工具。 先画顺序图,再转成协作图更容易
顺序图与协作图
1 交互图概述

Interaction diagram,是描述对象之间的关系和 对象之间的信息传递的图; 通常用来描述一个用例的行为,实现一个用例, 完成对系统的动态行为建模; 包含两种:
顺序图(或时序图,sequence
diagram) 协作图(collaboration diagram)

UML标记
Rose标记
4.3.3 案例:存款
2.5 消息

UML三种消息:
异步(Asynchronous)

消息发送后,发送者继续操作,不等待,常用于并 发;
2.5 消息

UML三种消息:
返回(Return)
表示消息的返回。消息上方放置返回值 同步消息的返回可以画出(如果想明确表达返回值), 也可以不画出,直接隐含。 异步消息可以有返回,也可以没有。(可以响应异步 消息,也可以不响应该异步消息。) 如果顺序图上显示有编号,则返回消息的编号和当初 发送消息的编号完全一样。 虚线箭头表示,和依赖关系不要混淆

4.3.1 多对象
多对象是多个对象组成的集合,往往是同 一个类的对象; 如果消息同时发给多个对象,则用多对象 表示; 在顺序图中仍然显示为单对象一样的图标, rose中multiple instance 协作图中重叠的方框。4Biblioteka 3.2 活动对象/主动对象


主动对象是一组属性和一组方法的封装体,其中至 少有一个方法不需要接收消息就能主动执行(称为 主动方法) 主动对象是不需接收消息就可自动启动交互的对象 除了含有主动方法外,主动对象和被动对象无区别
相关主题