当前位置:网站首页>UML 时序图[通俗易懂]
UML 时序图[通俗易懂]
2022-07-04 08:56:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
概念
时序图(Sequence Diagram)描述了对象之间传递消息的时间顺序,用来表达用例中的行为顺序,是强调消息时间顺序的交互图。也就是说,时序图描述了类以及类间相互交换以完成期望行为的消息。
内容
时序图包括了 4 个元素,分别是对象(Object)、生命线(Lifeline)、激活(Activation)和消息(Message)。
- 对象(Object) 对象代表时序图中的对象在交互中所扮演的角色。时序图中对象的符号和对象图中对象所用的符号一样,都是使用矩形将对象名称包含起来,并且对象名称下有下划线,如下图所示:
将对象置于时序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的(对象可以在交互开始的时候创建, 也可以在交互过程中进行创建)。
- 生命线(Lifeline) 生命线是一条垂直的虚线,表示时序图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线。生命线是一个时间线,从时序图的顶部一直延伸到底部,所用的时间取决于交互持续的时间。对象与生命线结合在一起称为对象的生命线;对象的生命线包含矩形的对象图标以及图标下面的生命线,如下图所示:
- 激活(Activation) 时序图可以描述对象的激活(Activation)和去激活(Deactivation)。激活代表时序图中的对象执行一项操作的时期。 激活表示该对象被占用以完成某个任务,去激活指的是对象处于空闲状态,在等待消息。在UML中,为了表示对象是激活的,可以将对象的生命线拓宽成为矩形,如下图所示:
- 消息(Message) 消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模。消息用于在实体间传递信息,允许实体请求其他的服务,类角色通过发送和接收消息进行通信。它可以激发某个操作、唤起信号或导致目标对象的创建或撤销。消息序列可以用两种图来表示:时序图和协作图(时序图强调消息的时间顺序,而协作图强调交换消息的对象间的关系)。 在 UML 中,消息使用箭头来表示,箭头的类型表示了消息的类型,消息箭头指的一方是接收方,如下图所示:
时序图建模策略
(1)设置交互的语境,这些语境可以是系统、子系统、操作、类、用例和协作的一个脚本; (2)通过识别对象在交互中扮演的角色,根据对象的重要性,将其按从左向右的方向放在时序图中; (3)设置每个对象的生命线。一般情况下,对象存在于交互的整个过程,但它也可以在交互过程中被创建和撤销; (4)从引发某个交互的信息开始,在生命线之间按从上向下的顺序画出随后的消息; (5)设置对象的激活期,这可以可视化实际计算发生时的时间点、可视化消息的嵌套; (6)如果需要设置时间或空间的约束,可以为每个消息附上合适的时间和空间约束; (7)给某控制流的每个消息附上前置或后置条件,这可以更详细地说明这个控制流。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148658.html原文链接:https://javaforall.cn
边栏推荐
- C語言-入門-基礎-語法-[運算符,類型轉換](六)
- std::is_ union,std::is_ class,std::integral_ constant
- Basic discipline formula and unit conversion
- Live in a dream, only do things you don't say
- Educational Codeforces Round 119 (Rated for Div. 2)
- awk从入门到入土(6)正则匹配
- manjaro安装微信
- 埃氏筛+欧拉筛+区间筛
- awk从入门到入土(15)awk执行外部命令
- awk从入门到入土(12)awk也可以写脚本,替代shell
猜你喜欢
Go zero micro service practical series (IX. ultimate optimization of seckill performance)
C语言-入门-基础-语法-[运算符,类型转换](六)
C语言-入门-基础-语法-[标识符,关键字,分号,空格,注释,输入和输出](三)
保姆级JDEC增删改查练习
地平线 旭日X3 PI (一)首次开机细节
Leetcode topic [array] -136- numbers that appear only once
4 small ways to make your Tiktok video clearer
转:优秀的管理者,关注的不是错误,而是优势
[untitled] forwarding least square method
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,Gauss-Jordan消去法,源代码
随机推荐
Educational Codeforces Round 115 (Rated for Div. 2)
Guanghetong's high-performance 4g/5g wireless module solution comprehensively promotes an efficient and low-carbon smart grid
Awk from entry to earth (7) conditional statements
A subclass must use the super keyword to call the methods of its parent class
Implementation principle of redis string and sorted set
Xcode 6 swift code completion does not work properly - Xcode 6 swift code completion not working
C#,数值计算(Numerical Recipes in C#),线性代数方程的求解,Gauss-Jordan消去法,源代码
DM8 uses different databases to archive and recover after multiple failures
ArcGIS application (XXII) ArcMap loading lidar Las format data
Comparison between sentinel and hystrix
FOC控制
没有Kubernetes怎么玩Dapr?
2022 examination questions for safety managers of metal and nonmetal mines (underground mines) and examination papers for safety managers of metal and nonmetal mines (underground mines)
Newh3c - network address translation (NAT)
Codeforces Round #803 (Div. 2)(A-D)
微服务入门:Gateway网关
[untitled] forwarding least square method
How to re enable local connection when the network of laptop is disabled
Leetcode topic [array] - 121 - the best time to buy and sell stocks
C語言-入門-基礎-語法-[運算符,類型轉換](六)