1 类图简介
类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
类图中的“类”与面向对象面向对象面向对象语言中的“类”的概念是对应的,它用来描述系统中的有意义的概念,包括具体的概念、抽象的概念、实现方面的概念等,是对现实世界中的事物的抽象。
类图是其它图的基础。我们可以在类图的基础上,使用状态图、协作图、组件图和配置图等。
类图的主要作用有:
(1)对系统的词汇进行建模
(2)对简单的协作进行建模
(3)对逻辑数据库模式进行建模
类图主要由类、接口和各种关系组成。
关系主要包括泛化关系、依赖关系、关联关系和实现关系。
2 类图基本图
先看一个基本的类图:
2.1 类
三个格子从上至下分别表示:
- 类名称(如果是接口,就使用斜体表示)
- 类的特性(一般是类的字段和属性,可以没有)
- 类的操作(一般是类的方法或行为)
访问权限:
- “+”表示public
- “-”表示private
- “#”表示protected
其他关键字:
- 下划线表示static
- 斜体表示abstract
冒号(:)
- 表示成员变量类型
- 表示方法返回值
等号 (=)
- 表示默认值
方法的参数表示与类成员变量表示方法完全相同
2.2 接口
接口的两种表现方式:
- 圆圈,比较直观,不方便表示接口内的方法
- 名字上带有interface,方便表示接口方法
3 类之间的关系
3.1 泛化关系 (generalization)
[泛化关系] 泛化是继承关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能或者重写父类功能。
[箭头指向] 带三角箭头的实线,箭头指向父类
[代码表现] 最典型的就是extend
3.2 实现关系(realization)
[实现关系] 是一种类与接口的关系,表示类是接口所有特征和行为的实现。
[箭头指向] 带三角箭头的虚线,箭头指向接口或者是直线连接圆圈
[代码表现] 最典型的就是implements
3.3 关联关系 (association)
[关联关系] 是一种拥有的关系,它使一个类知道另一个类的属性和方法。它体现的两个类中一种强依赖关系,比如我和我的朋友,这种关系比依赖更强,不存在依赖关系中的偶然性,关系也不是临时的,一般是长期性的。
关联关系分为单向关联和双向关联:
单向关联表现为:类 A 当中使用了 类 B,其中类 B 是作为类 A 的成员变量。
双向关联表现为: 类 A 当中使用类 B 作为成员变量,同时类 B 中也使用了类 A 作为成员变量
[箭头指向] 带普通箭头的实心线,箭头指向被拥有者
[代码表现] 成员变量
3.4 聚合关系 (Aggregation)
[聚合关系] 聚合关系是关联关系的一种,耦合度强于关联。是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以单独存在。
[箭头指向] 带空心菱形的实心线,菱形指向整体
[代码表现] 成员变量
3.5 组合关系 (composition)
[组合关系] 整体与部分的关系,但部分不能离开整体而单独存在
[箭头指向] 带实心菱形的实心线,菱形指向整体
[代码表现] 成员变量
3.6 依赖关系 (dependency)
[依赖关系] 是一种使用的关系,即一个类的实现需要另一个类的协助,所以尽量不要使用双向的互助依赖。
[箭头指向] 带虚线的箭头
[代码表现] 最典型的就是import