UML类图

本文将针对UML使用方法进行总结。其中用到的plantUML绘图请详见使用plantUML进行绘图的教程

UML类及类间关系实例1

我们从一个具体的类图来表示UML类常见的一些关系:

类图示例

在上面的图中,我们可以读出如下信息:

  • 车的类图结构为<>,代表抽象类
  • 有两个继承类,汽车和自行车;它们之间为实现关系
  • 小汽车与SUV为继承关系,它们之间为泛化关系,使用带空心箭头的实线表示
  • 小汽车与发动机和轮胎之间为组合关系,使用带实心菱形箭头的实线表示
  • 学生对自行车是依赖关系,使用带箭头虚线表示
  • 学生和身份证是强关联关系,使用一根实现表示
  • 学生和班级是聚合关系,使用带空心菱形箭头的实线表示

UML类图组成

一个由UML表示的类如下图所示,包括属性与方法两个部分。

类间关系

类间常用关系一览

1 泛化关系(继承非抽象类)

如果一个模型元素(子代)基于另一个模型元素(父代),那么这两个元素之间就存在泛化关系,例如汽车是父类,而跑车作为汽车的一种,是汽车定义的具体的对象,两者之间为泛化关系,跑车继承自汽车。在最终代码中,泛化关系表示为继承非抽象类

2 实现关系(继承抽象类)

实现关系用于表示某物是另一物的具体实现,如果给定一个抽象概念,例如动物,现实中无法直接用动物定义对象,只有指明具体物种子类例如猫,才能进行定义。在上面的例子中动物是抽象类,猫是具体类,两者之间为实现关系,在代码中,实现关系表示为继承抽象类。

3 聚合关系(整体由部分构成)

聚合关系用于表示实体对象间关系,例如班级是由学生组成的,与组合关系不同,聚合是一种弱组织,整体消失,个体依然存在,例如一个班级被撤销了,但是学生还是存在的,在代码中,聚合关系表示为采用某种数据结构对个体进行组织,例如可以定义一个班级类,其中由指针数组指向多个学生实体。

4 组合关系

组合关系表示整体是由部分组成的,但是是一种强组织关系,一旦整体不存在,部分也就不存在。例如一个汽车是由发动机、轮胎等组成的,一旦汽车消失,这些部件也将消失。在代码中,组合关系可以表示为Has-a的关系,一般以成员变量的形式存在。

5 关联关系

关联关系表示两者之间是一一对应的关系,用于描述对象间静态的,天然的关系,与运行状态无关。例如学生和学生证,天然构成了一种一一对应的关联关系。关联关系一般不强调方向,表示对象间互相关联,通常以成员变量的形式存在。

6 依赖关系

依赖关系是一种很弱的关系,表示一个对象在运行期间可能会使用另一个对象,例如在一个游戏中,人使用自行车,两者就构成了依赖关系,但是人可以扔到自行车转而使用汽车,此时依赖关系就发生了改变。依赖关系应当尽可能保证单向性,避免双向依赖。在最终代码中,依赖关系体现为类方法的传入参数的。

参考文献

0%