我在使用 Eclipse Papyrus 建模 SD 时遇到了一些问题,不是因为该工具(实际上制作得非常好),而是因为我对 OMG 规范的理解错误。
考虑这个简单的例子:
我有一个类 ClassA
的模型,其中包含两个不同类 的两个实例(比如 bObj:ClassB 和 cObj:ClassC)
。
ClassA
提供与通过 SequenceDiagram 指定的行为相关的操作(即 classAOperation(int param))。
现在,该行为包括调用 bObj:ClassB 的操作(即.classBOperation(int param))和 cObj:ClassC
的操作(即 classCOperation(int参数))。
我想知道如何通过 SD 来建模这个非常简单的行为。 这个问题基本上与LifeLine有关。
根据 OMG 规范。生命线只能代表(代表属性)一个 ConnectableElement,在我的例子中是两个,对应于实现组合为 ClassB
和 ClassC 的
实例ClassA
属性(bObj 和cObj)
。
问题是,我还需要引用这些可连接元素的容器,也就是说实际执行此类紧急行为的 ClassA
实例。正是该实例向 bObj:ClassB
和 cObj:ClassC
生命线发送消息(与操作调用相关)。
此外,由于此行为对应于 ClassA:classAOperation(int param) 调用,我还需要通过正式门来表示 classAOperation(int param) 消息。但同样,由于我无法对容器生命线进行模式化,所以我看不到将 classAOperation(int param) 消息附加到哪个结尾。
最佳答案
确实可以引用 self 实例
事实上 UML 规范 2.5b1 第 607 页,提到了关于生命线的内容。 如果名称是关键字 self,则生命线表示包含拥有生命线的交互的分类器的对象。即使包括自身,也可以单独显示外壳的端口。
查看 http://lowcoupling.com/post/47844944042/uml-sequence-diagrams
完整示例
关于eclipse - UML 序列图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291857/