Uml 选择框中的方法调用';卫兵

Uml 选择框中的方法调用';卫兵,uml,sequence-diagram,Uml,Sequence Diagram,如何在UML序列图中显示B::bar()方法调用?我知道这是可能的,因为: A::foo() { if (B::bar()) doSomething(); } 这样我就可以先画消息,然后画带有[x]保护的选项框。但这并不完全相同。还有其他方法吗?您不应该落入图形化编程的陷阱。SDs并不意味着描绘复杂的算法(在使用片段进行嵌套ifs之后,您可以很容易地猜到它会失败) 如果x-赋值是某个更复杂结构的一部分,您可以按原样在片段中使用它,并最终在片段上添加一个注释,说明x的设置

如何在UML序列图中显示
B::bar()
方法调用?我知道这是可能的,因为:

A::foo() {
    if (B::bar())
        doSomething();
}

这样我就可以先画消息,然后画带有[x]保护的选项框。但这并不完全相同。还有其他方法吗?

您不应该落入图形化编程的陷阱。SDs并不意味着描绘复杂的算法(在使用片段进行嵌套
if
s之后,您可以很容易地猜到它会失败)


如果
x
-赋值是某个更复杂结构的一部分,您可以按原样在片段中使用它,并最终在片段上添加一个注释,说明
x
的设置方式和位置。如果它就是上面所说的,您可以简单地使用片段中
x
的源代码(即
B::bar()
)。

如果我使用后者,我是否仍然应该绘制方法调用消息?这可能不需要,因为您在保护中使用的签名已经是不同的。但是,如果您想指出由于某种原因而进行的赋值,请将消息放在前面,尽管消息本身不会告诉结果会出现在哪里(即进入
x
)。我添加了一个,我认为“不打算描绘复杂算法”是一个非常好的方法。
A::foo() {
    x = B::bar();
    if (x)
        doSomething();
}