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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马东华 初级黑马   /  2012-4-23 16:28  /  2500 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问一下大家,谁能解释一下聚集,聚合,组合,以及之间的关系,谢谢

5 个回复

倒序浏览
聚合(聚集):指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。
组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
聚合和组合的区别在于:
    聚合关系是“has-a”关系,组合关系是“contains-a”关系;
    聚合关系表示整体与部分的关系比较弱,而组合比较强;
    聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
聚合∶分散的聚集到一起 组合∶几个独立部分组成的整体

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。
实际写代码时组合方式一般会这样写:
A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。
聚合方式则是这样:
A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它
传给它的这个对象不是A类创建的。
现实生活中:
人和人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。
class Hand{
}
class Computer{
}
组合:
class Person{
private Hand hand;
public Person(){
hand = new Hand();
}
}
聚合:
class Person{
private Computer computer;
public setComputer(){
computer = new Computer();
}
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
liqian 发表于 2012-4-23 16:38
聚合(聚集):指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出 ...

谢谢,非常感谢
回复 使用道具 举报
本帖最后由 韩新凯 于 2012-4-23 17:02 编辑
liqian 发表于 2012-4-23 16:38
聚合(聚集):指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出 ...


那is a呢?聚集和聚合好像不是一个概念把?我对这部分不是很懂。
回复 使用道具 举报
赵嘉男 发表于 2012-4-23 16:47
比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引 ...

谢谢,懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马