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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天类与类之间除了继承关系还有聚集关系,不太明白什么意思?

5 个回复

正序浏览
区分java中的依赖、关联、聚集关系

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

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

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

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
聚集是指整体与部分是同时存在的,某类型的整体必须有某类型的部分构成,某类型的部分只能构成某类型的整体,整体和部分之间是一种非常密切的关系,比如书籍与书的关系,书的集合只能是书籍,书籍只能是书的集合。
回复 使用道具 举报
当系统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成员变量去上班很相似。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
应该是聚合吧.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;
}
}

有不懂可以继续问。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
首先说明一点 继承是面向对象思想的一个特征  而聚集是描述事物之间的关系通常在UML图中出现,常见的几个关系有  关联、依赖、聚集,  这些和继承是不同的概念
聚集表示整体与部分的关系,例如自行车 和 自行车的轮胎  就属于聚集关系

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

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