在组合结构图中,协作发生是一个模型元素,它表示使用协作来说明结构化类元的各个部分之间的关系。使用协作发生来将由协作描述的模式应用于一种特定情况,该情况涉及到充当指定协作的角色的类或实例。您可以具有多个协作发生,且每个协作发生涉及到给定协作的一组不同的角色和连接器。
在协作发生中,每个协作角色通过类元绑定至可连接的元素。在随协作输入协作发生之后,就可以在组合结构图中打开该协作发生并查看该协作发生中各个部分的角色。可以添加一个角色绑定连接器(它是一种简单的依赖关系),以按照特定协作来绑定或映射类元中互相合作的角色和连接器。可以在下列各项之间添加角色绑定:
- 两个现有角色
- 现有协作发生与现有角色
- 现有角色与新的协作发生
- 现有协作发生与新的角色
如下图所示,可以在特定协作中复用对象和角色,并将这些元素作为模式来应用以指定包含一个协作发生的情况。

在上面的示例中,Car 协作有两个互相连接的类元 Door 和 Frame,这两个类元表示该协作中的特定角色。协作发生 Sedan 显示为一个由虚线组成的椭圆中包含协作发生的名称、一个冒号以及由 Car 输入的协作的名称。该示例中有两个角色绑定:一个是
SedanDoor 角色与 Door 协作角色之间的绑定;另一个是 SedanFrame 角色与 Frame 协作角色之间的绑定。位于虚线旁边的以加号(+)开头的标签表示可连接元素的名称。