聚合和组合
聚合(整体和部分可以分开)
聚合关系表示一个整体与部分的关系,通常在定义一个整体类后,再去分析这个整体类的租场结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合关系。
在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。

讯享网
聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成。
与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在。
实例:
public class People{
Car car; House house; //聚合关系中作为成员变量的类一般使用set方法赋值 public void setCar(Car car){
This.car = car; } public void setHouse(House house){
This.house = house; } public void driver(){
System.out.println(“车的型号:”+car.getType()); } public void sleep(){
System.out.println(“我在房子里睡觉:”+house.getAddress()); } }
讯享网
组合(整体和部分不能分开)
组合关系表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之 间具有同生共死的关系。
在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。

与聚合关系一样,组合关系同样表示整体由部分构成的语义;比如公司由多个部门组成。
但组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了。
实例:
讯享网Public class People{
Soul soul; Body body; //组合关系中的成员变量一般会在构造方法中赋值 Public People(Soul soul, Body body){
This.soul = soul; This.body = body; } Public void study(){
System.out.println(“学习要用灵魂”+soul.getName()); } Public void eat(){
System.out.println(“吃饭用身体:”+body.getName()); } }
两者区别
1、依赖性区别

聚合中的两种类(或实体)是可以单独存在的,不会相互影响;被关联的一方可以独立于关联一方,依赖性不强。
相反,组合中的两个实体(或者类)是高度依赖于彼此的,它们之间会相互影响。
2、关系类型的区别
聚合代表了has-a关系,一种单向关系;组合代表了part-of关系。
3、关联强度的不同
聚合是一种弱关联关系;组合是一种强关联关系。
4、生命周期的不同
在聚合关系中的两个类(或实体)的生命周期是不同步;但,在组合关系中的两个类(或实体)的生命周期是同步的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68078.html