UML类图 类与类之间的关系

361 阅读3分钟

UML类图 类与类之间的关系

前言

本文主要介绍 UML 类图中,类与类之间常见的 6 种关系。

1. 泛化 Generalization

是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。 代码表现:类与类之间的继承,接口与接口之间的继承。 连线样式:使用带三角箭头的实线连接,箭头指向父类。

2. 实现 Realization

见图一 是一种类与接口的实现关系,表示类是接口所有特征和行为的实现。 代码表现:类与接口之间的实现关系 连线样式:使用带箭头的虚线连接,箭头指向接口。

3. 关联 Association

是一种拥有的关系,它使一个类知道另一个类的属性和方法,如老师和学生。 他们可以是单向的,也可以是双向的。单向的需要加箭头,指向被拥有者。双向可以加箭头也可以不加。 代码表现:成员变量。 连线样式:带普通箭头的实心线,指向被拥有者。

4. 聚合 Aggregation

聚合是整体与部分的关系,且部分可以离开整体而单独存在。比如车和轮胎是整体和部分的关系,轮胎离开汽车仍可以单独存在。 聚合是一种强关联关系,是关联的一种。关联和聚合在语法上无法区分,需要考察具体的罗技关系。 代码表现:成员变量。 连线样式:带普通空心菱形的实心线,菱形指向整体。

5. 组合 Composition

是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。 组合关系是关联关系的一种,是比聚合关系还要强的关联关系,它要求普通聚合关系中代表整体的对象负责代表部分的对象的生命周期。 代码表现:成员变量。 连线样式:带实心菱形的实心线,菱形指向整体。

6. 依赖 Dependency

是一种使用关系,即一个类的实现需要另一个类的实现,所以尽量不要使用双向的互相依赖。 代码表现:局部变量,方法的参数或者对静态方法的调用 连线样式:带箭头的虚线,指向被使用者。

以上关系的强弱: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

总结

关联,聚合,组合,这三种都是关联关系,并且代码表现都是整体的某个部分,即成员变量。他们只是有强弱关系区分。那这样,完全需要用户根据情况自主做出判断,这样不一定能给出很准确的判断,可能需要更多的经验,也许只需要尽可能的使用最合适的那个关系来表示。个人认为,有些情况下,也许不必太注重这三种关系的区分,我们了解他们之间的关系,代码结构即可。