UML时序图(Sequence Diagram)学习笔记[通俗易懂]

UML时序图(Sequence Diagram)学习笔记[通俗易懂]什么是时序图时序图(SequenceDiagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。时序图的元素我们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

什么是时序图

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

让我们来看一看visio2016对时序图的的解释。

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

时序图的元素

我们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,在单独介绍组合片段元素。

角色(Actor)

系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。

对象(Object)

对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:

    1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。

    2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。

    3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。

生命线(LifeLine)

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

控制焦点(Activation)

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

消息(Message)

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

    同步消息(Synchronous Message)

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

    异步消息(Asynchronous Message)

消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。

    返回消息(Return Message)

返回消息表示从过程调用返回。以小于号+虚线表示。

自关联消息

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

认识时序图六种元素

我们来使用Visio2016来画一个用户打开微信扫描二维码支付流程时序图,通过这个时序图来认识刚刚介绍的6种时序图元素。

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

时序图解释
1,用户输入手机密码
2,打开手机
3,打开微信扫一扫
4,返回微信扫一扫界面
5.1 扫描商家收款码
5.2 商家生成收款二维码
5.3 返回收款二维码
5.4 识别商家收款码
6,提示用户输入微信支付密码
7.1 输入微信支付密码
7.2 微信验证用户输入密码正确
7.3 向商家汇款

7.4 汇款成功
8,提示用户支付成功

组合片段

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

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

常用组合片段举例

    抉择(Alt)

抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。Alt片段组合可以理解为if..else if…else条件语句。

我们还拿微信支付的时序图举例,如果7.3向商家汇款的成功或失败流程需要在时序图中体现出来,可以这么使用Alt片段组合。

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

选项(Opt)

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

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

循环(Loop)

片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

并行(Par)

并行处理,片段中的事件可以并行交错。Par相当于多线程。

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

时序图的绘制工具

画时序图的工具有很多,但是个人只用过微软visio工具,感觉很好用,可以满足需要。

时序图的绘制步骤

时序图的绘制步骤可以总结为:

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

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

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

2,梳理时序图中的角色和对象都有哪些

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

3,对象之间有哪些交互消息 

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

时序图的绘制技巧

时序图的绘制技巧:

1,从初始消息开始画,依次画出随后消息,并给每个消息分配序号,方便理解。

2,角色和对象用名词,消息用动词。

3,角色放在时序图的开始位置,对象重要程度或使用频率从左到右排列。这就要根据时间的流程考虑了,是一个比较主观的事情。

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

4,控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。

正确示范

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

错误示范

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

最后的技巧就是多联系绘制时序图,熟能生巧,自然而然就会画了。

练习事例

用户登录系统时序图

UML时序图(Sequence Diagram)学习笔记[通俗易懂]

参考资料

https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E5%9B%BE/3659178?fr=aladdin

http://baijiahao.baidu.com/s?id=1561926824533534&wfr=spider&for=pc


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198338.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm学生版更新license「建议收藏」

    pycharm学生版更新license「建议收藏」pycharm的学生license一年过期,需要更新license.看网上的po出的经验较少,即使有也有错误,前几天成功更新了,分享一下经验。1.首先登陆jetbrainshttps://www.jetbrains.com/zh-cn/2.使用学校邮箱登陆后查看license因为是前几天更新的所以这个截图是已经更新过的,如果是一年期license过期的话(就是validthrough日期已过),大概是红圈这个位置有一个绿色的“renew…”(具体内容不记得了)。3.点开后输入学校邮箱这时候

    2022年8月28日
    5
  • 配置windows怎么关闭计算机,准备配置WINDOWS,请勿关闭计算机。

    配置windows怎么关闭计算机,准备配置WINDOWS,请勿关闭计算机。图片发自简书App早上,想着在台式计算机机上面进行修改些文字,但是,开机后屏幕上一直就是打开电脑后的那一行字:准备配置WINDOWS,请勿关闭计算机。一直那样子。弄得,弄得我没有办法进入机内去修改了。这样,过于依赖的机器之后,有的时候也是一种很不好的事情。回想原来,笔墨时代,就会简单。过去时代,人们生活中依赖机器的事情,并不多,虽说“工欲善其事,必先利其器”,但是所谓的“器”,那时候,不外乎也是些…

    2022年6月26日
    34
  • ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    2021年10月24日
    43
  • Java设计模式之行为型:模板方法模式

    Java设计模式之行为型:模板方法模式

    2021年10月4日
    49
  • RRC信令过程概述

    RRC信令过程概述1RRC 协议功能为 NAS 层提供连接管理 消息传递等服务 对接入网的底层协议实体提供参数配置的功能 负责 UE 移动性管理相关的测量 控制等功能 2 nbsp RRC 状态 RRC IDLE nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp PLMN 选择 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp NAS 配置的 DRX 过程 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 系统信息广播和寻呼 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 邻小区测量 nbsp nbsp nbsp nbsp

    2025年9月18日
    4
  • 免费申请国外免费域名超详细教程「建议收藏」

    免费申请国外免费域名超详细教程「建议收藏」1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    131

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号