UML之六种类图关系

一、概述

对于大型项目,一般需要先利用UML绘制类图关系。学习设计模式,也需要清楚的知道类与类之间的关系。
类与类之间的关系分为三大类:泛化,实现,关联(组合、聚合、普通关联、依赖)

二、详细

1、泛化

泛化关系发生在父子类之间。子类继承父类的所有非私有属性和方法,并根据自有的特性进行扩展,这就属于泛化,使用实线空心箭头表示,如下图所示,
UML之六种类图关系_第1张图片

2、实现

实现关系发生在父子类之间。父类存在虚函数或纯虚函数,子类重新实现了虚函数,这就属于实现,使用虚线空心箭头表示。如下图所示,CDot继承CShape,并实现了CShape的接口函数Draw()。
UML之六种类图关系_第2张图片

3、关联

关联分为四种:组合,聚合,普通关联,依赖。从关联的紧密程度来说,四种关联之间的强弱关系为:组合>聚合>普通关联>依赖。

3.1、组合

两个对象如果是组合关系,那么说明一个对象包含其中一个对象,且不可分割。比如,人拥有大脑,鸟拥有翅膀,大脑不能独立人而存在,翅膀不能独立鸟而存在,这都是不可分割的对象。如下图所示,
UML之六种类图关系_第3张图片
特别说明,关联关系中,可以标明对象的数量关系,就像人和大脑是一对一的关系。

3.2、聚合

聚合是指,一个对象拥有一个对象,但是是可以分割的,强调的是整体与部分的关系。比如,雁群中的一只雁,雁群拥有许多雁,雁可以飞离雁群而存在。如下图所示,
UML之六种类图关系_第4张图片

3.3、普通关联

普通关联的两个对象是一种平等关系,分为单向关联和双向关联。可以使用实线带双向箭头或实线表示。例如,老师知道自己的所有学生信息,学生也知道自己所有老师的信息,因此学生和老师属于双向关联。如下图所示,
UML之六种类图关系_第5张图片

3.4、依赖

依赖一般只能是单向依赖,指一个对象使用另外一个对象。比如人可以使用刀,但不能说刀使用人,因此人对象就是依赖刀对象。
在这里插入图片描述

三、总结

对于泛化和实现关系,很好区分,但是关联关系则难以区分。一般为了简单,所有的关联关系可以采用实线箭头表示,不显示他们的强弱关系。

你可能感兴趣的:(设计模式)