免费注册
首页 知识社区 『这就是UML!』系列内容第8讲:协作图

『这就是UML!』系列内容第8讲:协作图

特邀撰稿人:翔宇亭IT乐园 2024-5-30
493

协作图(Collaboration Diagram),又称协同图,也是交互图的一种,它主要描述用例在实现过程中参与的对象以及对象之间的交互消息。

协作图的用途

协作图可以认为是序列图的另外一种表示交互的方法,但它不强调时间和序列。协作图的主要用途是描述类的一个操作的实现,用于描述对象之间的简单交互。

UML协作图

协作图的构成

协作图主要由对象(Object)、消息(Message)和链(Link)三个元素构成。

1,对象

协作图中的对象与序列图中的对象概念相同,也是类的一个实例,是类图中某个类的实例。

协作图对象

对象的表示法也与序列图中相同,其命名方式也相同。即:“对象名:所属类名”、“对象名”或“:所属类名”三种,同时也在名称下画一条横线,以表示其是类的一个实例。也可以使用下面的形式来表示类的多个实例:

协作图对象的表示

2,消息

协作图中的消息与时序图中的消息概念相同,都是从一个对象(发送者)向另外一个对象或几个其它对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另外一个对象(接收者)的操作。

协作图中的消息也是由三个基本部分构成:发送者、接收者和消息名称。消息也是由带消息名称标签的箭头表示,它附着在对象之间的链上,箭头方向指向消息的接收者。

一个消息也可以发送给对象自己,即消息的发送者和接收者都是对象自己。每个消息都有一个序号,用以表明消息的发送顺序。消息也有自己的名称,即操作的名称,也可以附带参数,即操作的参数。

下图中的“1:getRecords(reader)”及箭头即表示一个消息,它表示对象borrowForm要调用borrowRecords对象的一个操作:

协作图消息的表示

3,链

链是对象之间的连接,也是类关联的一个实例。在协作图中,链使用实线或弧来连接两个对象。链也可以位于一个对象跟自己的连接,链的起点和终点在一个对象上。如下图就是链位于单个对象上的情形:

协作图链的表示

协作图建模

1,基本策略

(1)设置交互的语境;

(2)设置交互的场景;

(3)对每个对象设置初始特性;

(4)描述对象之间可能有信息沿着它传递的链;

(5)设置消息的顺序号。

2,具体步骤

(1)确定用例中的交互过程--要描述哪个交互;

(2)识别参与交互过程的对象--有哪些对象参与到交互中来;

(3)如果需要,为每个对象设置初始特性--这些初始值对对象间的交互是否有影响,有的话可以添加,否则所有对象都有类似的行为;

(4)确定对象之间的链, 及沿着链的消息--对象之间有消息传送,就可以确定一个链;

(5)从引发该交互过程的初始消息开始,将每个消息附到相应的链;

(6)可以使用特别技巧设置消息的循环发送、时间约束等;

(7)如果需要,可以为每个消息设置前置条件和后置条件。

协作图案例

仍以图书馆借阅系统为例说明协作图的创作过程。

1,确定一个交互

读者还书时,图书馆工作人员使用归还图书帮助读者完成还书的交互过程;

2,确定参与的对象

图书馆工作人员、还书界面、借阅记录、业务逻辑处理和数据库;

3,使用ProcessOn绘制对象

注册/登录ProcessOn后,进入个人文件页,点击"新建"按钮创建一个空白UML文件,如下图所示的操作:

创建UML文件

进入编辑器界面后可以修改编辑器左侧顶部的”未命名文件“内容,直接给文件命名为“xxx协作图”;或者右键单击编辑器顶部菜单栏左侧的”文件‘按钮,选择“重命名”即可。

修改文件名称

ProcessOn中提供的UML图形元素如下:

UML图形元素大全

在编辑器界面的左侧可以看到图形组件区,该区域包含了创建协作图用到的基本绘图工具。创建对象时可以把相应的类拖拽到编辑器空白区域。

本例中,从左侧把图书馆工作人员、还书业务逻辑、还书数据处理逻辑、还书界面、借阅记录相关类拖拽到绘图区,形成以下情形:

图书馆借阅系统协作图

4,确定对象之间的链

根据还书业务,哪些对象之间有消息发送,则可以绘制对象之间的链。绘制链的方法是使用快捷键“L”,或者在左侧图形组件区的基础图形中拖拽“直线”元素到编辑器空白区域,或者直接从一个图形的一端移动到另一个图形上即可得到一条线条。如下图所示:

确定对象之间的链

用鼠标将直线移动到其中一个对象上,按住鼠标并将直线滑动到另外一个对象上后,松开鼠标,则创建完两个对象之间的链了。如果想删除一个链,可以选中链之后,按下“Delete”或“Backspace”键,或者在链上右击,然后选择“删除”,则可以彻底删除该链。

本例中最终形成以下效果:

创建对象之间的链

5,为链添加消息

添加完链后,从左侧图形组件区的基础图形中拖拽“文本”元素在要添加消息的链上,直接输入消息的名称则完成添加消息,如下图所示:

为链添加消息

6,调整对象布局

设置完对象的消息后,通过调整对象的布局,消息的排列,使图阅读更加容易。本例的最终效果如下图所示:

图书馆借阅系统协作图完整效果图




往期内容推荐

这就是UML——第1季 UML简介

这就是UML——第2季 UML通用知识上:事务、关系和公共机制

这就是UML——第3季 UML通用知识下:视图和图

这就是UML——第4季 用例图

这就是UML——第5季 用例图案例学习

这就是UML——第6季 类图

这就是UML——第7季 时序图

免费在线协同思维导图流程图 免费使用