移动端UML图应用之UML交互图——顺序图和通信图

  • Post author:
  • Post category:其他




系列文章目录


移动端UML图应用之UML图简述



移动端UML图应用之UML行为图——用例图、活动图和状态机图


移动端UML图应用之UML交互图——顺序图和通信图


移动端UML图应用之UML结构图——包图、部署图和组件图



移动端UML图应用之UML结构图——类图





前言

大部分UML初学者知道类图,并且通常认为类图是面向对象设计中唯一重要的图形。但实际上并非如此!UML使用交互图来描述对象间通过消息的交互,交互图可以用于动态对象建模。当我们要考虑真正的面向对象设计细节时,就必须要“落实”发送哪些消息、发送给谁、以何种顺序发送等具体问题。应该花费时间使用交互图进行动态对象建模,而不仅是使用类图进行静态对象建模。

顺序图和通信图都能够表示类似的交互。交互总览图是在UML2中新出现的表示法,为在逻辑和过程流方面相关的一组交互图提供了全景总览,今天只讨论顺序图跟通信图。




一、顺序图与通信图的优缺点

在这两种类型的交互图中,顺序图具有更丰富的符号标记,更容易查阅,但是通信图也有其独特的功能,尤其适用于在墙上画草图。

在表示法选项方面,UML规范更多是以顺序图为核心,对其表示法和语义投入了更多的精力。因此,顺序图对工具的支持更好,并且有更多有效的表示法选项。

在阅读顺序方面,采用顺序图可以更方便地表示调用流的顺序,仅需要由上至下阅读即可,而对于通信图,我们则必须查阅顺序编号。因此,顺序图在文档化方面更胜一筹。

在空间效用方面,通信图更具有优越性,因为可以在任何位置(水平或垂直)方便地放置或擦除框图。相比之下,在顺序图中添加的新对象时必须总是位于纸(或墙)的右边,因而右边的空间会很快被占用;垂直方向的空余空间不能得到有效利用。因此,用通信图绘制的墙上草图更易于修改,在墙上绘制顺序图时很快会感觉到不如使用通信图方便。

下图是具有相同含义的顺序图和通信图。

顺序图和通信图对比



二、常用的UML交互图表示法


参与者框图

UML中定义了参与者框图的以下几种表达:

参与者框图


消息表达式


交互图展示了对象之间的消息,UML对于这些消息表达式具有标准语法:

return = message(parameter : parametreType) : returnType

没有返回值时,返回值可省略,没有参数时,圆括号可省略,类型信息不重要时也可省略。


异步和同步调用

UML利用刺形箭头消息表示异步调用;常规同步(阻塞)调用用实心箭头表示(如下图所示)这种箭头上的区别是细微的,画UML草图时,通常使用刺形箭头表示同步调用,因为这样对绘制来说更为简便。因此,在阅读UML交互图时,不要假设箭头的形状的正确的!

异步和同步调用


实例的创建

表示创建对象时,UML要求使用虚线,且UML中约定使用名为create的消息来表达(如上图所示),create消息也可包含参数。



三、顺序图的基本表示法


参与者的生命周期

参与者框图之下的垂直延伸线表示生命线,新创建的对象,被置于其创建的“高度”上,若需要显式地表示对象的销毁,用大X和终止于大X的生命线表示。

对象的创建与销毁

位于生命线上的方框称为活动条,用来表示控制期,该活动条是可选的,绘制草图时往往不会绘制活动条。


消息

在垂直生命线之间,用带箭头的线并在线的上方附以消息表达式的方式表示对象间的每个消息,生命线自上而下表示消息调用的时间顺序。嵌套的活动条表示对象发送给自身的消息。

最开始的消息在UML中称为创始消息,创始消息没有特定发送者。带返回值的消息既可以使用消息表达式来表示,也可以通过反方向的虚线箭头表示应答线,应答线上应标记返回值。

顺序图的消息


UML顺序图中的图框表示法

UML使用图框表示特殊含义(循环、有条件消息等)的片段。图框中有操作符,还有条件子句。

下表概括了一些常见的图框操作符:

图框操作符


有条件消息的图框表示法

下图左侧是以图框操作符opt表示的”“有条件消息”,右侧是以图框操作符alt表示的”互斥的有条件消息”。互斥的有条件消息的图框用虚线分为上下两部分,条件子句为真时,走上方的消息路径,否则走下方的路径。

有条件消息


循环消息的图框表示法

下图是循环消息的两种表示法。

循环消息的图框表示法



四、通信图的基本表示法

消息图的核心元素是参与者框图以及连接参与者框图的实线。连接参与者的实线称为链,指明了对象间的关联。消息沿着链流转。所有消息都会沿一条线路传输,就像一条允许双向消息传输的线路一样。

对象间的每个消息都可以使用消息表达式和指明消息方向的小箭头来表示,消息表达式前面增加顺序编号表示当前控制线程中消息的次序。起始消息不要编号。嵌套消息要使用附加数字来编号,譬如1.1、1.2。

可以在顺序编号后使用带有方括号的条件子句来表示有条件消息,只有在子句为真时才发送该消息。而消息编号1a、1b表示了带有互斥条件路径的顺序编号。

通信图的消息编号


参考书籍

[1] UML和模式应用(原书第3版)作者:拉曼



版权声明:本文为u011303816原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。