当前位置: 首页 > news >正文

UML交互图-协作图

概述

协作图和序列图都表示出了对象间的交互作用,但是它们侧重点不同。序列图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系。协作图则清楚地表示了对象间的关系,但时间顺序必须从顺序号获得。序列图常常用于表示方案,而协作图用于过程的详细设计。

一、协作图的基本模型

协作图是一种类图,它包含对象和对象间的关联。协作图只对相互间具有交互作用的对象和对象间的关联建模,而忽略了其他对象和关联。如图8-1所示为一个简单的协作图。

在这里插入图片描述

二、对象的表示法

对象用来表示不同的主体,这样,多个对象之间才能够进行交互。对象使用一个方框表示,并写入对象的名称,使用下画线表示,如图8-2所示。

这里的对象就是前文中所讲解的对象图,因此我们可以设置它所属于的类类型,采用冒号表示类,如图 8-3所示。

如果类的类型是角色类型,则对象不再使用方框表示,而是使用一个角色的人形标志表示,对象名及类名写在人形标志的下方,如图8-4所示。

在这里插入图片描述

三、连接的表示法

在协作图中,不同的对象之间通过线段连接起来,表示它们之间拥有事件调用关系,如图8-5所示。

在这里插入图片描述

四、消息的表示法

消息可以用依附于链接的带标记的箭头表示。每个消息包括一个顺序号和一个名字。顺序号包括线程的名字(可选),同一个线程内的所有消息按照顺序排列。除非有一个明显的顺序依赖关系,不同线程内的消息是并行的。两个对象之间可能存在双向的调用关系,因此可以分别在连接线的两边使用两个方向的箭头分别表示,如图8-6所示。

在这里插入图片描述
与序列图中的消息类似,这里的消息也分为3种类型:

  • 同步消息:在箭头的末尾画一个叉,表示消息的调用是同步的。
  • 异步消息:箭头采用单边表示,表示消息的调用是异步的。
  • 定时消息:消息名后画一个圈,表示该消息是定时调用的。

五、自调用消息的表示法

以上的消息调用处于两个不同的对象之间,除此之外,消息还可以进行自调用,就好比类调用了自身的方法一样。在 UML图中,只需要画一个折回的箭头即可,如图8-7所示。

在这里插入图片描述

相关文章:

  • Kotlin 协程:从基础概念到开发实践
  • 可以自定义的文字识别OCR
  • 微软 Edge 推出 WebUI 2.0:从 React 到 Web Components + HTML,速度提升了42%
  • ATA-2088高压放大器在细胞分选中的作用是什么
  • Joplin Typora 粘贴图片 | 当使用Typora作为Joplin编辑器时,如何粘贴图片并上传到Joplin服务器,替换链接
  • Java类加载大冒险,谁能将它变成漫画
  • 【网络安全的神秘世界】Kali 自带 Burp Suite 使用指南:字体与CA证书设置详解等
  • LeetCode题练习与总结:二叉树中的最大路径和--124
  • pytorch中,load_state_dict和torch.load的区别?
  • JSONObject.toJSONString(***) json化后的值中的日期值被转换为时间戳?如何修改?
  • 源码文章上传无忧,论坛小程序支持
  • 人工智能GPT-4o?
  • 【AI基础】第三步:纯天然保姆喂饭级-安装并运行chatglm2-6b
  • 大型零售企业总部到分公司数据发放,有没有更优化的方案?
  • 知识图谱的应用---新零售
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【391天】每日项目总结系列128(2018.03.03)
  • 77. Combinations
  • Java教程_软件开发基础
  • k个最大的数及变种小结
  • ViewService——一种保证客户端与服务端同步的方法
  • 大型网站性能监测、分析与优化常见问题QA
  • 动态规划入门(以爬楼梯为例)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 算法系列——算法入门之递归分而治之思想的实现
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 阿里云API、SDK和CLI应用实践方案
  • # Maven错误Error executing Maven
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #07【面试问题整理】嵌入式软件工程师
  • #100天计划# 2013年9月29日
  • #1014 : Trie树
  • (1)Hilt的基本概念和使用
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (31)对象的克隆
  • (C语言)fread与fwrite详解
  • (Java入门)抽象类,接口,内部类
  • (python)数据结构---字典
  • (多级缓存)多级缓存
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (转)【Hibernate总结系列】使用举例
  • (转)平衡树
  • (转载)从 Java 代码到 Java 堆
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net FrameWork简介,数组,枚举
  • .Net OpenCVSharp生成灰度图和二值图
  • .net 设置默认首页
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑