UML笔记 - 顺序图

Posted 鱼鱼不愚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML笔记 - 顺序图相关的知识,希望对你有一定的参考价值。

5. 顺序图

5.0 目录


  • 5.0 目录

  • 5.1 定义顺序图

  • 5.2 顺序图的组成

    • 5.2.1 消息

  • 5.3 创建对象和分支、从属流

    • 5.3.1 创建对象

    • 5.3.2 分支和从属流

  • 5.4 建模时间

  • 5.5 建模迭代

  • 5.6 消息中的参数和序号

  • 5.7 管理复杂交互的顺序图

  • 5.8 创建顺序图模型



5.1 定义顺序图

顺序图就是告诉你对象之间会有什么通信以及这些通信的先后顺序和触发事件。官话:顺序图描述了对象之间传递消息的时间顺序,用来表示用例中的行为顺序,即代表了一个相互作用、在以时间为次序的对象之间的通信集合。

5.2 顺序图的组成

主要有四个标记符:对象生命线消息激活。现在你要知道这个顺序图是什么样子的:

image-20210515235230287

如上图,

  • 对象:消息的发送者和接收者,也是任务的执行者,如果没有了对象,顺序图就没得了。在图中是最上面框起来的三个东西。

  • 生命线:在图中是左边竖向方框框起来的虚线。表示对象存在的时间,即某个对象放置的水平位置表示其出现的时间,而生命线的末尾表示该对象已经没得了。

  • 消息:横向方框框起来的箭头表示消息传递。消息是对象之间交互的方式,

  • 激活:右边最后一个方框框起来的那一块白色的矩形就是激活。就是表示这个对象处于工作状态了。

5.2.1 消息

还得说说消息。消息是有分类的,主要分以下图中四类:

UML笔记 - 顺序图
image-20210516004119721
  • 同步消息

    有多个消息,要求后一个消息要等待前一个消息搞的事情完成了才能发送。

  • 异步消息

    不管前一个消息结果如何,也不用管别的,有消息就直接发。

  • 简单消息

    不符合其它三种消息的定义的消息。

  • 返回消息

    搞完事之后把结果返回给叫它搞事的对象。

需要注意的是,区分同步异步的区别主要是在于发送完消息,发送方有没有进入等待状态直到接收方处理结束再进行其它动作。

还有一种消息,就是自己调用自己的自身消息

UML笔记 - 顺序图
image-20210516005154835

5.3 创建对象和分支、从属流

5.3.1 创建对象

对象创建后默认是在顺序图的顶部,表示系统创建后该对象就存在了,可以随时接收消息,且其生命线一般也会延长到顺序图底部,表示对象和顺序图的各个事件“共进退”。但实际上也存在不少需要我们能够在某事件触发后才创建对象,或者该对象不用存在直到系统运行结束的要求,例如广告弹窗。给个小栗子:

UML笔记 - 顺序图
image-20210516012117107

5.3.2 分支和从属流

这个是修改顺序图控制流的两种方式,控制流的改变就是不同的条件导致控制流走向不同的道路。

  • 分支:根据不同的条件把分支消息发给不同的 对象
  • 从属流:在原有的默认的控制流基础之上,给同一个对象加多一条生命线,然后根据不同的条件走向不同的生命线。

StarUML中貌似大概应该...两种方式我都不会画,也不知道这个软件有没有提供上述的两种方式,目前用这个软件是用alt实现的条件控制。

UML笔记 - 顺序图
image-20210516084231443

5.4 建模时间

其实就是利用将消息箭头向下倾斜表示发送存在一定的延迟。一般需要注释或约束打在旁边说明的,这样的说明也能够用于表示对象处理某个任务所持续的时间。

5.5 建模迭代

建模迭代可以实现消息的重复执行。例如网页广告就会以弹窗的形式疯狂给用户弹出来,然后用户不厌其烦地疯狂关闭小广告。然后就像下图一样只要还有广告数据,就能给用户疯狂推送:

UML笔记 - 顺序图
image-20210516085446316

递归一般就是自己调用自己,也就是顺序图中的对象自己调用了自己,其实就是递归消息。

5.6 消息中的参数和序号

在面向对象编程中,对象是通过方法来实现发送消息的,也就是说消息是可以带参数的。也就说买水果的时候可以直接找果商买,至于买什么水果就可以直接在参数里面使用了。

UML笔记 - 顺序图
image-20210516090724730

一般情况下,可以根据消息的水平位置的从上到下来判断消息发送的先后顺序,但看不过来的时候可以用序号来给各个消息排个号,这样就不容易看错了,如下图:

image-20210516091948778

5.7 管理复杂交互的顺序图

当某个任务用普通的线性消息序列不足以充分表示的时候,可以直接安排上一些组合片段来搞事情。上文已经讲过两种组合片段了,分别是表示条件控制的alt和循环控制的loop。当然不止这两个,还有很多其它的,但大部分其实用的并不多,至少我个人用的不多。

image-20210516092654566
  • alt:分支结构,上面已经有提到了。
  • opt:可选序列,也就是只有满足它所需的条件时才会去执行它内部的序列。
  • loop:循环序列,上面也有说过。
  • par:并行序列,它的用法和alt差不多,但alt是做选择,而它全都要,且都要同时执行。
  • break:当外部序列与该序列发生交互时,直接退出其它的交互。
  • 其它组合片段:我把宝藏都放在那里,去找吧!(哥鱼·D·罗杰)

5.8 创建顺序图模型

创建顺序图包含四个任务:

  1. 确定需要建模的用例
  2. 确定用例的工作流
  3. 确定各工作流所设计的对象,并按从左到右顺序进行不知
  4. 添加消息和条件以便创建每一个工作流


以上是关于UML笔记 - 顺序图的主要内容,如果未能解决你的问题,请参考以下文章

UML图之时序图

《UML大战需求分析》阅读笔记6

索引UML学习笔记

《UML大战需求分析》阅读笔记1

《UML大战需求分析》阅读笔记5

疯狂Java讲义-读书笔记2.2 UML(统一建模语言)介绍