【UML】浅谈关联关系、聚合关系、组合关系的区别

在UML的类图中,一共有6种关系。其中表示聚合的关系,有3种,分别是关联、聚合、组合。这几种类型都是表示的聚合关系,区别是在语义上或者说聚合的紧密程度上、生命周期上,会有区别。下面我会用代码示例来表示三种关系在代码上会有如何的不同之处。

关联关系
类A聚合了类B,但是何时能确保对象a和对象b有has-a的关系不确定,两者的生命周期也没有任何关联。

class Class{
    Student student;

    public Class() {
    }
}

聚合关系
在构造类A时,传入了类B的引用,使得对象a在构造完成后就和b有了明确的has-a的关系,但是依然无法保证两者的生命周期是同步的,用来表示比关联关系聚合的更紧密的一种关系。

class Class{
    Student student;

    public Class(Student student) {
        this.student = student;
    }
}

组合关系
在构造对象a时,在构造方法中生成一个对象b将之聚合。不仅能确保生成对象a后,对象a拥有对象b的引用,而且确保两者有相同的生命周期。通常用来表示b是a不可缺少的一部分的关系,是3种关系中聚合的最近紧密的一种关系。

class Class{
    Student student;

    public Class() {
        this.student = new Student();
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值