黑马程序员技术交流社区

标题: 什么叫聚集关系?举个例子说明一下 [打印本页]

作者: 想学跑的猪    时间: 2013-4-11 20:43
标题: 什么叫聚集关系?举个例子说明一下
今天类与类之间除了继承关系还有聚集关系,不太明白什么意思?

作者: HM黄祥为    时间: 2013-4-11 21:20
首先说明一点 继承是面向对象思想的一个特征  而聚集是描述事物之间的关系通常在UML图中出现,常见的几个关系有  关联、依赖、聚集,  这些和继承是不同的概念
聚集表示整体与部分的关系,例如自行车 和 自行车的轮胎  就属于聚集关系
作者: 胡国彬    时间: 2013-4-11 21:32
应该是聚合吧.java有聚合和组合
组合的意思就是,类A中有类B的引用,并且是在A的对象消亡的时候,B的对象也接着消亡,因为B的引用只在A中,这就是组合.
聚合就是,类A中有类B的引用,但是是从别的地方传过来的,所以,当A消亡时,B的引用在别的地方还会有,所以B的对象不会消亡.

例如
组合:
Class A{
B b = new B();
}

聚合:
Class A{
B b;
public void setB(B b){
this.b = b;
}
}

有不懂可以继续问。
作者: huima    时间: 2013-4-11 21:58
当系统A被加入到系统B中,成为系统B的组成部分时,系统B和系统A之间为聚集关系.
例如自行车和响铃的聚集关系
Bicycle类的源程序。
public class Bicycle{
private Bell bell;

public Bell getBell(){
return bell;
}
public void setBell(Bell bell){
this.bell=bell;
}
/** 发出铃声 */
public void alert(){
bell.ring();
}
}
在Bicycle类中定义了Bell类型的成员变量,Bicycle类利用自身的bell成员变量来发出铃声,这和在Person类中定义了Bicycle类型的成员变量,Person类利用自身的bicycle成员变量去上班很相似。
作者: lyg2013    时间: 2013-4-12 00:46
聚集是指整体与部分是同时存在的,某类型的整体必须有某类型的部分构成,某类型的部分只能构成某类型的整体,整体和部分之间是一种非常密切的关系,比如书籍与书的关系,书的集合只能是书籍,书籍只能是书的集合。
作者: zhuiyi0819    时间: 2013-4-14 00:45
区分java中的依赖、关联、聚集关系

依赖:
依赖体现在类A对象中并不需要存在有关B类型的对象属性,而是在使用时,直接
实例化B类调用相关的业务方法来完成整个业务操作,打个比方:当类A对象一个人
在do something的时候,它反省当前的task难以完成,于是乎它直接拉一个类B对象
(实例化一个类B);并要求类B对象协助它完成当前的task。完成task后,类A对象
也不负责类B对象的“食宿”和“薪水”(由虚拟机去进行处理)。

关联:
关联与聚集非常相似,但其实仍然存在不同的地方,首先看看相似的地方:关联与
聚集相似的地方是类A对象中均存在类B对象属性。
不同点可以从语义上进行区分:关联关系中存在有一定的主次关系,并且这种主次
关系可有可无,仍然打个比方:一个客户在淘宝上有N个订单,那么客户对象中就会
存在一个ArrayList<订单>类型的属性,它们形成了一个一对多的关联关系,但是也
存在有无关联的情况,由于某个客户是刚注册的,所以他并还没有订单信息,因此
可以看出关联关系中存在有一定的主次关系,并且可有可无的特性(可以主次关系
这个词用得不足够恰当,但是这样也蛮好理解的)。

聚集:
而聚集则不然,仍然用个比方来进行说明:一个用来煲水的茶壶,由一个底座和壶
组成,缺一不可,否则只有底座也煲不了水,只有壶也不能加热。由此可以看出,
茶壶对象由底座对象和壶对象组合而成,缺一不可,而且聚集中没有类似于订单
与客户之间的主次关系。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2