Java工程师必备绘图技能之二 UML时序图

白菜Java自习室 涵盖核心知识微信

Java工程师必备绘图技能之一 UML类图
Java工程师必备绘图技能之二 UML时序图markdown

1. UML 时序图概述

时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它经过描述对象之间发送消息的时间顺序显示多个对象之间的动态协做。多线程

序列图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴表明了在协做中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另外一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。并发

2. UML 时序图做用

  1. 展现对象之间交互的顺序;
  2. 将交互行为建模为消息传递,经过描述消息是如何在对象间发送和接收的来动态展现对象之间的交互;
  3. 相对于其余UML图,时序图更强调交互的时间顺序;
  4. 能够直观的描述并发进程。

3. UML 时序图元素

咱们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片断异步

其中前6种是比较经常使用和重要的元素,剩余的一种组合片断元素不是很经常使用,可是比较复杂。咱们先介绍前6种元素,在单独介绍组合片断元素。oop

UML 时序图角色.jpg

角色(Actor)

系统角色,能够是人或者其余系统,子系统。以一个小人图标表示。post

对象(Object)

对象位于时序图的顶部,以一个矩形表示。对象的命名方式通常有三种:微信支付

  1. 对象名和类名。例如:(华为手机:手机)或(loginServiceObject:LoginService);
  2. 只显示类名,不显示对象,即为一个匿名类。例如:(:手机)或(:LoginSservice);
  3. 只显示对象名,不显示类名。例如:(华为手机:)或(loginServiceObject:);

生命线(LifeLine)

时序图中每一个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。spa

控制焦点(Activation)

控制焦点表明时序图中在对象时间线上某段时期执行的操做。以一个很窄的矩形表示。线程

消息(Message)

表现表明对象之间发送的信息。消息分为三种类型。

  • 同步消息(Synchronous Message):消息的发送者把控制传递给消息的接收者,而后中止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。
  • 异步消息(Asynchronous Message):消息发送者经过消息把信号传递给消息的接收者,而后继续本身的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工做的。以一条实线+大于号表示。
  • 返回消息(Return Message):返回消息表示从过程调用返回。以小于号+虚线表示。

自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另一个方法。以一个半闭合的长方形+下方实心剪头表示。

组合片断

组合片断用来解决交互执行的条件和方式,它容许在序列图中直接表示逻辑组件,用于经过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片断共有13种,名称及含义以下:

组合片断1.png

组合片断2.png

4. 经常使用组合片断举例

抉择(Alt)

抉择在任何场合下只发生一个序列。 能够在每一个片断中设置一个临界来指示该片断能够运行的条件。else 的临界指示其余任何临界都不为 True 时应运行的片断。若是全部临界都为 False 而且没有 else,则不执行任何片断。Alt 片断组合能够理解为 if...else... 条件语句。

抉择(Alt).png

选项(Opt)

包含一个可能发生或不发生的序列。Opt 至关于 if... 语句。

选项(Opt).png

循环(Loop)

片断重复必定次数,能够在临界中指示片断重复的条件。Loop 至关于 for 语句。

循环(Loop).png

并行(Par)

并行处理,片断中的事件能够并行交错。Par 至关于多线程。

并行(Par).png

5. UML 时序图绘制

  1. 划清边界,识别交互语境

所谓划清边界是是指要肯定好绘制时序图的范围。在微信支付例子中省略列商家打开微信、输入收款金额等交互消息,这些不是咱们须要体现的,咱们主要体现的是用户的扫码支付流程。

所谓识别交互语境就是要知道本身绘制时序图的前提和背景。在微信支付的例子中用户登陆了微信、开通了支付功能是前提,背景是用户须要扫描付款买东西。

  1. 梳理时序图中的角色和对象都有哪些?

微信支付的例子中角色只有一个,即用户。对象有华为手机:手机、安卓版微信:微信、:商家。

  1. 对象之间有哪些交互消息?

对象之间交互的消息详见以上时序图。

时序图的绘制技巧

  1. 从初始消息开始画,依次画出随后消息,并给每一个消息分配序号,方便理解。
  2. 角色和对象用名词,消息用动词。
  3. 角色放在时序图的开始位置,对象重要程度或使用频率从左到右排列。这就要根据时间的流程考虑了,是一个比较主观的事情。
  4. 控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。

Java工程师必备绘图技能之一 UML类图
Java工程师必备绘图技能之二 UML时序图

相关文章
相关标签/搜索