跳到主要内容

02UML类图关系

UML类图关系​

​ 面向过程的语言,本质就是函数间的调用关系,但是面向对象以后,函数和数据被封装到类以后,对象的函数间发生关系,此时的研究方向就变成了,类与类之间的关系。

1、纵向​

​ 继承父类

​ 实现父类接口

2、横向​

​ 类成员对象,引用,指针。

​ 类中成员函数的对象,引用,指针。

​ (友元也是横向扩展的关系)

3、类类之间关系​

a、泛化(Generalization )​

​ 泛化是一种继承关系;泛化是特殊到一般的关系,它指定了子类如

​ 何特化父类的所有特征和行为。

​ 箭头指向: 带三角箭头的实线,箭头指向父类

​ 类图关系:

​

b、实现(Interface Realization )​

​ 实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。 **箭头指向:**带三角箭头的虚线,箭头指向接口

​ 类图关系:

​

c、关联​
组合关联(Composition )​

​ 组合也是关联关系的一种特例,他体现的是一种 contains-

​ a 的关系,这种关系比聚合更强,也称为强聚合;同样体现

​ 整体与部分间的关系。

​ 根据关联的强弱区分关联种类

​ 各个关联的代码层面无法区分

​ 组合关系也就是成员关系。

​ 箭头及指向: 带实心菱形的实线,菱形指向整体。

​ 类图关系

聚合关联(Aggregation )​

​ 聚合是关联关系的一种特例,体现的是整体与部分、拥有的

​ 关系,即 has-a 的关系,此时整体与部分之间是可分离的,

​ 表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

​ 箭头及指向: 带空心菱形的实心线,菱形指向整体。

​ 类图关系

​

普通关联(Association )​

​ 是一种拥有的关系, 使一个类知道另一个类的属性和方法,强

​ 调的是一种 A-A 的关系;关联可以是双向的,也可以是单向

​ 的。双向的关联可以有两个箭头或者没有箭头,单向的关联

​ 有一个箭头 。

​ 在代码层面,通常体现为成员变量的关系。

​ 箭头及指向: 带普通箭头的实心线,指向被拥有者。

​ 类图关系:

​

依赖关联(Dependency )​

是一种使用的关系,即一个类的实现需要另一个类的协助,

​ 所以要尽量不使用双向的互相依赖。

​ 箭头及指向: 带箭头的虚线,指向被使用者

​ 类图关系

​

综合评价:​

​ 对于继承、实现体现的是一种类与类、或者类与接口间的纵向关系。

​ 其他四种关联则体现的是类与类、类与接口间的引用、横向关系,是比较难以区分的。

​ 集中关联的强弱程度依次为:组合>聚合>关联>依赖