如何在UML类图中显示私有继承关系

13

在C++中,由于私有继承不被视为一种is-a关系,因此应该如何在类图中展示它?如果将其展示为has-a关系,那么如何区分组合和私有继承?


5
这是一个非常好的问题。问题在于私有继承是一种反讽,这就是为什么它不是UML字典的一部分。我会将其显示为“具有”并注明其为私有继承。另一个选择是重构您的设计以避免使用私有继承:必须使用它的情况很少,因此普通的“具有”关系可能完全可以胜任。 - Sergey Kalinichenko
1个回答

4
应该采用组合关系(子类侧为实心黑色菱形),原因如下:
  • 私有继承意味着“以…为基础实现”,但在这方面它可以简单地被视为“拥有”关系。
  • 子类的实例明显拥有对象的基类部分,并且拥有权不与任何其他对象共享。

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