UML快速入门——顺序图和通信图

1,491 阅读4分钟

「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战

交互图

UML中交互图是顺序图和通信图的统称,这两种图都可以表示类似的交互,其中顺序图具有更丰富的符号标记,但是通信图也有其独特的功能,尤其适用于在墙上画草图。

顺序图

顺序图是最常见的交互图。

生命线框

顺序图以生命线框表示参与者,生命线框图包括框图之下的垂直延伸线。

消息

在垂直生命线之间,用带实心箭头(同步消息)的实线并附以消息表达式的方式表示对象间的每个消息,生命线自上而下表示时间顺序。 image.png

消息的返回

可以在活动条末端使用应答(或返回)消息线表示消息的返回。 image.png

发给自己的消息

可以使用嵌套的活动条表示对象发送给自身的消息 image.png

实例的创建和销毁

下图的虚线部分表示实例的创建,消息名称中的create不是必需的 image.png 在某些情况下,需要显式地表示对象的销毁,可以用大X表示。 image.png

循环和条件

UML中可以用图框表示条件和循环。

循环

loop表示条件为真的循环片段,也可以用loop(n)强调循环的次数,表示for循环时,还可以以loop(i,1,10)强调起点和终点。 image.png

迭代集合

loop还可以用来表示迭代集合,比如Set、Map、Array等类型对象。 image.png 上面这种表示还有更简洁的形式: image.png

条件

opt表示条件为真时执行的代码 image.png 在绘制草图时可以用这种方式简写,它是UML 1.x中的表示方法。 image.png

互斥

alt可以用来表示代码中的if else,表示互斥的条件 image.png

嵌套

图框是可以嵌套的: image.png

关联

可以使用两种图框来创建交互图的关联。

在整个顺序图周围放置图框,并加上sd标记和诸如AuthenticateUser这样的名称。

标记为ref的图框称为引用,该引用指另一个已命名顺序图。所指的顺序图是实际的交互具体值。 image.png

发送给类方法(static)的消息

当和类的static方法通信时,可以对class增加metaclass标记: image.png

同步和异步

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

通信图

通信图是另一种交互图,比顺序图更简约,特别适合我们绘制草图。

链和消息

链是连接两个对象的路径,它指明了对象间某种可能的导航和可见性,消息会延此链流转。

所有消息都会沿一条线路传输,就像一条允许双向消息传输的线路一样。 image.png

传给自己的消息

对象可以向自身发送消息。在这种情况下可以使用到自身的链来表示 image.png

消息的顺序

消息的顺序使用顺序编号来表示 image.png

条件和循环

通信图中表示条件和循环的方式和顺序图类似。

可以在顺序编号后使用带有方括号的条件子句来表示有条件消息,下图表示只有在子句为真时才发送该消息。 image.png 下面示例表示了带有互斥条件路径的顺序编号,示例暗示了在msg1之后可能执行1a或1b。 image.png 下面是迭代的例子,如果迭代子句对建模者而言并不重要,则可以使用“*”对其简化。 image.png 对集合的所有成员进行迭代的常见算法是给每个成员发送相同的消息。UML中并没有明确的规定,但是我们可以用下面两个方式来表示: image.png