2

假设我有一个汽车类和油漆类(由不同的颜色组成)。现在就面向对象的设计而言,这两个类之间的关系可能是组合或聚合。首先我认为它是组合,然后我认为它是聚合,因为即使汽车类被破坏,油漆也可以独立存在。我在这儿想吗?

4

3 回答 3

1

我会说这取决于您的模型的上下文。你的 Paint 类具体代表什么?它是“特定于那辆车的油漆工作”吗?如果是这样,它是那辆车的一部分,将被视为组成。如果把paint作为一个独立的概念,一个实例可以应用到多辆汽车上,那么一辆车有-一个Paint实例,就可以认为是聚合。

于 2013-05-02T19:09:15.843 回答
0

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

例如,如果您实际上是在谈论应用的油漆,它将是构图,因为如果没有接收者(例如汽车),它就无法重复使用/重新应用/拥有油漆。如果您的系统中没有独立的绘制对象,它也应该是一个组合。

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

于 2013-05-02T19:11:20.767 回答
0

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

但是,如果您考虑汽车和发动机之间的关系,并且如果您卸下发动机,则汽车将无法移动。所以这将是组合。

于 2016-03-28T18:18:11.187 回答