统一建模语言(UML) 主要用来表示软件的结构,不同模块、类和对象如何相互交互,以及表示它们之间的关系。
在UML中,可以定义系统的结构和行为,并且通过图表可视化全部或者部分模型。有两中类型的图表:
(1)结构图用于系统的结构;
(2)行为图描述系统的行为;
类图是面向对象设计和开发阶段中使用最多的图形。类图是一种结构图,用于说明类的结构及类之间的关系。
类之间的关系
类关系包括:泛化和实现、依赖、关联、聚合和组合。
1、泛化
当一个类表示多个类的共享特征时,称为泛化。继承被称为Is-A关系,在UML中描述继承关系称为泛化。
如下图,Vehicle
是Bike
、Car
、Truck
的泛化。
2、实现
UML中的实现表示面向对象编程中类的接口实现。
如下图,CarLock
实现Lock
接口:
3、依赖
依赖用于定义一个类以某种方式依赖于另一个类,而另一个类可能依赖于或不依赖于第一个类。依赖关系被称为Uses-A
关系。
通常,在面向对象编程语言中,依赖关系用于描述一个类在方法的声明中是否包含第二个类的参数,或者说它只是通过方法将第二个类传递给其他类,而不是使用方法来创建第二个类的实例。
如图:
4、关联
关联表示两个实体之间的关系。有两种类型的关联:组合和聚合。一般,关联关系用由箭头表示。如图:
5、聚合
聚合是一种特殊类型的关联。如果将继承看作Is-A
关系,则可以将聚合看作是Has-A
关系。
聚合用于描述一下情况中两个或多个类之间的关系:一个类在逻辑上包含另一个类,但所包含的类的实例又可以独立于第一个类在其上下文之外生存,或者可以被其他的类引用。如:部门和员工存在Has-A
关系,每个员工必须属于部门,但如果部门不存在,员工仍然可以处于活动状态。如图:
6、组合
一个类是另一个类的组成部分就称两者之间存在组合关系。有点类似于聚合,不同之处在于当主体类不存在时,依赖类不再存在。如:房子(House
)由房间(Room
)组成,但如果房子被销毁,房间就不再存在。如图: