代码之家  ›  专栏  ›  技术社区  ›  Friedrich

UML序列图,调用

  •  2
  • Friedrich  · 技术社区  · 7 年前

    假设我们有三节课 A, B C ,和一个实例 a (分别为。 b / c )的类型 A (分别为。 B / C ). 假设 b 是的属性 c 是的属性 b .

    以某种方式 ,则称为: b.c.operation()

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

    3 回复  |  直到 6 年前
        1
  •  4
  •   Brishna Batool    7 年前

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

    因此,操作顺序如下:

    1. a电话 b.doCOperation()
    2. b呼叫 c.Operation() 在内部 doCOperation() 并将结果返回给a。

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

        2
  •  1
  •   user9151377 user9151377    7 年前

    在编程中 b.c.operation()

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

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

    t=b.c;
    t.operation();
    
        3
  •  1
  •   Devs love ZenUML    7 年前

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

    enter image description here