如何表达通信图的循环?(How to express loops in Communication

2019-10-22 19:03发布

我想知道如何在通信图类似表达:

foreach (User user in UsersCatalog) {
    list.add(user.getId());
}

其实我有类似如下

替代文字http://img691.imageshack.us/img691/9213/semttuloyc.png

(=用户用户)

但你会发现它并不代表好,我做这样一个循环的事实。

我怎样才能做到这一点?

Answer 1:

只要定义getId() : int有星号(*):

1.4 *getId()

对于给定的例子。



Answer 2:

你为什么不补充将此图与序列图? 序列图是更好地表达事件之间的时间关系,有一个预定义的符号来表达循环。



Answer 3:

作为尔迪说,用于描述循环序列图更好。 原因是,你想描述使用消息传递通信对象之间的相互作用。 用于此目的的UML定义不同交互图着眼于相互作用的不同方面。 序列图集中于对象(生命线)之间传递的消息的序列,所以是有意义的捕捉在一个循环中发送消息 - 序列。 通信图着眼于通信对象,这些对象发送某些消息给对方。 这些图不是模拟循环是有用的,因为他们只描绘了发送什么样的消息,并以何种顺序。 但是如果你使用一个良好的目的,通信图,只是想包括循环,你在你的代码有,你应该遵循elysiums建议,但记住,那个星号意味着将有消息数目不详,所以你应该添加表达式(理想OCL),其将捕获的循环的条件。 欲了解更多信息,请查询那些: http://www.smartdraw.com/resources/tutorials/uml-collaboration-diagrams/ http://en.wikipedia.org/wiki/Unified_Modeling_Language#Interaction_diagrams



文章来源: How to express loops in Communication Diagrams?