浅谈UML中的聚合与组合

浅谈UML中的聚合与组合大家都知道 UML 的类图中一般包含五种关系即关联聚合组合泛化依赖有些人可能会感觉组合跟聚合有点难区分说难其实是相对其他几种关系而言实际上想分清这两种关系一点也不难聚合跟组合其实都属于关联只不过它们是两种特殊的关联因为本是同根生所以它们之间难免会有相似之处下面让我们一起来看一下它们之间有何不同聚合与组合的概念相信不用我在此赘述大家就已经了解了下面直接上例子

欢迎大家关注我的新书《Spring Boot趣味实战课》

 浅谈UML中的聚合与组合

 京东 当当 天猫

 

大家都知道UML的类图中一般包含五种关系即  关联 聚合 组合 泛化 依赖  有些人可能会感觉组合跟聚合有点难区分 说难其实是相对其他几种关系而言 实际上想分清这两种关系一点也不难 

聚合跟组合其实都属于关联 只不过它们是两种特殊的关联 因为本是同根生 所以它们之间难免会有相似之处 下面让我们一起来看一下它们之间有何不同

聚合与组合的概念相信不用我在此赘述大家就已经了解了 下面直接上例子

程老师的《大话》里举大那个大雁的例子很贴切 在此我就借用一下 大雁喜欢热闹害怕孤独 所以它们一直过着群居的生活 这样就有了雁群 每一只大雁都有自己的雁群 每个雁群都有好多大雁 大雁与雁群的这种关系就可以称之为聚合 另外每只大雁都有两只翅膀 大雁与雁翅的关系就叫做组合 有此可见 聚合的关系明显没有组合紧密 大雁不会因为它们的群主将雁群解散而无法生存 而雁翅就无法脱离大雁而单独生存——组合关系的类具有相同的生命周期

聚合关系图:

浅谈UML中的聚合与组合

组合关系图:

浅谈UML中的聚合与组合

从从代码上看这两种关系的区别在于:

构造函数不同

雁群类:

    public  class GooseGroup {         public Goose goose;         public GooseGroup(Goose goose)         {             this.goose = goose;         } }

大雁类:

 public class Goose { public Wings wings; public Goose() { wings=new Wings(); } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220846.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:30
下一篇 2026年3月17日 下午7:31


相关推荐

  • HashMap遍历的四种常用方式「建议收藏」

    HashMap遍历的四种常用方式「建议收藏」古人云:温故而知新。最近闲来无事就去翻阅了一下之前的一些基础java知识点。本想着随便看看,然而就发现有了意外收获。比如本文所讲HashMap遍历的四种常用方式。大伙们一起学习一起进步,记得点赞关注以示鼓励哈!!!准备工作首选我们先准备一个HashMap。publicclassTest1{publicstaticvoidmain(String[]args){Map<String,String>map=newHashMap<St

    2025年10月12日
    3
  • 数论基础——欧拉函数

    数论基础——欧拉函数欧拉函数 就是对于一个正整数 n 小于 n 且和 n 互质的正整数 包括 1 的个数 记作 n 欧拉函数的通式 n n 1 1 p1 1 1 p2 1 1 p3 1 1 p4 1 1 pn 其中 p1 p2 pn 为 n 的所有质因数 n 是不为 0 的整数 1 1 唯一和 1 互质的数就是 1 本身 所以 根据通式我们可以打出以下代码 lleular lln

    2026年3月26日
    2
  • 外网访问内网服务器配置方法

    外网访问内网服务器配置方法前提需要有固定 IP 路由器必须得是通过固定 IP 上网 才能通过外网访问内网服务器登录路由器在地址栏输入 192 168 1 1 或 192 168 0 1 初始密码为 admin 若忘记密码请重置路由器 这里以 TP LinkWR842N 为例 点击应用管理选择虚拟服务器界面不一样的话 一般在转发规则一栏可以找到虚拟服务器 在虚拟服务器中点击添加 常用服务和协议类型不知道可以不填 外部端口和内部端口可以自行填

    2026年3月20日
    2
  • 同花顺

    同花顺

    2026年3月12日
    2
  • ConcurrentHashMap源码分析(JDK8版本)

    ConcurrentHashMap源码分析(JDK8版本)注:本文源码是JDK8的版本,与之前的版本有较大差异ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架Spring的底层数据结构就是使用ConcurrentHashMap实现的。与同是线程安全的老大哥HashTable相比,它已经更胜一筹,因此它的锁更加细化.

    2022年6月24日
    33
  • 从源码快速安装 openclaw

    从源码快速安装 openclaw

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号