组成接口时,组成是否适用于已实现的类?

问题描述 投票:1回答:1

有一个类A,一个IB接口和一个实现B接口的类IB。类A的类型为IB。在程序执行期间,此字段的值成为类B的实例。在这种情况下如何绘制类图? AIB之间是否存在“组合”关系,AB之间是否存在组合关系,或者仅仅是依赖关系?

uml
1个回答
0
投票

这取决于您要赋予构造的语言和/或语义。

在具有基于引用的类的语言中,例如java:

  • B的实例总是可以共享的,因此在A对象死亡之后仍然可以继续存在。这与UML中的构成矛盾。
  • 聚合将允许B被共享。但是不幸的是,聚合语义在UML中没有很好地定义,因此是模棱两可的。
  • 正常关联将是正确且明确的。

在具有基于值的类(如C ++)的语言中:

  • 该组成将适当地代表对象的联合生命周期
  • 但是,在您的情况下,IB将是多态的。多态将需要一个指针。如果使用unique_ptr<IB>,则表示构图。其他指针可能允许共享对象,因此正常关联将是更好的表示。

但是UML不是一种编程语言。这是一种建模语言。因此,您应该在模型中表达所需的语义。如果不希望共享IB对象,并且不应该超过IB对象,则适当的组合将显示此意图。如果没有,请保持打开状态。

© www.soinside.com 2019 - 2024. All rights reserved.