pro guard-rules.pro
在一些抽象的序列图中,你有一个 loop 组合片段,其条件沿着例如 [对于每个项目] 。
在具有Java实现的序列图上;你会用什么作为一个环卫?
如果所有生命线必须代表一个对象实例,那么如何显示 i:Item 不是单个实例,而是在每次迭代时显示与集合不同的对象?
答案 0 :(得分:6)
答案 1 :(得分:4)
对于问题的第二部分,有一种表示法使用堆叠框在同一生命线中绘制多个实例,例如:
来自A Quick Introduction to UML Sequence Diagrams
用于figures
变量的堆栈框表示它引用了多个实例,这些实例可以被解释为循环周围的不同实例。 (和UML一样,语义在旁观者眼中有点)
P上。 UML 2.5规范中的571条规定:
生命线头部的形状基于该生命线所代表的部分的分类器。通常头是一个 包含名称的白色矩形。
“经常”这个词可以解释为“采取所需要的东西”,因为它不会妨碍使用单一的特定形式。
答案 2 :(得分:0)
很遗憾,它无法完成。循环运算符具有guard
条件,并且在minint
和maxint
之间有许多迭代。我认为,这不允许“每个循环”的语义。如果要添加它,则必须使用用户定义的构造型«for each loop»
完成:
一个示例用法是:
请注意,注释符号不是comment
,而是构造型属性的符号。他们引用了e
的属性Client1
和交互i
的{{1}}的属性(请参见下图)。 i属性由生命线表示,并且在每次出现循环内容时都将引用一个不同的对象。这是通过Example1
的用户定义语义来实现的。
作为替代方案,您可以添加具有相同内容的无语义«for each loop»
。不建议将comment
用于此目的。
此图还显示了如何随时间引用不同的对象:guard
消息的返回值分配给交互作用或生命线表示的类的reply
Property
。