UML类图常用概念
UML类图常用概念
UML中包括类图(Class Diagram)、状态图(Statechart Diagram)、用例图(Case Diagram)、对象图(Object Diagram)、构件图(Component Diagram)、序列图(Sequence DIagram)等。
这里介绍类图基本概念。
- 类图由类名、属性、方法组成
- 接口可以被实现(虚线+三角箭头)、继承(泛化)(实线+三角箭头)
- 类或接口之间的关系有四种:依赖、关联、聚合、组合
说明
假设Car类有三个成员变量,一个Tire类型的变量,一个Door类型的变量,一个Person类型的变量,以及一个方法cleanCar,该方法传入一个洗车设备类型的参数。
我们这里对汽车这个类做一个说明:
汽车是由轮胎Tire组成,就算没有汽车,轮胎也是可以单独存在的
没有了汽车便没有汽车门(这里把门看作是一个空间的概念,而不是看做物理的那种门,就好比没有颜色概念的话也就没有黑色这种说法,这里即:没有车就没有车门,这是为了说明一种关系)
汽车需要人开,车的存在和人的存在没有关系,仅仅是说车需要人来开
有一个洗车的方法,该方法需要传入一个洗车设备,这个洗车设备并不是车的一部分,只有洗车的时候才会临时用到该设备
依赖
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是整体和部分的关系,例如汽车和门(这个空间)之间的关系。