UML类图常用概念

UML中包括类图(Class Diagram)、状态图(Statechart Diagram)、用例图(Case Diagram)、对象图(Object Diagram)、构件图(Component Diagram)、序列图(Sequence DIagram)等。
这里介绍类图基本概念。

  1. 类图由类名、属性、方法组成
  2. 接口可以被实现(虚线+三角箭头)、继承(泛化)(实线+三角箭头)
  3. 类或接口之间的关系有四种:依赖、关联、聚合、组合

说明

假设Car类有三个成员变量,一个Tire类型的变量,一个Door类型的变量,一个Person类型的变量,以及一个方法cleanCar,该方法传入一个洗车设备类型的参数。

我们这里对汽车这个类做一个说明:

  1. 汽车是由轮胎Tire组成,就算没有汽车,轮胎也是可以单独存在的

  2. 没有了汽车便没有汽车门(这里把门看作是一个空间的概念,而不是看做物理的那种门,就好比没有颜色概念的话也就没有黑色这种说法,这里即:没有车就没有车门,这是为了说明一种关系)

  3. 汽车需要人开,车的存在和人的存在没有关系,仅仅是说车需要人来开

  4. 有一个洗车的方法,该方法需要传入一个洗车设备,这个洗车设备并不是车的一部分,只有洗车的时候才会临时用到该设备

依赖

Car与CleanMachine之间的关系为依赖,Car与CleanMachine是一种临时关系,即CleanMachine作为Car的方法的参数,或者方法中的局部变量。

依赖表现为类B为类A中的成员函数的参数、或成员函数中的局部变量,而不是作为成员变量。

关联

Car与Person之间的关系为关联,Car需要Person来开,但是Car不是由Person组成。

在关联中,类B是类A的指针型成员变量(即A类型对象的消失了,B类型对象依然可以存在),同时类A和类B没有整体和部分的关系,例如汽车和人之间的关系。

聚合

Car与Tire之间的关系为聚合,Car有Tire组成,但是没有了Car,Tire依然是存在的;

在聚合中,类B是类A的指针型成员变量(即A类型对象的消失了,B类型对象依然可以存在),同时类A和类B是整体和部分的关系,例如汽车和轮胎之间的关系。

组合

Car与Door之间的关系为组合,Car由Door组成,但是一旦没有了Car,Door也就不存在了;

在组合中,类B是类A非指针型成员变量(即A类型对象的消失了,B类型对象也消失了),同时类A和类B是整体和部分的关系,例如汽车和门(这个空间)之间的关系。