2

假设我们有三个类A, Band ,以及一个类型为 (resp. / )C的实例a(resp . b/ )。假设是 的一个属性并且是 的一个属性。cABCbacb

在 的方法中a,调用以下内容:b.c.operation()

我们如何在序列图中表示这一点?

4

3 回答 3

4

根据得墨忒耳法则,一个物体只能与它自己的邻居直接交流。因此,在您的情况下, a 根本不应该调用 bcoperation() ,因为 c 不是 a 的邻居。相反,B 类应该为此目的提供一个接口,例如 doCOperation(){c.operation();} ,这是 a 应该调用的。

所以操作顺序变成:

  1. 一个电话b.doCOperation()
  2. b 调用c.Operation()insidedoCOperation()并将结果返回给 a。

现在试试序列图,它应该会容易得多。

于 2017-12-15T08:40:23.513 回答
1

在编程中,拥有并不好b.c.operation()

所有数据都应该在类中隐藏(应该是私有的)。

但是,如果我们有b.c.operation(),在编译器中它会更改为,(b.c).operation() 因此您的代码等于此代码:

t=b.c;
t.operation();
于 2017-12-29T21:55:03.730 回答
1

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

在此处输入图像描述

于 2018-01-07T08:55:18.273 回答