UML顺序图的基本内容

新书速览|《UML 2.5基础、建模与设计实践

顺序图中包括的建模元素主要有:角色、对象、生命线、激活期、消息等。

1. 角色

系统角色可以是人、其他的系统或者其子系统。

2. 对象

顺序图中的对象在概念上和类图中的定义是一致的,它们之间可以按时间顺序进行交互。在顺序图中,对象用矩形框表示,对象名带有下画线。

对象包括3种命名方式,如图6.2所示。

图6.2  顺序图中对象命名框架

其中:

  1. 第一种方式包括对象名和它所属的类名,中间用冒号隔开。
  2. 第二种方式只显示对象名,不显示类名。
  3. 第三种方式只显示类名,不显示对象名,表示它是一个匿名对象,这样参与交互的就不限于特定的对象,而是适应于该类的任何对象。

图6.2中最外层是框架元素,对于顺序图,图的标签由文字“sd”开始。当使用一个框架元件封闭一个图时,图的标签就需要采用“图类型 图名称”的格式。

若对象置于顺序图的顶部,则表示该对象在交互初期就已经存在,若对象的位置不在顶端,则表示该对象是在交互的过程中被创建的。例如,图6.3所示的对象Object1和Object2就处于不同位置。

图6.3  对象的位置

对象的左右顺序并不重要,但是为了图的清晰整洁,通常应遵循以下原则:

  1. 把交互频繁的对象尽可能地靠拢。
  2. 把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。

3. 生命线

生命线代表顺序图中的对象在一段时间内的存在。生命线在顺序图中表示为从对象图标底部中心位置向下延伸的一条虚线(但事实上UML 2中定义的生命线可以用实线来表示),具体可参看图6.3。

生命线是一个时间线,其所用的时间取决于交互持续的时间。每个对象的底部都带有生命线,对象与生命线结合在一起称为对象的生命线。

对象在生命线上有两种状态:休眠状态和激活状态。

4. 激活期

激活期也被称为控制焦点,代表顺序图中的对象执行一项操作的时期,是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。在UML中,用小矩形表示激活条或控制期,对象就是在激活条的顶部被激活的,在完成自己的工作后被去激活,如图6.4所示。

图6.4  激活期

激活矩形的长度表示激活的持续时间。矩形长度只是激活期长短的一个粗略表示,而没有精确的要求,基本是从发出一条消息开始,到接收到最后一条消息结束。持续时间通常以一种大概的、普通的方式来表示,这意味着生命线中的每一段虚线通常不会代表具体的时间单元,而是试图表示一般意义上的持续时间。

5. 消息

消息是对象之间某种形式的通信,在垂直生命线之间,用带有箭头的线并附以消息表达式的方式表示。它可以激发某个操作、唤起信号或者导致目标对象的创建或撤销。一个对象到另一个对象的消息用跨越对象生命线的消息线表示。对象还可以发送消息给它自己,即消息线从自己的生命线出发又回到自己的生命线。

UML用从一条生命线开始到另一条生命线结束的箭头来表示一个消息。消息在图中生命线的上下位置决定了它的传递时间。消息可以用消息名及参数来标识,也可带有顺序号。

消息的一般表示方法如图6.5所示。

图6.5  消息的一般表示方法

图6.5中消息的阅读顺序是严格地自上而下的。对象之间的交互是通过互发消息来实现的,一个对象可以请求或要求另一个对象做某件事。消息从源对象指向目标对象,消息一旦发送便将控制从源对象转移到目标对象。

在UML中,消息的箭头形状代表了消息的类型。消息的类型分为同步消息(Synchronous Message)、异步消息(Asynchronous Message)和同步且立即返回消息(Return Message)3种。

《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书 (jd.com)

相关推荐

  1. uml基础-类

    2024-07-14 06:40:03       49 阅读
  2. UML用例

    2024-07-14 06:40:03       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 06:40:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 06:40:03       55 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 06:40:03       46 阅读
  4. Python语言-面向对象

    2024-07-14 06:40:03       56 阅读

热门阅读

  1. 无人机电子围栏及其关键技术

    2024-07-14 06:40:03       18 阅读
  2. git 创建分支--命令行

    2024-07-14 06:40:03       19 阅读
  3. k8s中kubesphere开启devops总是报错解决

    2024-07-14 06:40:03       22 阅读
  4. 酒店房间登记与计费管理系统(c++)

    2024-07-14 06:40:03       17 阅读
  5. golang监控公网IP变化自动同步dns解析

    2024-07-14 06:40:03       23 阅读
  6. Unity脚步.txt

    2024-07-14 06:40:03       22 阅读
  7. React Native Android 应用开发、调试与发布深度指南

    2024-07-14 06:40:03       25 阅读
  8. 方差是什么?

    2024-07-14 06:40:03       17 阅读
  9. 【jvm】字符串常量池问题

    2024-07-14 06:40:03       23 阅读
  10. VECTOR,ARRAYLIST, LINKEDLIST的区别是什么?

    2024-07-14 06:40:03       25 阅读