UML时序图,调用

UML sequence diagram, call

假设我们有三个 类 A, BC,以及一个实例 a(resp. b/cA 类型(对应 B/C)。 假设 ba 的属性,cb.

的属性

a 的方法中调用了以下方法:b.c.operation()

我们如何在序列图中表示它?

根据 Law of Demeter,一个对象应该只与其自己的 邻居 直接通信。所以在你的情况下,a 根本不应该调用 b.c.operation(),因为 c 不是 a 的 neighbor。相反,class B应该为此提供一个接口,例如 doCOperation(){c.operation();} 这就是应该调用的。

所以操作顺序变成:

  1. a 调用 b.doCOperation()
  2. b 在 doCOperation() 中调用 c.Operation() 并将结果 returns 传递给 a.

现在看一下序列图,应该会容易得多。

在编程中有b.c.operation()

是不好的

All data should be hidden (should be private) in the class.

但是如果我们有 b.c.operation() ,在编译器中它会变为 (b.c).operation() 所以你的代码等于这个代码:

t=b.c;
t.operation();

这是您要找的东西吗?您可以在 https://www.zenuml.com.

试用