如果类Human
从超类继承了一些方法Mammal
不变(例如laysEggs: () -> false
)并覆盖其他方法(例如postsToStackOverflow : () -> true
),那么在UML静态类图的一部分中指示不同方法的方式之间有什么区别吗Human
? 例如,框中仅显示被重写的方法Human
,还是同时显示两者,并带有被覆盖方法的一些注释?
现在有了。一些匿名者让我深入研究2.5.1。规格。在第102页,它说
由分类器继承的成员可以在该分类器的图上显示,方法是在成员未继承时将显示的文本表示形式前面加上插入符号"^"。因此,继承属性的表示法定义如下:
<inherited-property> ::= ’^’ <property>
其中 9.5.4 中指定了
<property>
。同样,继承连接器的表示法定义如下:
<inherited-connector> ::= ’^’ <connector>
其中
<connector>
在 11.2.4 中指定。类似的表示法可用于继承的所有命名元素分类器的成员,以指示它们是继承的。
继承的成员也可以以较浅的颜色显示,以帮助将它们与非继承成员区分开来。符合要求的实现不需要提供此选项。
由于它适用于命名元素,因此它也可以用于属性和操作。
规范本身(尚未)很少使用插入符号,除了第 115 页的图 9.11 和第 173 页的图 10.9
。<小时 />在 2.5 和之前的规格中,答案是:不,没有。您只能通过检查从中继承的类的方法来判断方法是否被重写。
查看@qwerty_so答案以获取更多最新规格。我在下面提出的符号来自2008年之前过时的图表教科书和大学教学。
虽然 UML 标准中未指定,但以下表示法可以指示一个函数何时覆盖另一个函数:
+ toString() : String <<override>>
我复制方法声明,如果我想表明继承的类将覆盖它,在其他情况下只需省略声明。