UML中聚合和组合的区别(UML中何时使用指针及如何表示指针)

本文探讨了UML类图中组合和聚合的概念,通过实例展示了如何区分两者。组合关系强调所有者管理对象生命周期,当组合对象销毁时,其所包含的对象也会被销毁。而聚合关系中,所有者并不负责所拥有对象的生命周期管理。理解这一区别有助于清晰地表达类之间的关系。
摘要由CSDN通过智能技术生成
  1. 何时使用组合或聚合

class A {
    A();
    ~A();
private:
    B* attribute;
}

此例中classA聚合/组合classB。
描述:

  • 聚合

    A类空钻石,用实线连接B

  • 组合

    A类实心钻石,用实线连接B

  1. 区别

    以前学的讲解,组合:整体和部分的关系,部分无法脱离整体存在;聚合:也是整体和部分的关系,但是部分可以脱离整体存在。可是一直没有个明确的界线。直到搜索UML中指针的表示时看到这篇问答

https://www.codeqq.com/question/qvRrM1kv.html

使用代码中的生命周期来描述才让我明白;但是问答里可能讲的不对,毕竟学UML类图的应该都是有代码基础的,为什么老多教程要绕一圈去描述?
总结一下问答内容:组合和聚合的区别是在引用对象的生命周期上。组合中,所有者必须管理所拥有对象的生命周期,类A的对象被释放时,A中的attribute指向的B对象已经被A的函数释放,或被析构释放。聚合中,所有者不负责管理所拥有的对象的生命,类A的对象被释放时,A不会管attribute指向的B对象是否还存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值