时序图(Sequence Diagram)
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。
与其他图相比,时序图看中的是时间轴上的交互顺序(例如函数的调用)。
它没有严格意义上的坐标系,但是在二维方向上有一定的约定:水平方向表示的是对象(类),垂直方向表示时间。
下面可能会举出一些案例,在现实中其实完全没有必要给自己条条框框,因为都是给人看的,人的理解能力是抽象的,适当的弹性可以给自己减轻压力。
参考时序图
时序图的组成元素——6个
时序图中包括如下元素:
角色(Actor)
系统角色,可以是人或者其他系统,子系统。
对象(Object)
对象一般包含以下三种命名方式:
- 第一种方式包含对象名和类名。
- 第二种方式只显示类名不显示对象名,即为一个匿名对象。
- 第三种方式只显示对象名不显示类名。
实例如下,不同的表示方式只是为了描述不同的内容。注意选择自己适合的方式。
生命线(Lifeline)
生命线代表时序图中的对象在一段时期内的存在。
时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线,对象间的消息存在于两条虚线间。
控制焦点(Activation)
控制焦点代表时序图中在对象时间线上某段时期执行的操作。在时序图中每条生命线上的窄的矩形代表活动期。它可以被理解成C语言语义中一对花括号“{}”中的内容。
其实就是一个行为或函数的执行时间。
在图形上,激活被绘制为对象生命线上的一个瘦高矩形。
消息(Message)
消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于在实体间传递信息。允许实体请求其他的服务,类角色通过发送和接受信息进行通信。
表现代表对象之间发送的信息。消息分为4种类型。
同步消息(Synchronous Message)
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。
异步消息(Asynchronous Message)
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。
返回消息(Return Message)
返回消息表示从过程调用返回。以小于号+虚线表示。
自关联消息(Self Association Message)
表示方法的自身调用
或者一个对象内的一个方法调用另外一个方法
。
组合片段
组合片段: 用来解决交互执行的条件及方式。
它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
组合片段其实就是将程序的逻辑条件部分以组件的形式进行划分,同时会显式的添加一些条件,更加的直观。
这是starUML里面12种片段。通过创建Combined Fragments(组合碎片),然后修改interactionOperator(交互操作器)可以修改类型。同时在外层的seq的属性参数里面可以修改是否显示序号。
interactionOperator | name | description |
---|---|---|
alt | 抉择 | 在一组行为中根据特定的条件选择某个交互; |
opt | 选项 | 表示一个可选的行为; |
par | 并行 | 并行处理 . 片段中的事件可以交错。 |
loop | 循环 | 片段重复一定次数。可以在临界中指示片段重复的条件。Loop 组合片段具有“Min”和“Max”属性,它们指示片段可以重复的最小和最大次数。 默认值是无限制。 |
critical | 关键 | 用在 Par 或 Seq 片段中。 指示此片段中的消息不得与其他消息交错。 |
strict | 强顺序 | 有两个或更多操作数片段。 这些片段必须按给定顺序发生。 |
seq | 弱顺序 | 有两个或更多操作数片段。 涉及同一生命线的消息必须以片段的顺序发生。 如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错。 |
break | 中断 | 如果执行此片段,则放弃序列的其余部分。 可以使用临界来指示发生中断的条件。 |
neg | 否定 | 此片段中显示的序列不得发生。 通常用在 Consider 或 Ignore 片段中。 |
assert | 断言 | 操作数片段指定唯一有效的序列。 通常用在 Consider 或 Ignore 片段中。 |
ignore | 忽略 | 此片段未描述的消息列表。 这些消息可发生在运行的系统中,但对此描述来说意义不大。在“Messages”属性中键入该列表。 |
consider | 考虑 | 指定此片段描述的消息列表。 其他消息可发生在运行的系统中,但对此描述来说意义不大。在“Messages”属性中键入该列表 |
表格来自参考博客,有适当修改
参考例子
自调用、调用、创建、销毁、自销毁、同步、异步消息
循环与条件
参考:
百度百科
UML时序图(Sequence Diagram)学习笔记
UML学习笔记(三)【序列图】(时序图、交互图)