协作扩展了行为分类器和结构化分类器,以解释协作实例的集合如何实现一个联合任务或一组任务。它的主要目的是解释一个系统是如何工作的,因此,它通常只包含那些被认为与解释相关的现实方面。
协作描述了协作元素(角色)的结构,每个元素执行一个专门的功能,这些功能共同完成一些所需的功能(任务)。实际参与实例的标识或精确类等详细信息将被隐藏。
协作元素——角色、部件、连接器。
协作访问显示了医生和病人角色的合作。
协作被表示为一种分类器,并定义一组由实例(其角色)扮演的协作实体,以及一组定义参与实例之间通信路径的连接器。协作实体是协作的属性。
协作指定一组协作分类器的视图(或投影)。它描述了扮演协作角色的实例之间所需的链接,以及指定参与实例的分类器所需的功能。
一些协作可能描述同一组分类器的不同投影。
协作的角色定义了实例的用法,而输入这些角色的分类器指定了这些实例的所有必需属性。因此,协作指定了哪些属性实例必须能够参与协作。角色(通过其类型)指定参与实例必须具有的一组必需的功能。角色之间的连接器指定参与实例之间必须存在哪些通信路径。
协作通常是根据接口类型化的角色定义的。接口是对实例所需或提供的一组属性(外部可观察特性)的描述。接口可以看作是实现接口的分类器的外部可观察特征的投影。
只要这些分类器实现了接口,不同分类器的实例就可以扮演给定接口定义的角色。同一个分类器可以实现多个接口,甚至在相同的上下文中,但是它们的特性可能是实现分类器特性的不同子集。
协作不能直接实例化。相反,协作定义的协作是在扮演协作中定义的角色的实例之间的实际协作的结果(协作是对该情况的选择性视图)。
协作可以通过协作使用附加到操作或分类器。以这种方式使用的协作描述了这个操作或这个分类器是如何通过一组协作实例实现的。在协作中定义的连接器在执行分类器中指定的行为时指定实例之间的链接。协作指定执行行为的上下文。这样的协作可以约束由链接连接的实例之间可能发生的有效交互集。
协作显示为包含协作名称的虚线椭圆图标。由角色和连接器组成的协作的内部结构可以显示在虚线椭圆图标内的隔间中。
可以使用复合结构图来显示协作。
|