UML时序图(序列图)

UML时序图(序列图)什么是时序图时序图 SequenceDiag 又名序列图 循序图 是一种 UML 交互图 它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作 让我们来看一看 visio2016 对时序图的的解释 时序图的元素我们在画时序图时会涉及 7 种元素 角色 Actor 对象 Object 生命线 LifeLine 控制焦点 Activation 消息 Message 自关联消息 组合片段 其中前 6 种是比较常用和重要的元素 剩余的一种组合片段元素不是很常用 但是比较复杂 我们先介绍前 6 种

什么是时序图

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

时序图的元素

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

角色(Actor)

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

对象(Object)

生命线(LifeLine)

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

控制焦点(Activation)

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

消息(Message)

认识时序图六种元素

组合片段

常用组合片段举例

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

时序图的绘制工具

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

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

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

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

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

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

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

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

时序图的绘制技巧

时序图的绘制技巧:

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

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

正确示范
在这里插入图片描述
错误示范
在这里插入图片描述
最后的技巧就是多联系绘制时序图,熟能生巧,自然而然就会画了。



练习事例

推荐使用软件

在这里插入图片描述
在这里插入图片描述

参考资料

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

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

本文转载至:https://blog.csdn.net/fly_zxy/article/details/?utm_source=copy

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

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

(0)
上一篇 2026年3月18日 下午6:03
下一篇 2026年3月18日 下午6:03


相关推荐

  • groupby的用法及原理详解

    写在前面的话:用了好久groupby,今天早上一觉醒来,突然感觉groupby好陌生,总有个筋别不过来,为什么不能够select*fromTablegroupbyid,为什么一定不能是*,而是某一个列或者某个列的聚合函数,groupby多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧。=========正文开始===========  …

    2022年4月3日
    145
  • SBC协议_蓝牙耳机sbc怎么改

    SBC协议_蓝牙耳机sbc怎么改sbcenc.c*main(intargc,charargv[])首先设定option的默认值,然后根据用户命令设定option相关参数。对指定文件进行编码(执行encode函数)usage(void)打印相关option:OptionOption打印帮助信息hhelp打印帮助信息vverbose详细模式mmsbcmSBC编解码器ssubbands子带数量(4/8)bbitpoolBitpoolvalue

    2025年10月27日
    4
  • 不止一个背包的背包问题_分组背包问题

    不止一个背包的背包问题_分组背包问题有 N 种物品和一个容量是 V 的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。si=−1 表示第 i 种

    2022年8月9日
    13
  • 深入了解HDMI接口

    深入了解HDMI接口版权声明 本文为芝麻软件工作室原创文章 未经芝麻软件工作室允许不得转载 一 HDMI 接口的工作原理这张图是 HDMI 接口的架构示意图 从左边的信号源中你可以看到 HDMI 接口的信源可以是任何支持 HDMI 输出的设备 而接入端也可以是任何带有 HDMI 输入接口的设备 无论他们是音频设备 视频设备还是控制设备 HDMI 接口都可以应用其中 在 HDMI 接口中的数据信号采用的是 TMDS 最小化

    2026年3月16日
    2
  • Method类的Invoke方法[通俗易懂]

    Method类的Invoke方法[通俗易懂]Dto:dto里面放的都是同一类型的字段/**Creation:2Dec2015*/packagecom.java.invoke;publicclassDto{privateIntegerCol1;privateIntegerCol2;privateIntegerCol3;privateIntegerCo

    2022年6月1日
    40
  • python测试框架unittest如何设置用例优先级_python 的 unittest 测试框架中的测试依赖怎么解决呢…[通俗易懂]

    python测试框架unittest如何设置用例优先级_python 的 unittest 测试框架中的测试依赖怎么解决呢…[通俗易懂]好啦,问题已解决,谢谢各位啦,感谢各位提出的思路,感谢@xiaoj(杰)和@keke在这里做个总结:xiaoj(杰)的方法defskipTest(value):defdeco(function):defwrapper(self,*args,**kwargs):ifnotgetattr(self,value):self.skipTest(‘跳过用例’)else:functio…

    2022年8月31日
    6

发表回复

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

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