3

我在使用 Eclipse Papyrus 建模 SD 时遇到了一些问题,不是因为该工具(实际上制作得非常好),而是因为我对 OMG 规范有错误的理解。

考虑这个简单的例子:

我有一个ClassA包含两个不同类的两个实例的类的模型(say bObj:ClassB and cObj:ClassC)ClassA提供与通过 SequenceDiagram 指定的行为相关的操作(即 classAOperation(int param))。

现在该行为包括调用 bObj:ClassB 的操作(.classBOOperation(int param))和cObj:ClassC(即 classCOperation(int param))的操作。

我想知道如何通过 SD 对这种非常简单的行为进行建模。这个问题基本上与LifeLine有关。

根据 OMG 规范。生命线只能表示(表示属性)一个 ConnectableElement,在我的例子中是两个,并且对应于实现ClassAaClassB和 a的组合的属性。ClassC(bObj and cObj)

问题是,我还需要引用这些可连接元素的容器,即ClassA实际执行这种紧急行为的实例。正是该实例向生命线bObj:ClassBcObj:ClassC生命线发送消息(与操作调用相关)。此外,由于此行为对应于ClassA:classAOperation(int param)调用,因此我还需要通过正式的门来表示 classAOperation(int param) 消息。但同样,由于我无法对容器生命线进行模式化,我看不到将 classAOperation(int param) 消息附加到哪个端。

4

2 回答 2

2

确实可以引用self实例

事实上UML spec 2.5b1 page 607,关于生命线的说法。如果名称是关键字self,则生命线表示包含拥有生命线的交互的分类器对象。即使包含 self ,外壳的端口也可以单独显示。

在此处输入图像描述

http://lowcoupling.com/post/47844944042/uml-sequence-diagrams

一个完整的例子

于 2013-02-11T20:40:31.137 回答
-1

我认为,在序列图中,您只需要显示调用序列即可。我认为,可连接元素、对容器的引用等并不重要。它只是显示对象之间的调用链。我可以称序列图:消息图。

序列图

于 2013-01-13T07:13:38.257 回答