当前位置:网站首页>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
边栏推荐
- Research Report on the current market situation and development prospects of calcium sulfate whiskers in China (2022 Edition)
- Go zero micro service practical series (IX. ultimate optimization of seckill performance)
- NewH3C——ACL
- C语言-入门-基础-语法-[标识符,关键字,分号,空格,注释,输入和输出](三)
- MySQL relearn 1-centos install mysql5.7
- 没有Kubernetes怎么玩Dapr?
- Three paradigms of database design
- awk从入门到入土(15)awk执行外部命令
- Awk from entry to earth (14) awk output redirection
- awk从入门到入土(8)数组
猜你喜欢
Codeforces Round #793 (Div. 2)(A-D)
Leetcode topic [array] -136- numbers that appear only once
DM8 tablespace backup and recovery
Bishi blog (13) -- oral arithmetic test app
Codeforces Round #803 (Div. 2)(A-D)
NewH3C——ACL
到底什么才是DaaS数据即服务?别再被其他DaaS概念给误导了
How to solve the problem that computers often flash
How to choose solid state hard disk and mechanical hard disk in computer
How can we make a monthly income of more than 10000? We media people with low income come and have a look
随机推荐
2022 tower crane driver examination and tower crane driver examination questions and analysis
09 softmax regression + loss function
C语言-入门-基础-语法-[标识符,关键字,分号,空格,注释,输入和输出](三)
没有Kubernetes怎么玩Dapr?
Leetcode topic [array] - 121 - the best time to buy and sell stocks
4 small ways to make your Tiktok video clearer
How to solve the problem of computer jam and slow down
2022 electrician (intermediate) examination question bank and electrician (intermediate) examination questions and analysis
1211 or chicken and rabbit in the same cage
AI Winter Olympics | is the future coming? Enter the entrance of the meta universe - virtual digital human
FOC控制
Use Alibaba cloud NPM image acceleration
User login function: simple but difficult
随机事件的关系与运算
awk从入门到入土(5)简单条件匹配
How to play dapr without kubernetes?
In depth investigation and Strategic Research Report on China's motion controller Market (2022 Edition)
Awk from getting started to digging in (9) circular statement
[error record] no matching function for call to 'cacheflush' cacheflush();)
Langage C - démarrer - base - syntaxe - [opérateur, conversion de type] (vi)