理解为什么继承箭头指向相反的方向

18

在类图中,我通常看到类A扩展自类B,箭头指向类A。例如,这里。这一直让我感到困惑。为什么箭头不指向类B呢?

enter image description here

2个回答

32

在这些图表中,UML的使用方法是错误的。箭头头部必须是一个三角形(而不是开放式的),指向另一个方向,并且被称为"realizes"而不是"implements"。因此,如果我没有完全误解图表,那么作者(无论是图表的作者还是创建它们的软件的作者)显然不知道如何正确使用UML。

这个图表中(通过谷歌搜索找到),您可以看到一个类"SearchService"正确实现(implement)了接口"SiteSearch"的可视化。

Interface Realization

下一个图表中,几个类通过泛化(专业化、扩展)类"Account"。

Generalization

您可以在这个网站上获得概述(乍一看看起来正确)。如果您想确保,应查阅规范(在那里找到pdf下载)。


为什么称之为实现和泛化? - 1.21 gigawatts
1
UML的作者试图使用更通用的术语。而“implements”可能会与在编程语言中实现UML模型的实现混淆。“extending”对于UML并不总是正确的。一个更通用的类甚至可以被子类限制。 - Christian
在同一张图中,用什么术语描述客户端与访问者和元素对象之间的关系是正确的? - emeraldjava
哎呀,这个UML又有错误了,很遗憾。它应该使用一个简单的箭头(->),而不是一个填充的箭头来表示只能单向导航的关联(也称为引用)。我应该花更多的时间寻找一个漂亮的图表... - Christian
客户端和元素之间的关系怎么样?那个箭头是实线而不是虚线。 - Ewoks
显示剩余3条评论

3

我认为混淆的原因来自人们对英语语法微妙之处的理解方式不同。

有些人可能倾向于将“不方便”但符合UML标准的标记“extend”完成为“extends”,而其他人在查看或设计图表时将其完成为“extended”。因此,产生了不同的解释。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接