我在使用Eclipse Papyrus建模SD时遇到了一些问题,不是因为该工具(实际上非常好),但是,我想,因为我对OMG规范的理解不合理。
考虑这个简单的例子:
我有一个类ClassA
的模型,其中包含两个不同类(say bObj:ClassB and cObj:ClassC)
的两个实例。
ClassA
提供与通过SequenceDiagram指定的行为相关的操作(即classAOperation(int param))。
现在行为包括调用bObj的操作:ClassB( ie .classBOperation(int param))和cObj:ClassC
的操作(即classCOperation(int param))。 / p>
我想知道如何通过SD模拟这种非常简单的行为。 这个问题基本上与LifeLine有关。
根据OMG规范。生命线只能代表(表示属性)一个ConnectableElement,在我的情况下是两个,对应ClassA
属性,实现ClassB
和ClassC
实例(bObj and cObj)
的组合}。
问题是,我还需要引用这些可连接元素的容器,也就是说实际执行此类紧急行为的ClassA
实例。它是将消息(与操作调用相关)o发送到bObj:ClassB
和cObj:ClassC
生命线的实例。
此外,由于此行为对应于ClassA:classAOperation(int param)
调用,我还需要通过正式门表示classAOperation(int param)消息。但同样,由于我无法模拟容器生命线,我无法看到哪个附加了classAOperation(int param)消息结束。
答案 0 :(得分:2)
确实可以引用自我实例
实际上UML规范2.5b1第607页,关于生命线的说法。 如果名称是关键字self,则生命线代表包含拥有生命线的交互的分类器的对象。即使包括self,封闭器的端口也可以单独显示。
请参阅 http://lowcoupling.com/post/47844944042/uml-sequence-diagrams
获取完整示例
答案 1 :(得分:-1)
我认为,在序列图中,您需要显示调用序列,而不是更多。我认为,对于可连接元素,对容器等的引用并不重要。它只是显示对象之间的调用链。我可以调用序列图:消息传递图。