美文网首页
聚合与组合的关系

聚合与组合的关系

作者: 汉寿周杰伦 | 来源:发表于2020-05-07 11:37 被阅读0次

一、概述

UML类图中的关系主要是(按照耦合度递增的顺序):

  1. 依赖
  2. 关联
  3. 聚合
  4. 组合
  5. 继承

聚合和组合从本质上讲都是同属于关联关系,但是在耦合度信息封装程度上有差异。

二、聚合和组合的类图

以网吧为例,一个网吧有多台电脑,一台电脑又是由很多的硬件+外设组成,所以他们的之间的关系大致如下图所示:

1. 聚合

聚合类图

反映在代码上就是:

public class InternetBar{
  private List<Computer> computers;

  public InternetBar(List<Computer> comps){
    this.computers = comps;
  }
}

2. 组合

组合类图

反映在代码上就是:

public class Computer{
  private Cpu cpu;

  public Computer(){
    this.cpu = new Cpu();
  }
}

三、差异比较

1. 代码层面

a. 聚合关系的类含有另一个类作为参数
网吧类(InternetBar)的构造函数只需要传入一个电脑的列表(List<Computer>),而这些个电脑可以独立于网吧而存在。

b. 组合关系的类含有另一个类的初始化
电脑类(Computer)的构造函数内部初始化了一个新的Cpu对象,这两个类紧密的偶合在一起,他们有相同的生命周期,Cpu类不能脱离Computer类单独存在。

2. 信息封装层面

a. 聚合关系中
客户端可以同时了解到网吧类和电脑类,他们彼此之间是独立的。

b. 组合关系中
客户端只能够识别电脑类,但无法知晓Cpu类的存在,因为Cpu类被严密地封装在Computer类中。

相关文章

  • 五分钟看懂UML图

    一个完整的案例 聚合关系 组合关系 组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。比...

  • UML图的基础

    一、 基础关系 依赖关系依赖关系 实现关系实现关系 继承关系继承关系 组合关系组合关系 聚合关系聚合关系 关联关系...

  • 聚合与组合的关系

    一、概述 UML类图中的关系主要是(按照耦合度递增的顺序): 依赖 关联 聚合 组合 继承 聚合和组合从本质上讲都...

  • C++里的组合与聚合关系

    转 : C++里的组合与聚合关系 组合关系(Composition):部分和整体之间具有相同的生命周期,当整体消亡...

  • UML中类间关系(泛化、实现、依赖、关联、聚合、组合)

    UML中几种类间关系:泛化、实现、依赖、关联、聚合、组合 关联关系关联(association)关系表示类与类之间...

  • UML类图

    借用网上的一张图,足矣涵盖了所有关系。需要注意的是聚合与组合之间的区别,都是整体与部分的关系,但聚合中的个体离开整...

  • 组合模式(Composite)

    在探讨Java组合模式之前,先要明白几个概念的区别:继承、组合和聚合。 继承是is-a的关系。组合和聚合有点像,有...

  • 七个原则7-合成(组合)/聚合复用原则

    七个原则7-合成(组合)/聚合复用原则 定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的 聚合 ha...

  • UML(unified modeling language)常用

    继承 实现 关联 依赖 组合 聚合 是醉常用的统一建模语言常用的类关系个人理解:聚合和组合属于关联的子类,聚合和组...

  • (转)UML类图

    UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合) UML中类与类,已经类与接口,接口与接口的关系有:泛化...

网友评论

      本文标题:聚合与组合的关系

      本文链接:https://www.haomeiwen.com/subject/crmoghtx.html