首页 » 技术分享 » UML--协作图详解

UML--协作图详解

 

协作图

协作图包含一组对象和以消息交互为联系的关联,用于描述系统的行为是如何由系统的成分合作实现的。在协作图中,类元角色描述了一个对象,关联角色描述了协作关系中的链,并通过几何排列表现交互作用中的各个角色。

协作图的含义

所谓协作,是指在一定的语境中一组对象以及用以实现某些行为的这些对象间的相互作用。它描述了这样一组对象为实现某种目的而组成相互合作的“对象社会”。在协作中,它同时包含了运行时的类元角色(Classifier Roles)和关联角色(Association Roles)。类元角色表示参与协作执行的对象描述,系统中的对象可以参与一个或多个协作;关联角色表示参与协作执行的关联的描述。

协作图就是表现对象协作关系的图,它表示了协作中作为各种类元角色的对象所处的位置,在图中主要显示了类元角色和关联角色。类元角色和关联角色描述了对象的配置和当一个协作的实例执行时可能出现的连接。当协作被实例化时,对象受限于类元角色,连接受限于关联角色。

  • 从结构方面来讲:
    协作图和对象图一样,包含了一个角色集合和它们之间定义行为方面的内容的关系,从这个角度来说,协作图也是类图的一种,但是协作图与类图这种静态视图不同的是,静态视图描述了类固有的内在属性,而协作图则描述了类实例的特性,因为只有对象的实例才能在协作中扮演自己的角色,它再协作中起了特殊的作用。

  • 从行为方面来讲:
    协作图和序列图一样,包含了一系列的消息集合,这些消息在具有某一角色的各对象间进行传递交换,完成协作中的对象则为达到的目标。可以说在协作图的一个协作中描述了该协作所有对象组成的网络结构以及相互发送消息的整体行为,表示潜藏于计算过程中的三个主要结构的统一,即数据结构、控制流和数据流的统一。

在这里插入图片描述

协作图的作用

协作图作为一种在给定语境中描述协作中各个对象之间组织交互关系的控件阻止结构的图形化方式,在使用其建模时,可以将其作用分为以下三个方面。

  • 通过描绘对象间消息的传递情况来反映具体的使用语境的逻辑表达。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流,这个序列图的作用类似。
  • 显示对象及其交互关系的控件阻止结构。协作图显示了在交互过程中各个对象之间的阻止交互关系以及对象彼此之间的连接。与序列图不同,协作图显示的是对象之间的关系,并不是侧重交互的顺序,它没有将时间作为一个单独的维度,而是使用序列号来确定消息及并发线程的顺序。
  • 协作图的另外一个作用是表现一个类操作的实现。协作图可以说明类操作中使用到的参数、局部变量以及返回值等。当使用协作图表现一个系统行为时,消息编号对应了程序中的嵌套调用结构和信号传递过程。

组成协作图的元素

对象(Object)、消息(Message)和链(Link)这三个元素构成了协作图。协作图通过各个对象之间的组织交互关系以及对象彼此之间的连接表达对象之间的交互。

对象:
协作图中的对象和序列图中的对象的概念相同,同样都是类的实例。对象的角色表示一个或一组对象在完成目标的过程中所应起的那部分作用。对象是角色所属类的直接或者间接实例。在协作图中,不需要关于某个类的所有对象都出现,同一个类的对象在一个协作图中也可能要充当多个角色。

协作图中对象的表示方式也和序列图中对象的表示方式一样,使用包围名称的矩形框来标记,所显示的对象及其类的名称带有下划线,两者用冒号隔开,使用“对象名:类名”的形式,与序列图不同的是,对象的下部没有一条被称为“生命线”的垂直虚线,并且对象存在多对象的形式。
在这里插入图片描述

消息:
在协作图中,可以通过一系列的消息来描述系统的动态行为。和序列图中的消息概念相同,都是从一个对象(发送者)向另一个或几个其他对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作,并且都由三部分组成,分别是发送者、接收者和活动。

在协作图中,消息使用带有标签的箭头表示,它附在连接发送者和接收者的链上。链连接了发送者和接收者,箭头的指向便是接收者。消息也可以通过发送给对象本身的方式,依附在连接自身的链上。在一个连接上可以有多个消息,它们沿着相同或不同的路径传递。每个消息包括一个顺序号以及消息的名称。消息的名称可以是一个方法,包含一个名字、参数表和可选的返回值表。消息的各种实现的细节也和“交付商品”两步。

在这里插入图片描述
链:
协作图中的链与对象图中的链的概念和表示形式都相同,都是两个或多个对象之间的独立连接,是对象引用元组(有序表),也是关联的实例。在协作图中,关联角色是与具体语境有关的暂时的类元之间的关系,关联角色的实例也是链,其寿命受限于协作的长短,就如同序列图中对象的生命线一样。

在协作图中,链的表示形式为一个或多个相连的线或弧。在自身关联的类中,链是两端指向同一对象的回路,是一条弧。为了说明对象是如何与另外一个对象进行连接的,可以在链的两端添加上提供者和客户端的可见性修饰。

在这里插入图片描述

转载自原文链接, 如需删除请联系管理员。

原文链接:UML--协作图详解,转载请注明来源!

0