您的位置:首页 > 其它

UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

2011-08-21 10:53 288 查看
这篇博客对类之间的关系进行了整理,在用UML进行类图设计时,对类之间的关系更加清晰明了.

一、表示符号上的区别





二、具体区别与联系

继承(泛化)


指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系,可分单重继承,多重继承(java不支持);在Java中此类关系通过关键字extends明确标识。





实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识



依赖

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某个老师要授课,则需要有这么一门课让他教授,此时老师与课之间的关系就是依赖;表现在代码层面,为类Course作为参数被类Professor在Teach方法中使用;



关联

它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,普通关联关系的两个类处于同一层次上,关联可以是单向(只有一个类知道另外一个类的公共属性和操作)的也可以是双向(两个类都知道另一个类的公共属性和操作)的;大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。

双向关联:



单向关联:



聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如书本与暑假、公司与员工的关系等;具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。





组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,也可以理解为如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。比如你和你的大脑或一本书和它的书页。





综上所述,对于继承、实现这两种关系比较简单,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;从后几种关系所表现的强弱程度来看,依次为:组合>聚合>关联>依赖。在面向对象的设计过程中,能采取强度较大的关系,决不能采取强度小的关系。

随着学习深入,会加上代码实现!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐