[转载]泛化、实现、依赖和关联的区别

原文链接:http://www.cnblogs.com/linjiqin/archive/2013/11/09/3415440.html

传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系:
a、实现
表示类对接口的实现。
UML图中实现使用一条带有空心三角箭头的虚线指向接口,如下:

b、泛化
表示类与类之间的继承关系、接口与接口之间的继承关系。
UML图中实现使用一条带有空心三角箭头的实线指向基类,如下:

c、依赖
表现为函数中的参数(use a),是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。如电视(TV)依赖于频道(channel)常见的依赖关系如下:
(1)类B以参数的形式传入类A的方法。
(2)类B以局部变量的形式存在于类A的方法中。
(3)类A调用类B的静态方法。
UML图中实现使用一条带有箭头的虚线指向被依赖的类,如下:

d、关联
表现为变量(has a),类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A依赖于B,则B体现为A的全局变量,如person类和company类。

关联关系有双向关联和单向关联:
1、双向关联:两个类都知道另一个类的公共属性和操作。
2、单向关联:只有一个类知道另外一个类的公共属性和操作。
大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。
UML图中实现使用一条实线连接相同或不同类,如下:

e、聚合
是关联关系的一种,是弱的关联关系。聚合关系是整体和个体的关系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的“拥有”关系。此时整体与部分之间是可分离的,他们可以具有各自的生命周期, 部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分。
UML图中实现使用一条带有虚心菱形的线来表示,如下:

f、组合
是关联关系的一种,是比聚合关系强的关联关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。Composition(组合关系)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一致。他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑,window窗口和frame,在窗口中创建一个frame时必须把它附加到窗口上,当窗口消失时frame也就消失了;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
UML图中实现使用一条带有实心菱形的线来表示

几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

聚合和组合的区别:
聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用

聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司

关联和聚合的区别:
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。

时间: 2024-08-10 19:03:18

[转载]泛化、实现、依赖和关联的区别的相关文章

【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合

java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: ? 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类.在UML中,泛 化关系用带空心三角形的直线来表示. ? 在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字.在C++/C#中使用冒号":"来实现. 泛化对应Java中继承关系,即子

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

传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系:a.实现表示类对接口的实现.UML图中实现使用一条带有空心三角箭头的虚线指向接口,如下: b.泛化表示类与类之间的继承关系.接口与接口之间的继承关系.UML图中实现使用一条带有空心三角箭头的实线指向基类,如下: c.依赖表现为函数中的参数(use a),是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类.例如如果A依赖于B,则B体现为局部变量,方法的参数.或静态方法的调用.如电视

学习UML实现、泛化、依赖、关联、聚合、组合

类之间的关系种类:Realization(实现), Generalization(泛化),Dependency(依赖).Association(关联).Aggregation(聚合).Composition(合成或组合). 其中,Aggregation(聚合).Composition(合成)属于Association(关联),是特殊的Association关联关系. 实现(Realization): 指的是一个类实现接口(可以是多个)的功能:实现是类与接口之间最常见的关系:C 中没有直接的接口而

关联、泛化、依赖、实现

学习<设计模式>好长时间了,可是到现在还是分不太清楚几种UML中的几种关系.如果这几种关系理解的不是很透彻的话,那么会直接影响到对类图之间关系的理解,下面就来分析下几种关系吧! 类之间的关系 1.Dependency(依赖).Relization(实现).Generalization(泛化) 2.Association(关联).Aggregation(聚合).Composition(组合),这三种是一类的关联关系 依赖(Dependency) 依赖关系是这几种关系中最弱的,因为只彼此之间只是单

UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html http://sundensky.blog.163.com/blog/static/7728873420109299167434/ 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系

【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性:  实现 指的是一个class类实现interface接口(可以是多个)的

UML的基本概念【依赖、关联、泛化、实现】

一.概念: UML基本概念介绍: UML:UML (Unified Modeling Language)为面向对象软件设计提供统一的.标准的.可视化的建模语言.适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程. UML的模型图由事物.关系.图构成. 1.事物: 事物有: 构件事物[类.接口.用例.构件.结点等] 行为事物[交互.状态机] 分组事物  [包] 注释事物[注释] 2.关系: 依赖.关联[聚合.组合].泛化.实现 3.图: 类图.用例图.状态图.对象图.顺序图.协作图.活动图

UML之类图分析(依赖、关联、聚合、组合、泛化、实现)

在我学习设计模式的过程中,使用了UML进行建模. 最开始我对各种关系理解的不是太清楚,在网上也搜了一些信息,现在对类图的这几种关系:依赖.关联.聚合.组合.泛化.实现进行一个介绍. 首先大家要知道两点: 1.它们关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖 2.关联.聚合.组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的. 泛化(Generalization): 泛化是对象之间耦合度最大的关系之一.它表

StarUML类图相关——关联、聚合、组合、泛化、依赖、实现

在阅读设计模式相关的书籍,或者其他一些项目.相关博客等等,经常会遇到类图,它对于一个类的信息,如变量.方法及其可见性,类与类(接口)之间的继承关系.依赖关系.聚合关系.组合关系等,都可以比较形象得当地描述出来.这样有用的工具,还是需要稍微掌握了解下,也方便自己的应用和描述.因此就有了这篇搬运工文档 一.StarUML下载和入手 1.先捧出StarUML官网StarUML--The Open Source UML/MDA Platform. 2.入手简单的UML开发可以参考:使用StarUML创建