设计模式——UML建模之精选核心知识直观描述对象交互现场利器时序图小结(三)

引言

前面的两篇文章总结了UML核心视图中的静态视图的相关知识,这篇就好好总结下动态视图,所谓动态表示的是事物的动态行为,首先总结下时序图,系列文章链接:

一、时序图概述

时序图(又被称为序列图、循序图、顺序图)描述按时间顺序(从左到右)排列的对象之间的交互模式,按照参与交互的对象所有具有的生命周期线和它们互相发送的消息来展示这些对象的交互,简而言之,时序图用于描述对象之间的传递消息的时间顺序,(即用例中的行为顺序)主要用来更直观的表现各个对象交互的时间顺序,将体现的重点放在以时间为参照,各个对象发送、接收消息,处理消息,返回消息的时间流程顺序,阐明对象之间的交互过程以及在系统执行过程中的某一具体时刻将会发生什么事件。序列图是一种强调时间顺序的交互图,其中对象沿横轴方向排列,消息沿纵轴方向排列。

在这里插入图片描述
另外时序图对于阅读开源框架理清核心流程逻辑有重要的意义。

二、时序图(序列图)的核心元素

时序图的核心元素主要有:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片,其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。

1、角色(Actor)

系统角色,可以是人或者其他系统,子系统,可以一个小人图标表示,当然也可以用一个矩形表示

2、对象(Object)

时序图中对象使用矩形表示,当对象置于时序图的顶部说明在交互开始时对象就已经存在了。而如果对象的位置不在顶部,,则表示对象是在交互的过程中被创建的,对象可以是系统角色,其他系统/子系统)抑或人,通常对象的命名方式一般有三种:

  • 对象名:类名,如client:OKHttpClient。
  • 只显示:类名,不显示对象,即一个匿名类,如:OKHttpClient。
  • 只显示对象名,不显示类名,如client:。
    在这里插入图片描述

3、生命线(LifeLine)

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

4、激活焦点(Activation)

激活焦点代表时序图中在对象时间线上某段时期执行的操作,以一个很窄的矩形表示。

5、消息(Message)

体现对象之间交互内容,称之为消息,标准作图时生命线、激活焦点对齐、消息三者互相关联,若消息的通信发生在控制焦点的起点(终点),则箭头应该指向控制焦点的顶部(底部),主要分为三种类型:

5.1、 同步消息(Synchronous Message)

消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制,用来表示同步的意义。以实线+实心三角形表示,箭头指向接收者。

在这里插入图片描述

5.2 、异步消息(Asynchronous Message)

消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以实线+实心三角形表示,箭头指向接收者。
在这里插入图片描述

5.3、返回消息(Return Message)

返回消息表示从过程调用返回。以虚线+箭头表示,箭头指向消息发起者。

6、自关联消息

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

在这里插入图片描述

7、组合片段

组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进。

  • 抉择(Alt)——用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if…else…。抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。
    在这里插入图片描述
  • 选项(Opt)——包含一个可能发生或不发生的序列,Opt相当于if条件语句。
    在这里插入图片描述
  • 循环(Loop)——片段重复一定次数, 可以在临界中指示片段重复的条件,相当于语法中的循环条件。
    在这里插入图片描述
  • 并行(Par)
    在这里插入图片描述
组合片段类型说明
Opt选项包含一个可能发生或可能不发生的序列。 可以在临界中指定序列发生的条件。
Alt抉择包含一个片段列表,这些片段包含备选消息序列。 在任何场合下只发生一个序列。可以在每个片段中设置一个临界来指示该片段可以运行的条件。 else 的临界指示其他任何临界都不为 True 时应运行的片段。 如果所有临界都为 False 并且没有 else,则不执行任何片段。
Loop循环片段重复一定次数, 可以在临界中指示片段重复的条件。Loop组合片段具有“Min”和“Max”属性,它们指示片段可以重复的最小和最大次数。 默认值是无限制。
Break中断如果执行此片段,则放弃序列的其余部分。 可以使用临界来指示发生中断的条件。
Par并行并行处理。 片段中的事件可以交错。
Critical关键用在 Par 或 Seq 片段中。 指示此片段中的消息不得与其他消息交错。
Seq弱顺序有两个或更多操作数片段。 涉及同一生命线的消息必须以片段的顺序发生。 如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错。
Strict强顺序有两个或更多操作数片段。 这些片段必须按给定顺序发生。
Consider考虑指定此片段描述的消息列表。 其他消息可发生在运行的系统中,但对此描述来说意义不大。在“Messages”属性中键入该列表。
Ignore忽略此片段未描述的消息列表。 这些消息可发生在运行的系统中,但对此描述来说意义不大。在“Messages”属性中键入该列表。
Assert断言操作数片段指定唯一有效的序列。 通常用在 Consider 或 Ignore 片段中。
Neg否定此片段中显示的序列不得发生。 通常用在 Consider 或 Ignore 片段中。

组合片段部分摘自https://kb.cnblogs.com/page/129493/UML序列图总结

8、约束和注释

约束的语法很简单,在消息发送的上方编写类似格式: [Boolean] Description Text 来表示约束条件。
在这里插入图片描述

严格地来说约束和注释并不是标准UML 序列图的基本元素,VISIO 上也没有。

未完待续,协作图、状态图、活动见下篇。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrazyMo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值