我在使用Eclipse Papyrus对SD进行建模时遇到了一些问题,不是因为这个工具有问题(实际上非常好用),而是我对OMG规范理解有误。
考虑以下简单示例: 我有一个模型,其中一个类ClassA包含两个不同类的实例(假设bObj: ClassB和cObj: ClassC)。 ClassA提供一个操作(即classAOperation(int param)),该操作与由SequenceDiagram指定的行为相关联。
现在,该行为包括调用bObj:ClassB的操作(即classBOperation(int param))和cObj:ClassC的操作(即classCOperation(int param))。
我想知道如何通过SD建模这个非常简单的行为。 问题基本上与LifeLine有关。
根据OMG规范,LifeLine只能表示(代表属性)ConnectableElement,在我的情况下有两个,对应于ClassB和ClassC实例的ClassA属性的组成。 问题是,我还需要引用这些可连接元素的容器,也就是执行此突发行为的ClassA实例。正是该实例发送了(与操作调用相关的)消息到bObj:ClassB和cObj:ClassC的生命线上。 此外,由于此行为对应于ClassA:classAOperation(int param)的调用,我还需要通过形式网关表示classAOperation(int param)消息。但是,由于我无法对容器生命线进行建模,因此无法看到将classAOperation(int param)消息结束连接到哪里。
考虑以下简单示例: 我有一个模型,其中一个类ClassA包含两个不同类的实例(假设bObj: ClassB和cObj: ClassC)。 ClassA提供一个操作(即classAOperation(int param)),该操作与由SequenceDiagram指定的行为相关联。
现在,该行为包括调用bObj:ClassB的操作(即classBOperation(int param))和cObj:ClassC的操作(即classCOperation(int param))。
我想知道如何通过SD建模这个非常简单的行为。 问题基本上与LifeLine有关。
根据OMG规范,LifeLine只能表示(代表属性)ConnectableElement,在我的情况下有两个,对应于ClassB和ClassC实例的ClassA属性的组成。 问题是,我还需要引用这些可连接元素的容器,也就是执行此突发行为的ClassA实例。正是该实例发送了(与操作调用相关的)消息到bObj:ClassB和cObj:ClassC的生命线上。 此外,由于此行为对应于ClassA:classAOperation(int param)的调用,我还需要通过形式网关表示classAOperation(int param)消息。但是,由于我无法对容器生命线进行建模,因此无法看到将classAOperation(int param)消息结束连接到哪里。