UML 协作图

UML 统一建模语言 同时被 2 个专栏收录
14 篇文章 0 订阅
151 篇文章 0 订阅

概念

协作图是动态图的另一种表现形式,强调参加交互的各对象结构的信息。协作图是一种类图,包含类元角色和关联角色,而不仅仅是类元和关联。协作图强调参加交互的各对象的组织。

内容

图形上,协作图的对象用矩形表示,矩形内是此对象的名字,连接用对象间相连的只限表示,连线可以有名字,它标注于表示连接的直线上。如果对象间的连接有消息传递,则把消息的图标沿直线方向绘制,消息的箭头指向接受消息的对象。由于从图形上绘制的协作图无法表达对象间消息发送的顺序,因此需要在消息上保留对应时序图的消息顺序号,如下图所示:
这里写图片描述

  1. 对象(Object)
    对象代表协作图交互中所扮演的角色,和时序图中对象的概念类似。只不过在协作图中,无法表示对象的创建和撤销,所以对象在协作图中的位置没有限制。
  2. 链(Link)
    协作图中链的符号和对象图中链所用的符号是一样的,即一条连接两个类角色的实线。
    协作图中常用的链符号如下图所示:
    这里写图片描述
  3. 消息(Message)
    消息代表协作图中对象间通过链接发送的消息。消息流上标有消息的序列号和对象间发送的消息。一条消息会触发接收对象中的一项操作。
    协作图中的消息类型与时序图中的相同,只不过为了说明交互过程中消息的时间顺序,需要给消息添加顺序号。顺序号是消息的一个数字前缀,是一个整数,由 1 开始递增,每个消息都必须有唯一的顺序号。可以通过点表示法代表控制的嵌套关系,也就是说在消息 1 中,消息 1.1 是嵌套在消息1中的第一个消息,它在消息 1.2 之前;消息 1.2 是嵌套在消息 1 中的第 2 个消息,依此类推。嵌套可以具有任意深度。与时序图相比,协作图可以显示更为复杂的分支。

建模策略

使用协作图对系统建模时,可以遵循以下策略:

(1)设置交互的语境,语境可以是系统、子系统、操作、类、用例或用例的脚本。

(2)通过识别对象在交互中所扮演的角色,开始绘协作图,把这些对象作为图的顶点放在协作图中。

(3)在识别了协作图对象后,为每个对象设置初始值。如果某对象的属性值、标记值、状态或角色在交互期发生变化,则在图电放置一个复制对象,并用变化后的值更新它,然后通过构造型<>或<>的消息将两者连接。

(4)设置了对象的初始值后,根据对象间的关系开始确定对象间链接。一般先确定关联的链接,因为这是最主要的,它代表了结构的链接。然后需要确定的是其他的链接,用合适的路径构造型修饰它们,这表达了对象间是如何互相联系的。

(5)从引起交互的消息开始,按消息的顺序,把随后的消息附到适当的链接上,这描述了对象间的消息传递,可以用带小数点的编号来表达嵌套。

(6)如果需要说明时间或空间的约束,可以用适当的时间或空间约束来修饰每个消息。

(7)在建模中,如果想更详细地描述这个控制流,可以为交互过程中的每个消息都附上前置条件和后置条件。

协作图与时序图比较

相同点
(1)规定责任。两种图都直观地规定了发送对象和接收对象的责任。将对象确定为接收对象,意味着为此对象添加一个接口。而消息描述成为接收对象的操作特征标记,由发送对象触发该操作。

(2)支持消息。两种图都支持所有的消息类型。

(3)衡量工具。两种图还是衡量耦合性的工具。耦合性被用来衡量模型之间的依赖性,通过检查两个元素之间的通信,可以很容易地判断出它们的依赖关系。如果查看对象的交互图,就可以看见两个对象之间消息的数量以及类型,从而简化或减少消息的交互,以提高系统的设计性能。

不同点
(1)协作图的重点是将对象的交互映射到它们之间的链上,即协作图以对象图的方式绘制各个参与对象,并且将消息和链平行放置。这种表示方法有助于通过查看消息来验证类图中的关联或者发现添加新的关联的必要性。但是时序图却不把链表示出来,在时序图的对象之间,尽管没有相应的链存在,但也可以随意绘制消息,不过这样做的结果是有些逻辑交互根本就不可能实际发生。

(2)时序图可以描述对象的创建和撤销的情况。新创建的对象可以被放在对象生命线上对应的时间点,而在生命线结束的地方放置一个大写的X以表示该对象在系统中不能再继续使用。而在协作图中,对象要么存在要么不存在,除了通过消息描述或约束,没有其他的方法可以表示对象的创建或结束。但是由于协作图所表现的结构被置于静止的对象图中,所以很难判断约束什么时候有效。

(3)时序图还可以表现对象的激活和去激活情况,但对于协作图来说,由于没有对时间的描述,所以除了通过对消息进行解释,它无法清晰地表示对象的激活和去激活情况。

  • 1
    点赞
  • 23
    评论
  • 14
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值