转自http://topic.csdn.net/u/20090414/20/4d6f98c7-94aa-4e6c-be7c-88d9e3e15bdc.html
聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。
我想举个通俗的例子。
你和你的心脏之间是composition关系(心脏只属于你自己)
你和你买的书之间是aggregation关系(书可能是别人的)
你和你的朋友之间是association关系
分享到:
相关推荐
4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4.java聚合关系.zip4....
本文将深入探讨面向对象中的四种基本关系:依赖、关联、聚合和组合,以及它们在实际应用中的含义和用例。 ### 一、依赖(Dependency) 依赖是最弱的一种关系,表示一个类依赖于另一个类的接口或实现,但这种依赖通常...
聚合(Aggregation)是一种单向关系,聚合与关联的区别在于聚合的两个类之间的关系在概念层次上不是一个级别的。例如,Car 类和 Engine 类、Wheel 类之间的关系就是聚合关系。 ```csharp public class Car { ...
今天,我们将探讨UML类关系中的四种基本关系:依赖、关联、聚合和组合。 依赖(Dependency) 依赖关系是指一个类使用另一个类的对象或服务的关系。依赖关系是一种弱关系,表示一个类需要另一个类的支持,但不拥有...
组合关系也是关联关系的一种特例,表达的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。这种关系表达的是整体与局部间的关系,但此时整体与局部是不可分的,整体的生命周期完毕也就意味着局部的生命...
### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 统一建模语言(UML)作为一种图形化的标准化建模语言,为软件开发提供了强大的可视化工具,帮助开发者理解、设计和记录软件系统。UML...
### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...
本文将深入探讨UML类关系中的四种关键概念:依赖、关联、聚合和组合,以及它们在软件设计中的应用。 1. 依赖(Dependency) 依赖是UML中最弱的一种关系,表示一个类(或对象)的实现或行为需要另一个类(或对象)的...
例如,Windows 的窗口和窗口上的菜单就是一种组合关系。窗口是整体,菜单是窗口的一部分。如果窗口不存在,菜单也就不存在了。 区别 1:组合是比聚合更强的关联形式 组合是指带有很强的拥有关系且整体与部分的生命...
UML 中的组合关系也是关联关系的一种特例,他体现的是一种 contains-a 的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的...
UML关系(泛化,实现,依赖,关联(聚合,组合))
在UML中,有六种主要的类间关系:继承、实现、依赖、关联、聚合和组合。理解这些关系对于设计高质量的软件架构至关重要。 1. **继承**: 继承是类与类之间的一种层次结构关系,表示一个类(子类)可以从另一个类...
例如,汽车与发动机之间就是一种组合关系,汽车包含发动机,且汽车的生命周期结束意味着发动机的生命周期也结束。 **聚合** 类似于组合,但相对较弱。它表示的是“has-a”关系,但整体与部分的生命周期并不完全绑定...
《ArcGIS API for JavaScript 4.x 聚合技术详解》 在GIS(地理信息系统)领域,ArcGIS API for JavaScript 是Esri公司提供的一款强大的Web GIS开发工具,它允许开发者在网页上创建交互式的地图应用。本文将深入探讨...
语言学纲要语法的组合规则和聚合规则 语言学纲要语法的组合规则和聚合规则是语言学中非常重要的一个概念。组合规则是指词语在组合成新的词语时所遵循的规则,聚合规则是指词语在组合成新的词语时所遵循的规则。这些...
几种类间关系:继承、实现、依赖、关联、聚合、组合。可做为开发设计时速查手册。
标题中的“一种具有运营商特色的用户好友关系聚合方法及聚合平台”揭示了这个技术主题的核心,主要涉及的是在通信行业中,如何利用运营商的数据和资源来实现用户好友关系的整合与管理。这种聚合方法可能涉及到大数据...
聚合关系是关联对象的一种方式,它表示一个对象可以由多个其他对象组成,这些对象称为它的"部分"或"成员"。在更通俗的解释中,聚合关系就像一个班级由多个学生组成,或者一辆车由多个部件构成。这种关系是关联关系的...
1. **说明.doc** - 这可能是一个文档,详细解释了ATL中组合与聚合的概念,以及如何在实际代码中应用这两种技术。文档可能会涵盖如何创建和使用`CComAggObject`和`CComObject`,以及如何使用智能指针管理内部对象。 ...