在序列图中的组合片段中包含创建消息



我正在做关于序列图的作业。我的问题是,我们是否可以在组合片段中包含创建或删除消息

简而言之

是的,你可以这样做,但你必须小心互动保持一致。

更多详细信息

没有什么可以阻止您在组合片段中使用对象创建或对象删除。事实上,UML 2.5.1规范中甚至有一些例子:图17.14第588页显示了具有组合alt片段的序列图,其中创建和删除了交互的参与者。

如果语法没有问题,那么就由您来确保序列图的语义一致性。在这方面,有几个陷阱。例如:

  • 如果您在altopt片段中创建了一个参与者,但在这个片段之外,这个新参与者将与其他实例交互,您会假设创建总是发生的,而您的片段可能无法保证这一点
  • 如果您有一些带有条件和循环的复杂排序,那么您最好确保不会向稍后可能创建的参与者发送任何消息

还有一些歧义需要更好地避免。如果在片段的每次迭代中都会创建参与者,那么在循环中创建参与者可能是不明确的:是否在每次迭代中创建了新对象?如果循环中没有破坏,那么在上一次迭代中创建的其他参与者是否仍然存在?如果生命线在loop片段之后有交互,那么是第一个还是最后一个创建的对象?等等。

简而言之:是。你可以毫无问题地做到这一点。


更详细地说:尽量遵守UML规则,但不要因为查阅法律书而受阻。当然,最好不要违反UML之神制定的规则。但是,就像你晚上站在红灯前,看不见也听不到其他人的声音一样,是什么阻碍你过马路呢?

经常出现的一个常见错误是忘记在AD中放置连接节点,这会使整个网络陷入特定操作。是的,错了。但基本上只有机器,大多数人都能在没有任何问题的情况下理解其含义。只有律师才会认为这是错误的。

综上所述:当你为某个东西建模,并且你觉得它传递了信息,那么它就没问题了。即使不是100%正确。努力做到正确,但不要让它阻碍你做这项工作。如果你提出讨论,那还不错。一点也不!模型是用来讨论一些事情的。所以,如果你的模型开始讨论,那就更好了。你可以随时寻求建议,然后再解决。

相关内容

  • 没有找到相关文章

最新更新