UML中的四大关系

来源:互联网 发布:淘宝聚划算怎么买东西 编辑:程序博客网 时间:2024/05/16 16:06

在今天的这篇博文中,我来向大家介绍一下在UML学习中四大关系:关联关系(普通关联关系/聚合关系/组合关系)、依赖关系、泛化关系、实现关系。这些关系集中体现在UML中的类与类、类与接口、接口与接口之间的相互联系中。

依赖(Dependency)关系:

1.UML表示法:虚线+箭头

2.关系:“…use a…”

3.解释:是类与类之间连接的一种,表示一个类依赖于另一个类的定义。简单的理解,就是一个类A使用了另一个类B,B只是作为一个工具被A使用。

4.释义:一个人想要过河,但是需要一条船,那么人要想过河就得依赖一条船的作用,所以此时人与船之间的关系就是依赖;


 

泛化(Generalization)关系:

1.UML表示法:实线+空心箭头

2.关系:“…is kind of…”

3.解释:也称继承关系,是一个类(称为子类/子接口)继承另外的一个类(称为父类/父接口)的功能。继承是类与类或者接口与接口之间最常见的关系;

4.释义:汽车是交通工具的一种,也就是汽车类继承了交通工具类。此时汽车与交通工具之间的关系就是继承。


实现(Realization)关系:

1.UML表示法:虚线+空心箭头

2.关系:“…realize…”

3.解释:指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。也就是元素A定义一个约定,元素B实现这个约定,则AB的关系即为实现:Brealize A

4.释义:人要参加一个活动,就必须遵守这个活动的一些约定,比如用餐。


关联(Association)关系:

.基本关联(Association)关系:

1.UML表示法:实线+箭头

2.关系:“…has a…”

3.解释:表示类与类之间的联接,所谓的关联就是某个对象会长期的持有另一个对象的引用,使一个类知道另一个类的属性和方法,而二者的关联往往也是相互的。但是关联的两个对象彼此间没有任何强制性的约束。可以用单双箭头表示单向或双向关联,不建议使用双向关联。在关联的两个端点,每个端点可以有一个基数,表示这个关联的类可以有几个实例。

常见的基数及含义:

0..10或者1个实例

0..*…对实例的数目没有限制

1…只能有一个实例

1..*…至少有一个实例

4.释义:一个人可以有很多朋友,然而没有理由认为朋友的生死与我的生死有必然的联系,所以他们的生命期没有关联,而且我的朋友又可以是别人的朋友。


.聚合(Aggregation)关系:

1.UML表示法:空心菱形+实线+箭头

2.关系:整体-部分

3.解释:是强的关联关系,是整体和个体之间的关系,但是整体与部分之间是可以分离的,有各自的生命周期,部分可以属于多个整体对象

4.释义:比如机器和引擎,计算机和CPU,公司与员工之间的关系。


.组合(Composition)关系:

1.UML表示法:实心菱形+实线+箭头

2.关系:“…is a partof…”

3.解释:是比聚合关系还强的一种关联关系,也是整体和部分的关系,但是代表整体的对象负责代表部分的对象的生命周期。如果整体不存在,则部分一定不存在。即部分不可以脱离整体而存在。

4.释义:比如Listnode,没有Listnode不复存在。或者人与其大脑。

至此,在UML中所涉及到的各种关系都已经讲述完毕,这样看来各种关系在类别上可以分为两种:纵向关系和横向关系,纵向关系就是继承关系,概念非常明确;横向关系就比较微妙,按照UML的建议大体上可以分为四种:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition)。

他们之间的强弱关系是没有异议的:依赖<关联<聚合<组合

然而他们之间的差别却需要我们好好体会,在实践中长经验。




0 0