是否有在 UML 静态类图中显示重写方法的约定



如果类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>>

我复制方法声明,如果我想表明继承的类将覆盖它,在其他情况下只需省略声明。

最新更新