文档章节

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

hephec
 hephec
发布于 2015/05/01 19:30
字数 780
阅读 22
收藏 0
    类之间的关系 种类:  Generalization( 泛化 ) Dependency( 依赖关系 ) Association( 关联关系 ) Aggregation( 聚合关系 )、 Composition( 合成关系 )
    其中Aggregation(聚合关系)Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系。Generalization(泛化)表现为继承或实现关系(is a)。具体形式为类与类之间的继承关系,接口与接口之间的继承关系,类对接口的实现关系。

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



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



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


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



来至于http://blog.csdn.net/maybehelios/archive/2008/01/12/2038685.aspx 

本文转载自:

共有 人打赏支持
hephec
粉丝 1
博文 14
码字总数 831
作品 0
朝阳
程序员
私信 提问
五分钟看懂UML类图与类的关系详解

在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggreg...

harries
07/09
0
0
依赖、关联、聚合和组合之间区别

在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的...

LCZ777
2014/06/29
0
0
UML关系

前言: 在学习设计模式的过程中用到了各种UML的关系,所以总结一次 内容: UML:关系(4种):泛化关系,实现关系,依赖关系,关联关系(聚合,组合) 泛化关系 是一个类与另一个类的接口,可...

cjune
2017/10/08
0
0
UML类图关系总结

在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization) ...

孟飞阳
2016/07/25
965
11
UML类图几种关系的总结

在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization) ...

青龙_1
2013/07/09
231
7

没有更多内容

加载失败,请刷新页面

加载更多

CPU性能过剩提升乏力影响未来行业发展吗?

虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。 自201...

linuxCool
10分钟前
0
0
使用Autowired和Qualifier解决多个相同类型的bean如何共存的问题

注意: 实现类UserServiceImpl,MyUserServiceImpl 需要区分:@Service("userServicel") @Service("myUserService") https://blog.csdn.net/russle/article/details/80287763......

qimh
44分钟前
3
0
SQL 语句使用to_char函数时,检索结果有空格

小疯在使用Oracle过程中,使用to_char函数检索表数据时发现检索结果前面会有一个空格,对后续开发有影响。问题很好解决,比较直接对可以做一下trim处理。但是小疯很疑惑为什么会有空格呢,于...

野小疯
45分钟前
3
0
对接比特币钱包的PHP开发包

BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸...

汇智网教程
今天
2
0
【自用】 VHD to VHDX

VHDX: 在VHD 2TB 的基础上提供 64TB的容量。 支持逻辑扇区大小为 4KB,和每块的大小为 256MB,来优化虚拟磁盘性能。 比VHD提供更高的安全性、可靠性和性能。 convert-VHD –path d:\Hyper-v...

Tensor丨思悟
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部