UML-类图
泛化关系 (Generalization)
用来描述继承关系,在 Java 中使用 extends 关键字。
泛化关系由带空心三角形的实线来表示。如下图所示:Car 与 Trunck 继承 Vihical。
实现关系 (Realization)
用来实现一个接口,在 Java 中使用 implements 关键字。
实现关系由带空心三角形的虚线来表示。如下图所示:Fly 与 Run 实现了 MoveBehavior 接口。
聚合关系 (Aggregation)
表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。
聚合关系由带空心菱形的实线表示。如下图所示: Keyboard 、Mouse 、 Screen 聚合到了 Computer。
组合关系 (Composition)
和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。
组合关系由带实心菱形的实线表示。如下图所示:DepartmentA 与 DepartmentB 组成了 Company。
关联关系 (Association)
表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、1 对多、多对多这种关联关系来表示。
关联关系由一条实线来表示。如下图所示:School 与 Student 是 1 对多的关系。
依赖关系 (Dependency)
和关联关系不同的是,依赖关系是在运行过程中起作用的。A 类和 B 类是依赖关系主要有三种形式:
- A 类是 B 类方法的局部变量。
- A 类是 B 类方法的参数。
A 类向 B 类发送消息,从而影响 B 类发生变化。
组合关系由带箭头的虚线来表示。如下图所示:Vihicle 依赖与 MoveBehavior。
以上类图使用 PlantUML 绘制 。
示例
车的类图结构为<\
>,表示车是一个抽象类。 - 它有两个继承类:小汽车和自行车,它们之间的关系为实现关系,使用带空心三角形的虚线来表示。
- 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心三角形的实线来表示。
- 小汽车与发动机之间是组合关系,使用带实心菱形的实线来表示。
- 学生与班级之间是聚合关系,使用带空心菱形的实线来表示。
- 学生与身份证之间为关联关系,使用实线来表示。
- 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线来表示。