假设我们有三个类A, B
and ,以及一个类型为 (resp. / )C
的实例a
(resp . b
/ )。假设是 的一个属性并且是 的一个属性。c
A
B
C
b
a
c
b
在 的方法中a
,调用以下内容:b.c.operation()
我们如何在序列图中表示这一点?
假设我们有三个类A, B
and ,以及一个类型为 (resp. / )C
的实例a
(resp . b
/ )。假设是 的一个属性并且是 的一个属性。c
A
B
C
b
a
c
b
在 的方法中a
,调用以下内容:b.c.operation()
我们如何在序列图中表示这一点?
根据得墨忒耳法则,一个物体只能与它自己的邻居直接交流。因此,在您的情况下, a 根本不应该调用 bcoperation() ,因为 c 不是 a 的邻居。相反,B 类应该为此目的提供一个接口,例如
doCOperation(){c.operation();}
,这是 a 应该调用的。
所以操作顺序变成:
b.doCOperation()
c.Operation()
insidedoCOperation()
并将结果返回给 a。现在试试序列图,它应该会容易得多。
在编程中,拥有并不好b.c.operation()
所有数据都应该在类中隐藏(应该是私有的)。
但是,如果我们有b.c.operation()
,在编译器中它会更改为,(b.c).operation()
因此您的代码等于此代码:
t=b.c;
t.operation();
这是你要找的东西吗?您可以在https://www.zenuml.com上试用。