类图描述了系统中包含的类,类提供的功能,以及类之间的关联,但是没有告诉我们类实例(对象)之间是如何通信的。这就是使用协作图的目的。

一、定义协作图

   协作图描述对象之间的关联及其它们彼此之间的消息通信。要想使由类构成的系统具有功能,类的实例(对象)需要彼此通信和交互,它们需要协作。

二、了解协作图的标记符

   协作图描述对象之间的关联结构以及它们之间的交互,以便展示用例的功能行为

1. 对象和角色

   由于协作图要建模系统的交互,它必须处理类的实例。由于类在运行时不做任何工作,而是由它们的实例形式(对象)完成所有工作,因此,我们现在主要关心对象之间的交互。在协作图中可以使用3种标记类型的对象。

   除了对象之外,在协作图中还可以看到对象角色。有4种方式来标识对象角色。

2.消息

   消息是协作图中对象与对象之间通信的方式。消息在协作图中显示为一个伴随链接或者关联角色的文本字符串,并带有一个箭头来指示消息沿着关系传递的方向

三、学习不同的消息类型

   协作图中有3种类型的消息,它们与前面介绍顺序图时的消息类型相同:

1.同步消息

   协作图中使用实心箭头表示消息是同步的,它表示前一个消息处理必须完成后才可进入下一个消息处理。

2.异步消息

   异步消息指示处理流不必等到消息完成或者传递之后就可以继续执行。异步消息采用半开箭头表示。

3.简单消息

   简单消息使用带有消息文本的开放箭头,用来指示消息类型对于当前的协作图是未知的或者不重要的。

比较顺序图与协作图

   在这个练习中,将通过对ATM机取款用例的行为描述,比较顺序图与协作图。例如,客户Joe从ATM机提取20美金的场景。

顺序图:

协作图: