协作图

协作图

协作:指的是对一组对象以及对象之间上下文关系的描述,这些对象在上下文中通过交互来完成一个系统的功能。

协作图是表现对象协作关系的图,它展现了多个对象在协同工作达成共同目标的过程中互相通信的情况,通过对象和对象之间的链、发送的消息来显示参与交互的对象。

协作图中的元素主要有对象、消息和链三种。对象和链分别作为协作图中的类元角色和关联角色出现,链上可以有消息在对象间传递。


对象:

协作图中的对象与顺序图中对象的概念相同,都是表示类的实例。

协作图只关注相互有交互作用的对象和对象关系,而忽略其他对象。

由于协作图中不表示对象的创建与销毁,因此,对象在协作图中的位置没有限制。

与顺序图中对象的表示法不同的是,协作图中的无法显示对象的生命线。

链:

协作图中的链与对象图中的链在语义以及表示法上都相同,都是两个(或多个)对象之间的独立连接,是关联的实例。链同时也是协作图中关联角色的实例,其生命受限于协作的生命

 

消息:


协作图的消息需要附加在对象之间的链上,链用于传输或实现消息的传递。

协作图中的消息通过在链的上方或下方添加一个短箭头来表示,通常需要使用阿拉伯数字作为序号来表示协作图中发送消息的顺序。

协作图与顺序图:

共同点:

  主要元素相同。两种图中的主要元素都是对象与消息,且都支持所有的消息类型。

  表达语义相同。两种图都是对系统中的交互建模,描述了系统中某个用例或操作的执行过程,二者的语义是等价的。

  对象责任相同。两种图中的对象都担任了发送者与接收者的角色并承担了发送与接收消息的责任。通过对象之间消息的传递来实现系统的功能。

不同点:

  协作图偏重于将对象的交互映射到连接它们的链上,这有助于验证类图中对应的类之间关联关系的正确性或建立新的关联关系的必要性。然而顺序图偏重描述交互中消息传递的逻辑顺序。因此协作图更适用于展示系统中的对象结构,而顺序图则擅长表现交互中消息的顺序。

  顺序图可以显式地表现出对象创建与撤销的过程,而在协作图中,只能通过消息的描述隐式地表现这一点。

  顺序图还可以表示对象的激活情况,而对于协作图来说,由于缺少表示时间的信息,除了对消息进行解释,无法清晰地表示对象的激活情况。