组合与聚合

一直以来对组合与聚合理解较为模糊,现做记录。

【转】http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html

聚合:表示两个对象之间是整体和部分的【关系】,部分的生命周期可以超越整体。如电脑和鼠标,就可以用一下图形表示:

组合:表示两个对象之间是整体和部分的【关系】,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的。如人和眼睛的关系:

另外两个比较重要的关系是关联和依赖:
关联:简单的可以认为,如果一个类作为了另外一个类的属性,那一定是关联关系。但你要知道,聚合是一种特殊的关联,而组合又是一种特殊的聚合。一般的关联我们认为是平级的、无整体部分关系的,如朋友关系。

依赖:对象之间的临时关系,临时性体现在不超越方法的周期。简单的说,在方法使用到的,如参数类,就一定是依赖关系。

【多用组合,少用聚合】

时间: 2025-01-01 21:36:42

组合与聚合的相关文章

UML依赖,关联,组合,聚合,继承,实现的关系

这几天在看netty的源码想根据源码把netty的UML架构图跟时序图画出来,所以就复习了一下大学时代的一些UML基础知识,首先,我们要搞清楚以下几个概念: 继承:这个就不要多说了,写过java代码的人一般都很容易理解继承这个概念. 实现:这个可能有些初学者有些模糊,因为大家一般会认为实现跟继承是一样的概念,在java里面 继承使用的关键字是extends而实现使用的关键字是implements.说到这里我想大家都明白了吧. 依赖:在理解这个概念之前我们先去百度百科里面看一下依赖的中文解释:依靠

重新认识java(四) — 组合、聚合与继承的爱恨情仇

有人学了继承,认为他是面向对象特点之一,就在所有能用到继承的地方使用继承,而不考虑究竟该不该使用,无疑,这是错误的.那么,究竟该如何使用继承呢? java中类与类之间的关系 大部分的初学者只知道java中两个类之间可以是继承与被继承的关系,可是事实上,类之间的关系大体上存在五种-继承(实现).依赖.关联.聚合.组合. 接下来,简单的分析一下这些关系. 继承(实现) 对于类来说,这种关系叫做继承,对于接口来说,这种关系叫做实现.继承上一篇文章已经详细的讲解过了,至于实现,我想大家也都知道是怎么回事

组合,聚合,关联,依赖,实现,泛化 ---UML关系

关于设计模式,有兴趣的朋友一起探讨下.我的bitbucket的地址 https://bitbucket.org/hinson0/pattern 组合,聚合,关联,依赖,实现,泛化 ---UML关系

03-06组合与聚合_编程

编程 请使用组合或聚合模式解决如下问题: 已知有如下类: // 可以把公历转换为中国农历的日期表达. class ChinaDate { public ChinaDate(java.util.Date d) { //... } public toString() { // 复杂算法 return "五月初三"; //仅仅是模拟,实际上需要复杂计算过程 } } 请写一个 MyDate类,要求具有Date类的全部能力(已废弃功能不计),并且在打印时,输出类似如下格式: 1998年6月8日(

UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合)

UML中类与类,已经类与接口,接口与接口的关系有:泛化(generalization),关联(association),依赖(dependency),实现(realization)这几种. 泛化(generalization)关系时指一个类(子类.子接口)继承另外一个类(称为父类.父接口)的功能,并可以增加它自己新功能的能力,继承是类与类或者接口与接口最常见的关系,在Java中通过关键字extends来表示. 实现(realization)是指一个class实现interface接口(一个或者多

关联与依赖以及组合与聚合之间的区别

最近在准备面试题,看到个问题是关联与依赖之间的关系,脑海里有印象,但还是比较模糊,百度了一番,将结果记录一下,以便后用. 聚合是表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体,比如电脑与鼠标就是典型的聚合关系,用UML图表示如下: 组合是表示两个对象之间是整体与部分的强关系,部分的生命周期不能超越整体,或者说部分不能脱离整体而单独存在,组合关系中的"部分"是不能共享的.人和眼睛就是典型的组合关系,用UML图表示如下: 组合和聚合都是在一个类中包含另一个类的对象,形式上

Objective-C----MRC内存管理 、 自动释放池 、 面向对象三大特性及封装 、 继承 、 组合与聚合

1 MRC练习 1.1 问题 引用计数是Objective-C语言采用的一种内存管理技术,当一个对象被创建在堆上后,该对象的引用计数就自动设置为1,如果在其它对象中的对象成员需要持有这个对象时,则该对象的引用计数被加上1,此时如果该对象被释放,内存管理程序将首先把该对象的引用计数减1,然后判断该对象的引用计数是否为0,由于其它对象在持有该对象时将引用计数加了1,所以此时该对象的引用计数减1后不为0,则内存管理程序将不会释放该对象.直到持有该对象的其它对象也被释放时,该对象的引用计数再次减1,变为

关联、组合、聚合、依赖关系比較

类之间的关系 1. 种类: Generalization(泛化),Dependency(依赖关系).Association(关联关系).Aggregation(聚合关系).Composition(合成关系). 2.  当中Aggregation(聚合关系).Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系. 3.  Generalization(泛化)表现为继承或实现关系(is a).详细形式为类与类之间的继承关系,接口与接口之间的

关联、组合、聚合、依赖关系比较 [转]

原帖地址:http://blog.csdn.net/maybehelios/article/details/2038685 类之间的关系 1. 种类: Generalization(泛化),Dependency(依赖关系).Association(关联关系).Aggregation(聚合关系).Composition(合成关系). 2.  其中Aggregation(聚合关系).Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系. 3