UML继承-为什么箭头的方向是从子类指向父类?

17

图片:类B继承了类A。那么为什么箭头从B指向A?

在上面的图片中,类B继承了类A。如果B继承了A所有的方法,那么箭头不应该从A指向B吗?在我看来,如果箭头是从A指向B,这会更有意义。

箭头方向为什么是这样而不是相反的?我想听听解释。谢谢。

编辑:我知道这是UML设计的方式,并且上面的图表符合UML规则,但我的问题是为什么UML让箭头走这个方向。


2
我投票支持保持开放;这不是一个观点问题,而是一个历史问题。在决定和标准发布之前,这是一个观点问题,而现在已经成为历史。 - arnt
2个回答

21

原因是在您的情况下,B 引用(或者说调用)了 A。在 A 中没有关于 B 的信息,所以没有从 A 到 B 的箭头,而是相反的。

UML 实体图并不涉及谁“得到”什么,而是涉及谁引用 / 知道谁。


1
谢谢!我现在明白了。当我想到这个问题时,如果你用Java实现它,你会写"class B extends A"而不是反过来。A不会受影响 - 它不会“知道”这一点。 - user194878
1
非常好的答案,特别是“在A中没有关于B的知识”这部分。 - ChumboChappati
我认为另一种看待这个问题的方式是使用数学概念中的“函数”、“态射”,甚至是一般性的“映射”。1对m或1对1的关系对于该关系成为“态射”是必要的。在类型继承中,一个超类可以有一个或多个子类。因此,为了使映射满足成为“态射”的数学条件,子类必须是定义域,即映射箭头的起点-箭尾指向的地方。而值域则是超类。 - Smart Humanism

0

这就是UML的设计方式。箭头指向一般类,特殊类继承并添加/替换功能。


1
谢谢您的回答。但是箭头为什么是这样的呢?背后的逻辑是什么?有没有相关文档或者资料可以阅读一下呢?谢谢。 - user194878
1
当然可以:https://www.omg.org/spec/UML/About-UML/ 是关于整个事情的,如果你需要一些更轻松的摘要,可以访问https://www.uml-diagrams.org。 - qwerty_so

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