1.什么是类图?

类图是面向对象系统建模中最常用的图, 是定义其他图的基础

类图主要是用来显示系统中的类,接口以及它们之间的关系

2.类图的成分

类图包含的主要元素有类, 接口和关系。其中关系有泛化关系,关联关系,依赖关系和实现关系。在类图中也可以包含注释和约束

2.1 类

类是类图的主要组件,由3部分组成: 类名,属性和方法。在UML中, 类用矩形来表示, 顶端的部分存放类的名称, 中间部分存放类的属性、属性的类型以及属性的值。底部部分存放类的方法、方法的参数和返回类型。

 class_photo.jpg

在UML中公有类型用 + 表示, 私有用 – 表示, 保护类型用 # 表示

2.2 接口

接口包含方法(在C++ 中可用纯虚函数和抽象类来模拟接口),但不包含属性。在UML中接口用一个带有名称的圆圈表示,并且通过一条实线与它的模型元素相连

 

接口实现.jpg

有时候接口也使用普通类的矩形符号表示

interface_photo.jpg


2.3 类图的关系

2.3.1 泛化关系

在UML中, 泛化关系用来表示类与类,接口与接口之间的继承关系,泛化关系有时也称为“is a kind of ”关系

在UML中泛化关系用一条实线空心箭头由子类指向父类

类图__泛化关系.jpg

2.3.2 依赖关系

依赖关系简单来说就是一个类是另外一个类的函数参数或函数返回值

依赖关系.jpg

2.3.3 关联关系

概念:对于两个相对独立的系统, 当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系

2.3.3.1 一般关联关系

一个类是另一个类的成员变量

一般关联关系.jpg 

2.3.3.2 聚合关系

聚合关系是关联关系的一种,是更强的关联关系

聚合是整体和部分之间的关系,如汽车由引擎,轮胎以及其它零件组成

聚合关系也是通过成员变量来实现的。然而,关联关系所涉及的两个类处在同一层次上,而聚合关系中,两个类处于不同的层次上,一个是代表整体,一个是代表部分。

不过他们具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。

聚合关系.jpg

2.3.3.3 组合关系

组合关系也是关联关系的一种,它是比聚合关系还要强的关系, 也称为强聚合。但此时整体和部分是不可分的,整体的生命周期结束也就意味着部分的生命周期的结束。例如人和人的五脏六腑。

组合关系.jpg


五种关系的简单概括

泛化(实线空心箭头): 类与类, 接口与接口的继承

依赖(虚线): 一个类是另外一个类的函数参数或函数返回值

关联(实线): 一个类是另外一个类的成员变量

聚合(菱形实线): 整体和部分的关系,如:汽车,发动机(汽车可以选择各个型号的发动机)

组合(实心形加实线):生命体,整体和部分的关系  如: 人和大脑,心脏