软件工程 第五章:交互图

article/2025/10/19 11:11:32

第五章:交互图

概述
  1. 动态模型用来描述系统的动态行为,分为状态模型和交互模型。
  2. 交互图描述对象间的动态合作关系及合作过程中的行为次序。常用来描述一个用例的行为,显示该用例中所涉及的对象及它们间的消息传递情况。
  3. 交互图有序列图和协作图两种形式
    序列图主要用来描述对象之间信息交换时的时间顺序.
    协作图则用来描述系统对象之间如何协作共同完成系统功能的要求。
  4. 它们在语义上是等价的。这意味着序列图和协同图内部包含的信息是相同的。因此两图可以互相推导,可通过工具互相自动转换
  5. 交互图可以为软件系统的下列构成的对象的动态行为进行建模:类、接口、部件、节点

序列图

概述
  • 定义:序列图是交互图的一种,它强调的是消息发送的时间的先后顺序
组成

(1)对象:序列图中所包含的每个对象用一个对象框(短式)表示,对象名需带下划线。
(2)生存线:对象框下画的一条垂直虚线,称为该对象的生存线,表示对象的生存时间。
(3)激活期:对象生存线上的一个细长方形框,表示该对象的激活时间段,即活动期间。
(4)消息:对象之间消息的发送和接收用两个 对象生存线(激活期)之间的消息箭头线。
在这里插入图片描述

消息
  • 定义:对象间的互相合作与交流表现为一个对象以某种方式启动另一一个对象的活动。这种交流在UML中被定义为消息。消息相当于向目标对象发送了一条命令,此命令启动了目标对象的一个动作。

  • 分类:消息的分类可以从两个角度区分:
    一是从消息触发的动作来区分
    二是从消息的过程控制流进行区分。

  • 通过发送消息可以触发的动作有:

  1. 创建一个对象或释放对象
  2. 调用另一个对象的操作
  3. 调用本对象的操作
  4. 发送信息给另一个对象
  5. 返回值给调用者
  • 消息可以分为四种控制流,分别是简单消息、异步消息、同步消息和返回消息。
    1)简单消息
    展示了控制如何从一个对象传递到另一个对象,但不描述任何通信的细节。
    2)同步消息
    是一种嵌套的控制流,通常用操作调用来实现。
    3)异步消息
    异步控制流,没有明显的返回信息回送给调用者。
    4)返回消息
    表示控制流从过程调用的返回。
建立序列图的过程

① 从用例中识别交互过程;
② 识别参与交互过程的对象;
③ 为每一个对象设置生命线,并确定对象的存在期限;
④ 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息;
⑤ 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。

例:
读者在借书时,先由馆员把读者编号输入给系统,系统返回读者的身份信息,以及读者的借阅信息。如果读者借书数量没有超过借书的上限,则把要借书的图书编号输入系统,系统登记借书信息,并返回借书成功信息,借书过程完成。
在这里插入图片描述

协作图

概述

定义:协作图是交互图的另一种表现形式,它在语义上和交互图是等价的
在这里插入图片描述

构成

包含三个:对象、连接、在此连接上传递的消息

  • 连接:
  1. 连接(Link)被定义为对象之间的语义联系。连接是类之间的关联关系实例。在序列图中,两个对象之间有消息,意味着它们之间在语义上存在着联系,所以它们的对象之间存在着连接关系。
  2. 在协作图上,连接用对象之间相连的直线来表示; 连接可以有名字,它标在表示连接的直线上
    在这里插入图片描述
建立协作图的过程

① 从用例中识别交互过程;
② 识别参与交互过程的对象;
③ 确定对象之间的链,以及链上的消息;
④ 从引发交互的初始消息开始,将随后每个消息附在相应的链上;
⑤ 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。

对比
  • 协作图VS序列图
  1. 序列图和协作图都属于交互图,用来描述对象之间的动态关系。
  2. 序列图和协作图在语义上是等价的,两者可以相互转换。
  3. 与序列图相比,通过编号来看消息的执行顺序比较困难,但协作图中对象间灵活的空间布局可以更方便地展示动态连接关系等有用信息。
  4. 序列图强调消息的时间顺序,协作图强调参与交互的对象的组织关系。
  5. 当行为比较简单时,交互图比较好;当行为比较复杂时,则应使用活动图。
  6. 如果想描述跨越多个用例的单个对象的行为,应当使用状态图。如果想描述跨越多个用例或多个线程的复杂行为,则应使用活动图。
变化
  • 在UML2.0中,通信图实际上是以前版本的协作图

http://chatgpt.dhexx.cn/article/1WButbeb.shtml

相关文章

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

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

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

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

UML九种图之交互图

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

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

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

【UML】——交互图

一、交互图 1、什么是交互图 交互图用来描述系统中的对象是如何进行相互作用的,即一组对象是如何进行消息传递的 交互图主要用于描述协作的动态行为方面 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?有没有碰到程序启动之后什么反应也没有?有没有碰到过程序启动之后去触发另一个进程失败?有没有碰到别人的程序调用了你的代码,出现问题以后,让你来调查,而你只有你…

gflags的交叉编译

gflags版本: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,在进行以下安装 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是谷歌开发的一个命令行标记库,区别于其他命令行标记库,它允许标记定义出现在源文件各处,而不是限定在一个源文件(如main())中。这意味着一个源代码文件定义和使用对该文件有意义的标志,任何链接…

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

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解: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&…

js 精确判断对象的类型

在 JavaScript 里使用 typeof 来判断数据类型&#xff0c;只能区分基本类型&#xff0c;即 “number”&#xff0c;”string”&#xff0c;”undefined”&#xff0c;”boolean”&#xff0c;”object” 五种。 对于数组、函数、对象来说&#xff0c;其关系错综复杂&#xff0c…