UML图 – 时序图

时序图(序列图,顺序图)(Sequence Diagram)显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互. 时序图中包括的建模元素主要有:对象(Actor)、生命线(Lifeline)、执行发生(Execution Occurrence)、消息(Message)….

顺序图(Sequence Diagram) = 生命线(Lifeline) + 消息(Message)

时序图将交互关系表示为一个二维图. 其中,纵轴是时间轴,时间沿竖线向下延伸. 横轴代表了在协作中各独立的对象

 

时序图元素

对象 (Object)

对象包括三种命名方式:

第一种方式包括对象名和类名;

第二中方式只显示类名不显示对象名,即表示他是一个匿名对象;

第三种方式只显示对象名不显示类明.

生命线 (Lifeline)

生命线在顺序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间.

互动条 (Activation Bar)/控制焦点 (Focus of Control)/激活(Activation)

也称为执行发生(Execution Occurrence), 用来表示对象的某个行为的执行状态, 它表示时间段的符号, 在这个时间段内对象将执行相应的操作, 用虚线上的小矩形条来表示

消息 (Message)

对象的行为也称为消息(Message),通常当一个对象调用另一个对象中的行为时,即完成了一次消息传递.

消息一般分为同步消息(Synchronous Message), 异步消息(Asynchronous Message), 返回消息(Return Message).

同步消息=调用消息(Synchronous Message): 消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。

异步消息(Asynchronous Message): 消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。

返回消息(Return Message): 返回消息表示从过程调用返回

自关联消息(Self-Message): 表示方法的自身调用以及一个对象内的一个方法调用另外一个方法。

交互框(Interaction Frame): 

指途中的一块区域(Region)或片段(Fragment),包含一个操作符(或称为标签),并包含一个警戒

  • Alternative fragment(denoted “alt”)与 if…then…else对应
  • Option fragment (denoted “opt”) 与 Switch对应
  • Parallel fragment (denoted “par”) 表示同时发生
  • Loop fragment(denoted “loop”) 与 for 或者 Foreach对应

 

例子:

— 使用场景 : 汽车租赁公司;

— 使用的对象 : Customer (客户), Worker (工作人员), Order (请求), Record (记录), Car (汽车);

— 工作流程 : ① 客户 向 工人 提出租车要求, ② 工人 检查 请求, ③ 客户 付款, ④ 工人 填写 记录, ⑤ 工人 取车;

时序图 : 

 

对象的创建和撤销

对象位置 : 

— 顶部 : 时序图中对象的默认位置是在时序图顶部, 这表明对象在交互开始之间就已经存在;

— 中间 : 如果对象在时序图中间部分, 说明对象时在交互过程中创建的;

 

交互过程中创建对象的方法 : 

— 消息指向对象 : 消息是构造方法, 箭头指向对象所代表的的矩形;

— 消息指向激活条 : 消息是构造方法, 箭头指向对象下面的激活条;

 

撤销对象 : 如果想要在时序图中撤销一个对象, 因为如果同时有几个对象, 如果不进行特殊操作其生命周期将会一样长;

— 效果图 : 下图中将 Customer 和 Order 对象撤消了, 因为它们基本没有参与后期的交互;

 

 

时序图建模技术

时序图使用时机 : 对动态行为建模, 强调时间展开信息的次序的时候, 使用时序图;

时序图管理策略 : 

— 单一控制流 : 一个单独的时序图只能显示一个控制流;

— 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, 一个主干时序图, 多个分支时序图, 使用包对这些时序图进行管理;

 

时序图建模策略 : 

— 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, 子系统, 相关的操作 类 用例等;

— 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;

— 对象生命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;

— 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息 在 后发出的消息上面;

— 激活期设置 : 可以将实际操作发生的 时间点 消息 明确的显示出来;

— 时间空间约束 : 每个消息都可以附加合适的时间 和 空间约束;

— 前置后置条件 : 每条消息可以附加 前置 或 后置 条件;

 

版权声明:本文为charon922原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/charon922/articles/8630219.html