A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看毕老师的视频,觉得这个东西老师没详讲一直不懂,聚合和组合到底咋区分?那些情况用?

7 个回复

倒序浏览
聚合是关联关系的一种特例,他体现的是整体与部分 拥有的关系。他们可以具有各自的生命周期,是可以分离的
比如学校与学员,公司和员工。

组合也是关联关系的一种特例,同样体现的也是整体与部分。但是它们是不可以分离的。整体的声明周期结束也就意味着部分的声明周期结束。
比如人和人的脑袋。

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
杨天皓 发表于 2012-6-5 00:00
聚合是关联关系的一种特例,他体现的是整体与部分 拥有的关系。他们可以具有各自的生命周期,是可以分离的
...

我也想问下,   这个有什么作用??   也就是我们怎么去用它;   
回复 使用道具 举报
杜俊彪 发表于 2012-6-5 00:02
我也想问下,   这个有什么作用??   也就是我们怎么去用它;

在实际写代码时组合方式一般会这样写:
A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。

聚合方式则是这样:
A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它
传给它的这个对象不是A类创建的。
回复 使用道具 举报
聚合就是组合的加强
回复 使用道具 举报
本帖最后由 张洁 于 2012-6-5 11:21 编辑

虽然都有合,但是还是有区别的哈~
定义上有区别:
聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。
           如电脑和鼠标的关系。
组合:表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的。
           如人和眼睛的关系

组合是聚合的变种,加入了一些重要的语义。也就是说,在一个组合关系中,一个对象一次就只是一个组合的一部分,“整体”负责“部分”的创建和破坏,当“整体”被破坏时,“部分”也随之

当然名字这么像肯定有联系:
组合是聚合的变种,加入了一些重要的语义。
也就是说,在一个组合关系中,一个对象一次就只是一个组合的一部分,“整体”负责“部分”的创建和破坏,当“整体”被破坏时,“部分”也随之消失~
回复 使用道具 举报
1:组合和聚合,毕老师没讲是因为现在还用不到。
上学期讲统一建模语言,在Rational Rose下用了不少。不过这个在初级使用中是不会用到的,据师兄说,一般做到架构会用得比较多。

2:聚合的UML表示法是  空心菱形+实线条+箭头,关系是  owns a ... (用英文好理解得多,个人认为,记住英文就行了)
   聚合是强版本的关联,被聚合的对象可以再被别的对象关联,所以聚合对象是可以共享的。
   百度解释:我的家和我之间具有一种强烈所属关系,我的家是可以分享的,而这里的分享又可以有两种,其一是聚合键的分享,比如你和你弟弟对
   这个家有着同样的强烈关联,二是聚合与关联的分享,如果你朋友来家里吃个便饭,估计也不会给他配一把钥匙。
3:组合:UML表示:实心菱形+实线+箭头, 关系  is a part of...   (例子就不举了,英文本身含义就是最好的解释。)

初级阶段,不必掌握,稍微知道一下就好,如果对统一建模语言感兴趣,你可以去看看相关的书。(张孝祥老师在交通灯里有画过类图,所以你看看书也行)
回复 使用道具 举报
杨天皓 发表于 2012-6-5 00:12
在实际写代码时组合方式一般会这样写:
A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时 ...

内部类是不是组合的一种方式?组合还有其它的方式吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马