UML的四种关系

前端之家收集整理的这篇文章主要介绍了UML的四种关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

UML中共有四种关系,分别为关联、依赖、泛化、实现,思维导图:



下面来详细叙述:

(1)依赖(dependency):

定义:是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条有方向的虚线。

依赖体现的一种“使用”关系,即一个类的实现需要使用另一个类的方法或者属性。可以简单的理解为,就是一个类A使用到了另一个类B,比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。

举一个很经典的例子:



动物生存就需要氧气和水,它们之间就存在一个使用关系,也就是说,动物依赖氧气和水。


(2)关联(association):

定义:描述了两个或多个类之间的结构性关系,它描述了一组链,链是对象之间的连接,具有方向、名字、角色和多重性等信息。

个人理解:关联是一种强依赖关系,这种关系比依赖更强,并且不存在依赖的临时性和弱关系性,也可以理解为是一种“拥有”

关系,它使一种类“知道”另一种类的属性方法

举例:一个person属于一个company,一个company有多个person。

举例:企鹅和气候两个类,企鹅需要‘知道’气候的变化和‘了解’气候规律,才去决定什么时候迁徙。像这样的关系,我们称为关联。

1)一般关联:

单向关联在图中表现为有方向的实线:



表现在代码中就是,类A中有类B的属性


双向关联在图中表现为没有箭头的实线:



表现在代码中就是类A和类B中互相有对方的属性,除此之外还有自身关联,此处不再说明。


2)聚合(aggregation):


定义:聚合体现的整体和部分的关系,且部分离开整体可单独存在。

3)组合(composition):


定义:组合体现的也是整体和部分的关系,但是部分不能离开整体而单独存在,如果整体没了,那么部分也就不存在了。


对于聚合和组合的区别,有一个非常经典的例子,大家都知道,秋天大雁要南飞,单独的大雁对于整个雁群来说就是聚合关系,大雁个体可以属于雁群,也可以和雁群分开单独存在,如图:



大雁个体和它的翅膀就是一个组合关系,翅膀是不能离开大雁单独存在的,如果大雁没有了,那么翅膀的生命周期也就结束了,如图:



(3)泛化(generalization):


定义:泛化关系体现的是一种继承关系。子类泛化出父类,而父类特化出的子类拥有父类所有的属性方法

个人理解:通俗点就是继承,派生类继承基类的方法属性,以此来使派生类共享基类的结构和行为,而且派生类还可以增加它自己的新功能。继承是类与类或者接口与接口之间最常见的关系。

如图大象类继承动物类:



(4)实现(realization):


定义:是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。

实现关系中,类、子系统、构件都可以实现接口,其中,用例实现也能实现用例:



举例:定义一个行为是“奔跑”的接口,让花豹类来实现:



小结:UML中四种关系的强度从大到小依次为:泛化=实现>组合>聚合>关联>依赖,在UML工程作图中,务必要用最准确的关系来描述,能用强度大的就不要用强度小的。

猜你在找的设计模式相关文章