构成与聚合

时间:2013-05-02 18:59:57

标签: oop aggregation composition

让我们说我有一个汽车类和油漆类(由不同的颜色组成)。现在在面向对象设计方面,这两个类之间的关系可以是组合或聚合。首先我认为这将是组合,然后我认为这将是聚合,因为即使汽车类被破坏,油漆也可以独立存在。我在这里想什么?

3 个答案:

答案 0 :(得分:1)

我会说这取决于你的模型的上下文。 Paint类具体代表什么?它是“特定于该车的油漆工作”吗?如果是这样的话,那就是汽车的部分,并且会被视为构图。如果它是一个独立的概念,并且实例可以应用于多个汽车,那么汽车有一个 Paint实例,它将被视为聚合。< / p>

答案 1 :(得分:0)

你的例子有点尴尬,但你问的问题正是你必须回答的问题才能得到答案。没有人,但你可以回答你的系统是正确的。

例如,如果您实际上正在讨论应用的涂料,它将是合成的,因为它不能重复使用/重新涂抹/没有收件人(例如汽车)。如果在你的系统中没有使用独立的绘画对象,它也应该是一个合成。

另一方面,如果油漆是喷雾容器,它可以在没有汽车概念的情况下存在,并且可以应用于不同的汽车。

答案 2 :(得分:0)

这取决于具体情况,它会聚合IMO,因为汽车与其油漆之间没有很强的关系,如果油漆被移除,它实际上并不影响汽车的功能,

但如果你想到汽车和发动机之间的关系,如果你拆下发动机,汽车就无法移动。所以这将是作文。