UML交互图(顺序图和交互图)

article/2025/10/19 11:02:45

一、概念

  • 交互图描述对象之间的动态合作关系以及合作过程中的行为次序。
  • 交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况,即一个用例的实现过程。

交互图有顺序图和协作图两种形式。

  • 时序图中描述对象按照时间顺序的消息交换。
  • 协作图着重描述系统成分如何协同工作。

时序图和协作图从不同角度表达了系统中的交互和系统行为,它们之间可以相互转化。
时序图(Sequence Diagram)也称为顺序图。

通信图(Communication Diagram)也称为协作图。

二、时序图

<1>概念

  • 时序图是以时间为序的表示方法,主要用来描述完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序。
  • 时序图是强调消息时间顺序的交互图。
  • 时序图描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。

顺序图(Sequence Diagram)=生命线(Lifeline)+消息(Message)

时序图将交互关系表示为一个二维图。其中,纵轴是时间轴,时间沿竖线向下延伸。横轴代表了在协作中各独立的对象。
时序图包含了4个元素:对象、生命线、消息、激活


顺序图的可视化图符:


UML异步消息:建模软件使用实线箭头表示。

<2>生命线

每个对象及参与者都有一条垂直的生命线(Lifeline),表示了在交互过程中的生命期限。

表示方式:用矩形框和虚线表示生命线,矩形框中添加生命线的名称,虚线表示生命长度。

生命线名称语法:生命线对象名[选择器]:类名ref decomposition   (蓝色表示可选选项)

选择器:同一个类的对象可以有不同的状态值,可以再此中标明。

ref:是引用(Reference)的英文缩写

decomposition:指明在另一个更详细的顺序图中展示了当前交互的参与者如何处理它所接收到的信息的细节

<3>互动条

活动条(Activation Bar)也称为执行发生(Execution Occurrence),用来表示对象的某个行为的执行状态。

表示方式:虚线上的小矩形条。

<4>消息

1.消息简介

对象的行为也称为消息(Message),通常当一个对象调用另一个对象中的行为时,即完成了一次消息传递。

2.表示方式

在生命线间的带有实心箭头表示消息

3.消息命名

信号或消息名(参数:参数类型):返回值

4.简单消息、同步消息、异步消息

消息分为简单消息(Simple Message)、同步消息(Synchronous Message)和异步消息(Asynchronous Message)

  • 简单消息:指标是控制如何从一个对象发给另一个对象,并不包含控制信息。
  • 同步消息:意味着阻塞和等待
  • 异步消息:意味着非等待

表示方式如上《顺序图的可视化图符》图。

5.对象创建消息

参与交互的对象不必再整个顺序图交互的完整周期中一直存在,可以根据需要,通过发送消息来创建和销毁他们。

表示方式有两种:

  1. 在消息的上方添加构造型《create》来表示对象在交互过程中被创建。
  2. 消息的箭头直接指向被创建的对象生命线的头部,这样就不需要构造型《create》来表达了

6.对象的销毁

将构造型《destroy》放在消息的上方来表达对象销毁消息,同时在对象的生命线的结束部分画一个“×”来表示对象被销毁

7.无触发对象和无接收对象的消息

无触发对象消息(Found Message):用活动条开始断点上的实心球箭头来表示。(用在开始)

无接收对象消息(lost message):用箭头加实心球表示。(用在结束)

8.控制信息

<1>条件控制信息

当表达式的条件为真的时候消息才会被发送

语法:[表达式]消息标签

<2>重复(迭代)控制信息

消息多次发送给接收对象,迭代条件是表达式,当表达式的判定值为真结束

语法:*[表达式]消息标签

9.消息的返回值

表示方式:用虚线加开箭头的形式表示

<5>交互框

UML2.0添加了交互框(Interaction Frame).

交互框指途中的一块区域(Region)或片段(Fragment),包含一个操作符(或称为标签),并包含一个警戒.

交互框操作符说明
类型参数含义
ref表示交互被定义在另一个图中。可将一个规模较大的图划分为若干个规模较小的图,方便图的管理和复用。
assert表示发生在交互框内的交互式唯一有效的执行路径,有助于指明何时交互的每一步必须被成功执行,通常与状态变量一起使用来增强系统的某个状态。
loopmin times,max times,[guard_condition]循环片段,当条件为真的时候执行循环。也可以写成loop(n)来表示循环n次,与java或者C#等中的for循环比较相似。
break如果交互中包含break,那么任何封闭在交互中的行为必须被推出,特别是loop片段,这与java中的break语句比较相似。
alt[guard_condition1]...
[guard_condition2]...
[else]
选择片段,在境界中表达互斥的条件逻辑,与if...else...语句相似。
neg展示了一个无效的交互。
opt[guard_condition]可选片段,当警戒值为真的时候执行。
par并行片段,表达并行执行。
region区域,表示区域内仅能运行一个线程。
注意:下面的图判断都放在了居中位置(因为软件使用不会左对齐,明白就好,以后修正。)

1.alt


上图理解:

  1. 消息getPrice被发送给SaleManagement,然后根据quantity的值进行选择判断
  2. 如果quantity的值小于MiniAmount,那么SaleManagement将向Retail发送消息getPrice
  3. 否则,SaleManagement将向WholeSale发送消息getPrice

2.loop


3.par

可以理解为saveUserData()和checkQualification()将并行运行。

<6>时序图建模技术

  1. 识别交互的语境。
  2. 通过识别对象在交互中扮演的角色,设置交互的场景。
  3. 为每个对象设置生命线。
  4. 从引发某个消息的信息开始,在生命线之间画出从顶到底依次展开的消息,显示每个消息的特性(如参数)。
  5. 如果需要可视化消息的嵌套或实际计算发生时的时间点,可以用激活修饰每个对象的生命期。
  6. 如果需要更形式化的说明某控制流,可以为每个消息附上前置和后置条件。

<7>注意事项

对象不一定非得是类,还可以是参与者。

三、协作图

1.概念

协作图与时序图一样也是用来描述对象与对象之间消息连接关系的,侧重于说明哪些对象之间有消息传递。

协助图=交互的参与者+通信链+消息

通信图描述参与一个交互的对象的链接,它强调发送和接收对象之间的链接。

2.交互的参与者

表示方式:用对象符号表示,在矩形框中放置交互的参与者,显示交互的参与者的名称和它所属的类

语法:参与者名:类名

注意:虽然整个系统中可能有其他的对象,但只有涉及协作的对象才会被表示出来。

协作图中可能出现的4类对象:

  1. 存在于整个交互作用中的对象
  2. 在交互作用中创建的对象
  3. 在交互作用中销毁的对象
  4. 在加护作用中创建并销毁的对象

3.链接

表示方式:用直线表示。

  • 一般情况下,一个链接就是一个关联实例。
  • 消息可以通过链接进行流动。

4.消息

表示方式:依附于链接上的来由标记箭头和带顺序号的消息表达式表示。

  • 箭头表示消息的方向。

1.控制消息

表示方式:采用中括号表示。

当控制条件为真的时候消息才会被发送。

2.嵌套消息和自消息

当一个消息导致了另一个消息被发送的时候(编号区分),第二个消息被称为嵌套在第一个消息里。

嵌套可以剁成嵌套。

3.循环

与时序图中的循环类同。

表示方式:用“*”星号表示。

4.并发消息

顾名思义,就是几个消息被同事发送,编号是前半部分可以一样,后面采用字母表示。


http://chatgpt.dhexx.cn/article/wPfOmCXZ.shtml

相关文章

软件工程 第五章:交互图

第五章&#xff1a;交互图 概述 动态模型用来描述系统的动态行为&#xff0c;分为状态模型和交互模型。交互图描述对象间的动态合作关系及合作过程中的行为次序。常用来描述一个用例的行为&#xff0c;显示该用例中所涉及的对象及它们间的消息传递情况。交互图有序列图和协作…

UML系列文章(19)基本行为---交互图

顺序图和通信图&#xff08;均是交互图&#xff09;是UML中用于对系统的动态方面进行建模的5种图中的两种。交互图表现的是一个交互&#xff0c;由一组对象和它们之间的关系组成&#xff0c;包括它们之间可能传递的消息。顺序图是强调消息时间顺序的交互图&#xff0c;通信图是…

UML-----交互图(顺序图和合作图)

交互图 交互图是用来描述系统中的对象是如何进行相互作用的。也就是一组对象是如何进行信息传递的。主要描述协作的动态行为方面。 交互包括两个方面&#xff1a;1.强调消息的时间顺序。2.强调发送和接收信息的对象的结构组织 因此引出了两个图 顺序图&#…

UML九种图之交互图

序列图又叫顺序图&#xff0c;是交互图的一种&#xff0c;交互图包括顺序图和合作图。那么什么是交互图呢&#xff1f; 交互图 u 定义 交互图是用来描述系统中的对象是如何进行相互作用的。即一组对象是如何进行消息传递的。 交互主要用于描述协作的动态行为方面。 当对交互…

UML---交互图(顺序图和协作图)

交互图 交互图用来描述对象之间的交互关系&#xff0c;包括顺序图和协作图 交互图用来描述系统中的对象是如何进行相互作用的。即一组对象是如何进行消息传递的。 顺序图 1.概念&#xff1a;描述对象之间的交互顺序&#xff0c;着重体现对象间消息传递的时间顺序&#xff0…

【UML】——交互图

一、交互图 1、什么是交互图 交互图用来描述系统中的对象是如何进行相互作用的&#xff0c;即一组对象是如何进行消息传递的 交互图主要用于描述协作的动态行为方面 2、两种方式描述 强调消息的时间顺序 强调发送和接受消息的对象的结构组织 3、交互图包括 时序图&…

【环境搭建】gflags和glog的安装

【环境搭建】gflags和glog的安装 在Ubuntu16.04上安装gflags什么是gflags安装gflags 在Ubuntu16.04上安装glog什么是glog安装glog使用glog 结语 在Ubuntu16.04上安装gflags 什么是gflags gflags用于处理命令行参数 安装gflags 用apt下载git和cmake sudo apt-get install g…

Windbg的gflags.exe -- Attach调试利器

有没有碰到过程序启动就因为异常直接crash&#xff1f;有没有碰到程序启动之后什么反应也没有&#xff1f;有没有碰到过程序启动之后去触发另一个进程失败&#xff1f;有没有碰到别人的程序调用了你的代码&#xff0c;出现问题以后&#xff0c;让你来调查&#xff0c;而你只有你…

gflags的交叉编译

gflags版本&#xff1a;gflags 2.2.2 目录 编译 动态库的编译 cmake 设置交叉编译器是重点。 lbwDESKTOP-LBW22:/mnt/d/ref/gflags-master/_build$ cmake .. -DGFLAGS_NAMESPACEgflags -DCMAKE_CXX_FLAGS-fPIC -DBUILD_SHARED_LIBSON -DCMAKE_C_COMPILERaarch64-linux-gnu-…

【Ubuntu 20.04】 安装使用 Gflags、Glog、JSON、yaml 教程

Gflags 谷歌命令行解析工具gflags详解 https://zhuanlan.zhihu.com/p/95889124Glog //安装 sudo apt-get install libgoogle-glog-dev //卸载 sudo apt-get remove libgoogle-glog-devGoogle开源库之Glog库详解 https://zhuanlan.zhihu.com/p/26025722JSON Linux C/C下使用…

Ubuntu20.04安装g3log、glog和gflags

建议最好先安装最新版本的cmake&#xff0c;在进行以下安装 cmake安装教程 1.安装gflags 方法一、首先打开终端 ||git clone https://github.com/gflags/gflags.git ||cd gflags ||mkdir build && cd build ||cmake .. -DGFLAGS_NAMESPACEgoogle -DCMAKE_CXX_FLAGS-f…

Gflags learning notes

简介 gflags是谷歌开发的一个命令行标记库&#xff0c;区别于其他命令行标记库&#xff0c;它允许标记定义出现在源文件各处&#xff0c;而不是限定在一个源文件&#xff08;如main()&#xff09;中。这意味着一个源代码文件定义和使用对该文件有意义的标志&#xff0c;任何链接…

(02)Cartographer源码无死角解析-(09) gflags与glog简介、及其main函数讲解

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 …

glog和gflags的使用

glog&#xff1a;日志输出 支持debug功能 glog提供特定的宏只在debug模式下生效。以下分别对应LOG、LOG_IF、DLOG_EVERY_N操作的专用宏。 DLOG(INFO) << "Found cookies"; DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies"; DLO…

【gflags】gflags 命令行参数配置库

gflag介绍 google开源的gflags是一套命令行参数解析工具 主要就是用来解析命令行参数&#xff0c;并且支持从文件或者从环境变量中读入参数&#xff0c;功能十分强大 gflag的使用 我们以使用为目标进行讲解&#xff0c;不会进行深入了解&#xff08;其实并不是很难&#xff0c;…

js判断文件类型详解

js判断文件类型详解 通过file的type属性判断 <input type"file" onchange"onchangecb(this)" /> <script> function onchangecb(e) {const file e.files[0];console.log(file.type); } </script>像html中input标签&#xff0c;就是根…

JS——判断变量类型方法汇总

判断变量类型 一、使用typeof判断变量类型二、使用instanceof判断变量的类型三、使用constructor判断变量的类型四、使用Object.prototype.toString.call判断变量的类型五、使用jquery中$.type判断变量的类型。六、总结 在JS中&#xff0c;有 5 种基本数据类型和 1 种复杂数据类…

JavaScript中的类型判断

js中的类型判断 1、使用typeof进行类型判断2、使用 instanceof 判断对象3、使用Array.isArray()判断数组 1、使用typeof进行类型判断 function fun() { }; console.log("数字的类型为&#xff1a;" typeof (1)); console.log("字符串的类型为&#xff1a;&quo…

js:判断数据类型的几种方法

参考文章&#xff1a;JavaScript中判断对象类型的几种方法总结 根据要判断的数据对象&#xff0c;来选用合适的方法 1、原始数据类型 6种&#xff1a;number、string、boolean、undefined、null、symbol 一、typeof let str hello; console.log(typeof str); // string【特…

JS判断数据类型的几种方式

JS中常见的几种数据类型 基本类型&#xff1a;string、boolean、number特殊类型&#xff1a;undefined和null3、引用类型&#xff1a;Array、Date、RegExp… typeof typeof检测基本数据类型时没有问题&#xff0c;但是当其对引用类型进行检测时&#xff0c;会返回object&…