简而言之
在 UML 通信图中,相互交互的对象在视觉上用线条连接,顺序消息可以沿着这些线条在两个方向上循环。对象之间的线通常表示链接,即关联的实例。但是对象可以交换消息,即使它们没有关联(例如,如果一个对象作为参数传递或返回给另一个对象)。
我希望表示没有关联的对象之间的这种消息交换。但我想消除歧义并澄清所涉及的对象之间没有直接关联。UML 规范是否允许在不创建用户定义的原型的情况下表达这一点?
此外,当前的 UML 规范是否在某处为通信图中交互的对象之间的关系定义了一个术语?是否可以在图中进一步指定通信对象如何相互了解?
在提出问题之前进行了更多研究
我目前正在重读 Grady Booch、James Rumbaugh 和 Ivar Jacobson 的“ UML 用户指南,第 2 版”,这是一本以易于阅读的明文解释 UML 规范的好书。这是本书的更新 UML 2 版本,我可以映射回他们的大部分声明的 UML 2.5.1 规范。
然而,在第 16 章关于交互的内容中,他们解释了对象通过链接进行通信:
链接指定一个对象可以将消息发送到另一个(或相同)对象的路径。(...) 如果您需要更准确地了解该路径的存在方式,您可以使用以下约束之一装饰链接的适当末端:
- 关联:(...) 对象通过关联可见
- self: (...) 对象是可见的,因为它是操作的调度程序
- global: (...) 对象是可见的,因为它在封闭范围内
- local: (...) 对象是可见的,因为它在本地范围内
- 参数:(...)对象是可见的,因为它是一个参数
在第 19 章中,他们为通信图解释了交互中涉及的对象显示为相互关联的:
您将连接这些对象的链接渲染为该图的弧。链接可能有角色名来识别它们。最后,您使用对象发送和接收的消息来装饰这些链接。
这看起来很简单。于是我找了对应的UML 2.5.1规范:
- 链接仅定义为关联的实例。
- 对于通信图,17.9 节中根本没有提到链接和通信通道。图 17.26 显示了相互关联的对象(即生命线),但连接对象的线和表示沿这条线的消息的箭头似乎都以图形方式定义为“消息”。这对我来说似乎很模棱两可。
- 此外,我还没有找到任何关于约束、关键字或预定义的原型的参考,这些参考可以描述对象在特定图表中如何相互了解,并且可以证明它们之间的通信渠道是合理的。
- 我可以找到在过时的 UML 1.4 规范中定义为构造型的
«association»
,«local»
,«global»
,«parameter»
(具有与上述相同的含义),但在当前规范中不再存在。
因此我的问题。