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

原创 2008年01月12日 00:10:00

类之间的关系

1. 种类: Generalization(泛化)Dependency(依赖关系)Association(关联关系)Aggregation(聚合关系)Composition(合成关系)

2.  其中Aggregation(聚合关系)Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系。

3.  Generalization(泛化)表现为继承或实现关系(is a)。具体形式为类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系。

4.  Association关联关系表现为变量(has a )。类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A依赖于B,则B体现为A的全局变量。关联关系有双向关联和单向关联。双向关联:两个类都知道另一个类的公共属性和操作。单向关联:只有一个类知道另外一个类的公共属性和操作。大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。

   

5.  Aggregation(聚合关系) 是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的“拥有”关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果AB聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

 

 

6.  Composition(组合关系)是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。如果AB组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。

7.  Dependency(依赖关系)表现为函数中的参数(use a)。是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。

 

8.          Helios    2008-1-11

浅谈UML中的聚合与组合

大家都知道UML的类图中一般包含五种关系即  关联 聚合 组合 泛化 依赖  有些人可能会感觉组合跟聚合有点难区分 说难其实是相对其他几种关系而言 实际上想分清这两种关系一点也不难  聚合跟组合其实都...
  • liushuijinger
  • liushuijinger
  • 2011年11月21日 23:46
  • 34667

继承、实现、依赖、关联、聚合、组合的联系与区别

继承、实现、依赖、关联、聚合、组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力...
  • kevin_darkelf
  • kevin_darkelf
  • 2013年09月08日 11:17
  • 26540

聚合与组合的区别

今天碰到一个题,问的是聚合和组合的区别,不是很清楚,到网上搜了一段话,摘录如下: 聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。如电脑和鼠标。组合:表示两个对象之间是整体和部...
  • zhy0511
  • zhy0511
  • 2011年06月14日 18:08
  • 23962

谈一谈自己对依赖、关联、聚合和组合之间区别的理解

在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但...
  • zhengzhb
  • zhengzhb
  • 2012年02月07日 15:42
  • 25299

Composition(组合)与Aggregation(聚合)的区别

之前划类图,对于二者的区别始终没有搞太明白,多数情况下都会选择使用Composition. 今天有时间就查阅了一些资料,把我新的理解在这里和大家分享一下: 1. 若论两种关系表示的强弱程度,Comp...
  • simonezhlx
  • simonezhlx
  • 2013年04月26日 17:28
  • 8486

Java中组合与聚合的区别

今日得闲,拿来一直放着的《Thinking in Java》来看,前面就说到组合跟聚合,之前看过现在也记了,上网查了一下,大家说的都有道理。李笑来老师说过,一个好的类比对于正确的理解和实践某个事物是非...
  • baidu_25555389
  • baidu_25555389
  • 2017年06月30日 17:43
  • 545

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要...
  • hguisu
  • hguisu
  • 2012年06月07日 18:34
  • 64333

泛化、实现、依赖和关联的区别

泛化、实现、依赖和关联的区别 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: a、实现 表示类对接口的实现。 UML图中实现使用一条带有空心三角箭头的虚线指向接...
  • huwei2003
  • huwei2003
  • 2016年05月16日 10:32
  • 1780

UML图中聚合、组合、关联、依赖、泛化的强弱关系

一、泛化 1、说明      泛化是一种继承关系,如果一个类A的所有属性和操作能被另一个类B所继承,则类B不仅可以包含自己独有的属性,而且可以包含类A的属性和操作。继承是类与类或者类与接口之间最常...
  • ggibenben1314
  • ggibenben1314
  • 2013年02月23日 07:51
  • 10269

继承、实现、依赖、关联、聚合、组合的联系与区别

继承、实现、依赖、关联、聚合、组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力...
  • kevin_darkelf
  • kevin_darkelf
  • 2013年09月08日 11:17
  • 26540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关联、组合、聚合、依赖关系比较
举报原因:
原因补充:

(最多只允许输入30个字)