对依赖、关联、聚合和组合之间区别的理解
前言:在学习UML视频的时候,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等于完全相同,下面就来详细的论述一下如何区分依赖、关联、聚合和组合。 首先看一看书上对这四种关系的定义: 以上关系的耦合度依次增强(关于耦合度的概念,这里可以暂时理解为当一个类发生变更时,对其他类造成的影响程度,影响越小则耦合度越弱,影响越大耦合度越强)。由定义我们已经知道,依赖关系实际上是一种比较弱的关联,聚合是一种比较强的关联,而组合则是一种更强的关联,所以笼统的来区分的话,实际上这四种关系、都是关联关系。 依赖关系比较好区分,它是耦合度最弱的一种,如下面的例子:Driver类依赖于Car类,因为这个关系很普遍,而在UML中我们要求必须将关系说清楚,否则容易产生很多歧义。 依然使用Driver和Car的例子,关联关系来表达的话就是:不管车是不是我的,我是个司机,别人给我什么车我就开什么车,我使用这个车。 聚合关系是是一种比较强的关联关系,对象之间存在着整体与部分的关系。假如说车是一辆私家车,是司机财产的一部分。那这个时候我们就可以使用聚合关系来表达车和司机之间的关系。 假如赋予如下语义:车是司机的必须有的财产,要想成为一个司机必须要先有辆车,车要是没了,司机也不想活了。而且司机要是不干司机了,这个车就砸了,别人谁也别想用。那就表示组合关系了。 所以,关联、聚合、组合只能配合语义,结合实际情况才能够判断出来。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |