有一个类A
,一个IB
接口和一个实现B
接口的类IB
。类A
的类型为IB
。在程序执行期间,此字段的值成为类B
的实例。在这种情况下如何绘制类图? A
和IB
之间是否存在“组合”关系,A
和B
之间是否存在组合关系,或者仅仅是依赖关系?
这取决于您要赋予构造的语言和/或语义。
在具有基于引用的类的语言中,例如java:
B
的实例总是可以共享的,因此在A对象死亡之后仍然可以继续存在。这与UML中的构成矛盾。 在具有基于值的类(如C ++)的语言中:
unique_ptr<IB>
,则表示构图。其他指针可能允许共享对象,因此正常关联将是更好的表示。 但是UML不是一种编程语言。这是一种建模语言。因此,您应该在模型中表达所需的语义。如果不希望共享IB对象,并且不应该超过IB对象,则适当的组合将显示此意图。如果没有,请保持打开状态。