一,概述
1.概念
协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(interaction diagram),显示某组对象如何为了由一个用例描述的一个系统事件而与另一组对象进行协作的,使用协作图可以显示对象角色之间的组织关系。
协作图是动态图的另一种表现形式,它强调参加交互的个对象结构信息。协作图是一种类图,它包含类元角色和关联角色,而不仅仅是类元和关联。
协作图支队相互间有交互作用的对象和这些对象间的关系建模。
2.协作图的元素
(1)对象(Object)
对象代表协作图交互中所扮演的角色,和时序图中对象的概念类似。
(2)链(Link)
协作图中链符号和对象图中链所用的符号是一样的。即一条链连接两个类角色的实线。
几种常用的链符号
符号 |
含义 |
创建对象之间的通信路径 |
|
显示对象可以调用自己的属性 |
|
在两个对象之间或一个对象本身增加消息 |
|
在两个对象之间或一个对象本身从反向增加消息 |
|
显示两个对象之间的信息流 |
|
在反向显示两个对象之间的信息流 |
(3)消息
消息代表协作图中对象间通过链接发送的消息。
二、对比
1、协作图和时序图。
两者表的消息时一样的,只是强调的重点不同。协作图表达的是在实现某个用例期间,对象之间的合作关系,而时序图表达的是对象之间产生合作发生消息的时间顺序。
2、协作图和活动图
(1)活动图本质上是一种流程图,每个“活动”可以是某个具体的“事务”,比如审核单据等。用不太严谨的表述来说,活动图是一种粒度比较粗的事件流程图,多在需求阶段使用。
协作图就不一样了,协作图里的基本单元是对象(或者概念类),表达这些对象之间的协作关系,多在设计阶段使用。
(2)活动图是一个具体活动的表示图,有活动起点和活动终点;协作图是对象之间关系的表示图,没有起点和终点 。
3.时序图和协作图的功能
时序图和协作图之间的相同点
(1)规定责任。两种图都直观地规定了发送对象和接受对象的责任,将对象确定为接受对象,意味着为此对象添加一个接口。而消息描述成为接收对象的操作特征标记,由发送对象触发该操作。
(2)支持消息。两种图都支持所有的消息类型。
(3)衡量工具。两种图还是衡量耦合性的工具。
时序图和协作图之间的不同点
(1)协作图的重点是将对象的交互映射到它们之间的链上,即协作图以对象的方式绘制各个参与对象,并且将消息和链平行放置。这种表示方法有助于通过查看消息来验证类图中的关联或者发现添加新的关联的必要性。
时序图却不把链表示出来,在时序图的对象之间,尽管没有相应的链存在,但也可以随意绘制消息,不过这样做的结果是有些逻辑交互根本就不可能实际发生。
(2)时序图可以描述对象的创建和撤销的情况,而协作图中,对象要么不存在要么存在,出来通过消息描述或约束,没有其他的方法以表示对象的创建或约束。所表现的结构被置于静止的对象图中,所以很难判断约束什么时候有效。
(3)时序图还可以表现对象的激活和去激活情况,但对于协作图来说,由于没有对时间的描述,所以除了通过对消息进行解释,它无法清晰地表示对象的激活和去激活情况。