UML类图中聚合和组合的区别详解(含代码) 您所在的位置:网站首页 组合关系和聚合关系在语音和语法中的体现是 UML类图中聚合和组合的区别详解(含代码)

UML类图中聚合和组合的区别详解(含代码)

2024-06-02 13:07| 来源: 网络整理| 查看: 265

接上一篇文章:https://blog.csdn.net/HNUchaowang/article/details/108311858 说一句题外话,就是讨论一下为什么要去学习什么类图呢?要去理解这么多关系呢? 我觉得有如下两个作用吧: 第一,最实在的,程序员肯定少不了写设计文档,设计文档肯定包含类图; 第二,这个理解类与类之间的关系,是学习设计模式的基础。设计模式是什么,那就是相当于“降龙十八掌”和“独孤九剑”的武功秘籍啊,一招一式都是大佬多年来提炼的精髓。 话不多说,切入正题。

聚合(has-a)和组合(contains-a)都属于依赖关系 ,组合又称之为强聚合,从字面意思理解组合关系肯定比聚合关系的关联关系更强,没错,就是这样。

聚合 举一个简单的例子。比如 一个乐队(Class Band)通常由主音吉他,节奏吉他,低音吉他(Class Bass),架子鼓,键盘,萨克斯,等等组成。但是,很多街头乐队通常没有低音吉他,我把乐队和低音吉他之间的关系称之为聚合,代码如下:

Public Class Band { private Bass bass; public Band(Bass bass) { this.bass = bass; } }

组合 一个乐队如果没有主音吉他,那么这个乐队也就不叫乐队了,所以我称乐队(Class Band)和 主音吉他(Class Guitar)的关系为组合, 乐队和主音吉他的关系就相当于人和嘴巴的关系,你可以慢慢体会哈,这就是组合,代码如下:

Public Class Band { private Guitar guitar; public Band() { guitar = new Guitar(); } }

聚合和组合区别: 从代码层面来看:两个的生命周期是不一样的,聚合可能被实例化也可能没有被实例化;而组合是一开始就被实例化了,随着宿主对象销毁而销毁; 从两两之间的重要性来看: 可以这么理解 贝斯对乐队的重要性 和 主音吉他对乐队的重要性,乐队没有了bass会失去低频段,但是乐队失去了主音吉他大家可以想想那是什么情况呢?



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有