协作图概述

来源:互联网 发布:三星拼接软件 编辑:程序博客网 时间:2024/05/22 09:06

协作图在很多方面都与顺序图相同。二者都用来记录对象的交互方式。但是,顺序图基于时间,而协作图显示对象及相应关联,不强调时间。协作图显示实现交互的消息序列。二者的区别仅在于此,因此,顺序图的相关内容也适用于协作图。这两类图仅是表达事物的两种不同方式。协作图用来查看系统的动态内容。因为协作图中的消息不强调时间,所以要编号,以便了解它们的出现顺序

协作图包含三个基本元素:

       对象

       链接(对象之间)

       消息

4.3.1  对象

对象包含名称、状态和行为。图中的每个对象指示类的实例,这就是对象的分类器需要指向类的原因。必须通知VEA对象是哪个类的实例。在构建协作图时,可右击要插入协作图的包,并从弹出菜单中选择New | Collaboration Diagram。两个形状表示对象:Classifier Role(分类器角色)Multi-Object(多对象)形状。在图4-28中,可以看到Classifier Role形状Object1Multi-Object形状Object2

4-28  协作图上的Classifier Role形状和Multi-Object形状

Classifier Role形状和Multi-Object形状表示的对象,其区别在于:Classifier Role形状表示单个对象;而Multi-Object形状表示一组对象,这些对象是同一个类的实例。从分类器到类的连接,以及属性设置与上一节介绍的顺序图相同。

4.3.2  链接

链接由Association Role(关联角色)形状表示,指示对象相互依赖。关系经常指示对象互换消息。

要添加链接,将Association Role形状拖放到图中,并将两个连接点联到两个Classifier Role形状的各个点。如果没有将Association RoleClassifier Role指向的两个基本类之间的已有关联进行关联,就会出现错误。原因在于,需要使链接指向实际关联(分类器)

在练习4-15中,将构建一个协作图,并添加对象和链接。

练习4-15

(1) VEA中,新建一个UML模型。

(2) Top Package包新建一个协作图。

(3) Top Package包新建一个静态结构图。

(4) 将两个Class形状拖到静态结构图。默认情况下,将它们命名为Class1Class2,这符合本练习的需要。

(5) Binary Association(二元关联)形状从Model ExplorerUML Static Structure选项卡拖到静态结构图,连接前一步骤构建的两个类。不要显示关联的终端名或重数(右击并选择Shape Display Options。取消选择FirstSecond终端名和End重数),如图4-29所示。

4-29  包含关联的静态结构图

(6) 将两个Classifier Role放在协作图上。默认情况下,它们被命名为Object1Object2,这符合本练习的需要。将Object1Object2的分类器分别设置为Class1Class2

(7) Model ExplorerCollaboration选项卡,将Association Role拖到协作图,连接前一步构建的两个对象。

(8) Association Role的基本(Base)关联设置为第5步构建的二元关联(Association1)。双击Association Role,打开UML Association Role Properties对话框,如图4-30所示,在Base association(关联列表)中选择Association1

在图4-30中,可看到协作图中Association Role形状的属性。注意,基本关联被设置为当前关联Association1 (在练习4-15的类图的类之间构建)

4-30  UML Association Role Properties对话框

4-31显示没有错误的协作图,因为已经将基本关联设置为静态结构图的当前关联。如果未设置Association Role的基本关联,将附带显示一个红色标记,Output窗口将显示一个错误。

4-31  包含关联的协作图

4.3.3  消息

消息是在对象之间流动的信息,导致动作的发生。如前所述,协作图中的链接(关联)可携带多条消息。通过双击Association Role形状(见图4-31),在UML Association Role Properties对话框(如图4-30)选择Messages类别,以构建消息,如图4-32所示。

4-32  为协作图构建消息

注意图4-32的顺序表示(Seq. Expr.column)设置。在查看最终协作图时,有必要了解哪些消息先发生,如图4-33所示。

4-33  包含消息的协作图

4.3.4  协作图小结

协作图与顺序图类似。区别仅在于:顺序图基于时间,但协作图不强调时间。在记录过程涉及的任务时,将构建协作图。与顺序图相比,协作图更面向对象,因为它强调的是消息和对象;而在顺序图中,因为按基于时间的方式记录过程,所以强调的是过程路径。

原创粉丝点击