2017-03-05 83 views
2
for (Item i : collection) { 
i.foo(); 
} 

在一些抽象序列图你有沿着例如线的状态的组合片段[每个项目]如何在UML序列图上为每个循环建模一个Java?

在具有Java实现的序列图上;你会用什么作为循环后卫?

如果所有的生命线必须代表一个对象实例,你将如何表明我:项目是不是一个单一的实例,但在每次迭代从收集不同的对象?

回答

1

您不会在SD中显示每个位,而只是一个概览:它是一个抽象概念。

enter image description here

这非常清楚地表明你的循环的意图。

只有当您希望在循环中显示不同的行为时,才会显示不同的Item实例。

1

对于你的问题的第二部分,存在使用堆叠盒绘制多个实例中相同的生命线的符号,例如:

UML sequence diagram loop with multiple instances

A Quick Introduction to UML Sequence Diagrams

的堆叠盒使用对于figures变量表示它指的是多个实例,可以将其解释为循环周围的不同实例。 (像往常一样用UML,语义稍微在旁观者的眼睛)

P的UML 2.5规范状态571:

生命线头具有基于所述分类器的形状这条生命线所代表的部分。头部通常是一个包含名称的白色矩形 。

“经常”一词可以解释为“采取所需措施”,因为它不妨碍使用单一的特定形式。

+0

啊,来自互联网。这一定是正确的: - 官方的UML 2.5规范没有这种表示法。参见第593页。 –

+0

@ThomasKilian true - 在UML 1中,生命线始于对象符号,这是多对象符号的符号,当对象的重数大于1时可以使用该符号。在UML2.5中,措辞改为'生命线头部具有基于该生命线代表的部分的分类器的形状',并且元模型具有生命线表示为ConnectableElement的类型,其代表一组。所以它既是UML1中的通用符号,也是UML2规范允许的符号。 –

+0

我自由地添加了引用。 –