Zio*_* TM 3 oop inheritance uml class-diagram composition
对于 UML 类图,如果一个类 A 与另一个类 B 具有组合关系,它是否像继承一样工作?我知道类A不能没有类b而存在,但是类A继承了类B的属性和方法吗?
Chr*_*phe 11
在面向对象设计中,一个常见的建议是优先选择组合而不是继承。这可能会误导人们认为这两个不同概念之间存在联系:
更具误导性的是:一般 OO 文献中使用的“组合”通常对应于简单的 UML 关联,并且不应被理解为像 UML“组合”那样具有限制性。
如果类D继承自 B,则意味着D 专门化了更一般的概念 B:
B(无需在图中重复), B它可以具有与 、和不相关的附加属性和操作B不同的操作。D也是类的对象B。这就是为什么我们谈论“是”关系。 简单的例子(仅用于说明):
如果类B“组合”(具有组合关联)C,则意味着该对象可以在其生命周期内B与不同的对象关联。CAnf 类的对象C:
B它的对象。这就是为什么我们有时会说“有”关系; B其拥有的对象 将无法生存。注意:UML 组合是关于排他所有权的。在面向对象的文献中,术语“组合”通常指没有任何所有权甚至排他性的较弱关联。
简单的例子(仅用于说明):