加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

UML的四种关系

发布时间:2020-12-13 22:15:32 所属栏目:百科 来源:网络整理
导读:UML中共有四种关系,分别为关联、依赖、泛化、实现,思维导图: 下面来详细叙述: (1)依赖(dependency): 定义: 是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条有方向的虚线

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工程作图中,务必要用最准确的关系来描述,能用强度大的就不要用强度小的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读