首先我要告诉你,在OO里一定要注意语义,也就是上下文环境决定你的这句话(这个类/对象/操作/属性/关系等等的一切)到底是什么意思。 举个例子吧! 一般而言,汽车与门有关联关系,因为门是汽车的一部分,但是只要部分门才是汽车门,房门显然不是!汽车没有门也是可能的,那是坏车!坏车也是有的嘛! 对于汽车制造厂的管理软件而言,汽车与门就有聚合关系,因为他们只考虑汽车门,而且,每两汽车必须有4张门(简单假设)。无论如何,汽车制造厂都会为每辆 车装配足够的门,除非他们不想吃饭了!当然,你也可以说,没有配车门的车是生产失败或者未装车门的车,对不对?这就是语义,从这个角度,汽车与门又成为关 联关系了! 关联表示二者有结构上的关系,聚合表示缺了他就不行的关联关系!(当然还有强聚合、弱聚合!) 仅当类之间存在组装关系(即一个类由其他的类组成,或者“部分”游离于整体之外就会显得不完全)时才能使用聚合关系。以订单为例:如果订单为“空”或不包含任何内容,那么订单就毫无意义。对于所有聚合关系来说也是如此:部门必须有雇员,家庭必须有家庭成员,等等。 如果类脱离其他类所形成的环境后仍可能有自己的身份,或者类不是某个更大整体的部分,则应使用关联关系。此外,在没有把握的情况下,关联关系将更为合适;而聚合关系一般比较明显,所以选择聚合关系仅仅是为了更加明确。这对建模工作的成败并不具有决定性的意义。 耦合表示的是几个模块相互影响。相互很关键!如果是单向的影响,那就是依赖关系,是正常而必须的耦合。如果是相互依赖,就是比较差劲的耦合。 在类里面聚合表现为类与属性方法的关系 耦合表现为类与类