UML序列图,调用

UML序列图,调用,uml,sequence-diagram,visual-paradigm,Uml,Sequence Diagram,Visual Paradigm,假设我们有三个类A,B和C,还有一个A(resp.B/C)类型为A(resp.B/C)。 假设b是a的属性,c是b的属性 在a的方法中,调用以下内容:b.c.operation() 我们如何在序列图中表示这一点?根据,一个对象应该只与它自己的邻居直接通信。因此,在您的情况下,a根本不应该调用b.c.operation(),因为c不是a的邻居。相反,类B应该为此提供一个接口,例如 doCOperation(){c.operation();} 而这正是a应该称之为的 因此,操作的顺序是: a调用b.

假设我们有三个类
A,B
C
,还有一个
A
(resp.
B
/
C
)类型为
A
(resp.
B
/
C
)。 假设
b
a
的属性,
c
b
的属性

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

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

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

因此,操作的顺序是:

  • a调用
    b.doCOperation()
  • b调用
    doCOperation()
    中的
    c.Operation()
    ,并将结果返回给a

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

    在编程中,使用
    b.c.操作()是不好的。

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

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

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

    这是你要找的东西吗?你可以在家里试试


    先自己试试看,我不知道我是否需要1)从a到c的一个箭头2)从b到c的一个箭头3)从a到b的一个箭头,从b到c的一个箭头……我从来不知道这叫做LoD(在做了30年以上的事情之后),但只是在“信息隐藏”这个术语下。编译器会改变它吗?或者在运行时?绝对是编译器。