问题描述
我有一个面试问题,然后尝试在Internet上找到它的问题,但找不到。
我回答了,但是我仍然对我的回答感到困惑。因为我认为Post()
也是Invoice
类的一部分。
解决方法
不。该消息显示被称为,而不是谁/正在呼叫什么。因此,Publish()
是Invoice
的操作,而Post()
是GeneralLedger
中的一个(从Invoice
调用)。 Validate()
也是Invoice
的操作。只是在这里打个电话而已。
我在上面使用口语描述。首先,我重复@Christope的评论,即问题本身存在缺陷。
-
method
是错误的术语。它是常用的(通常在MS世界中),但此处应阅读的内容是操作(UML 2.5第15页:类拥有的操作可能具有相关的方法来定义其详细信息行为) - 生命线的顶部仅表示对象,而不表示它们来自的类。可以想到的类名是相同的,但要正确,它必须是
:<class>
或<objName>:<class>
。没有冒号,只有对象名。 - 返回箭头的箭头错误。它需要是一个开放的,而不是充满的。箭头渲染的语义在UML中至关重要。
- 消息(上面的实线部分)在UML 2.5(p.574)中定义为消息显示为从发送方MessageEnd到接收方MessageEnd的一行。从发送事件到接收事件遍历时,该行必须确保每个行片段都水平或向下。发送和接收事件可能都在同一条生命线上。线或箭头的形式反映了消息的属性...
- 因此,消息上方的文本是消息签名,它与所指向的对象中的操作相对应(有关更多信息,请参阅UML规范)。