UML 类图
[toc]
类
分为三部分
- 类名
- 属性(可以没有属性)
- 操作
其中属性和操作都有public(+), private(-),protect(#)
三种访问限定标志
举个例子:
Student |
---|
- num : int |
+ Study() : void |
几种关系
- Realization(实现)
- Generalization(泛化/继承)
- Dependency(依赖)
- Association(关联)
- Aggregation(聚合)
- Composition(合成或组合)
关系由弱到强: 依赖 < 关联 < 聚合 < 组合 < 泛化(继承)
实现
接口类: 接口一般是没有成员变量。所有操作都是抽象的,只有声明没有具体的实现。
实现是特殊的继承.多用于实现接口关系,也就是类和接口类之间的关系.
图像: 虚线和△,由类指向接口类
泛化
泛化表示类和类之间的继承关系,接口和接口之间的继承关系(此处不同地方说法不懂,需要核实,不过基本思想是普通的继承关系).
图像: 实线和△,由子类指向父类
依赖
依赖关系是类与类之间最弱的关系,A元素变化会影响B元素.
类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用
图像: 虚线和▲,由类指向所依赖的类
关联
关联关系表示一个类和另一类有联系,它使一个类知道另一个类的属性和方法
- 单向关联:类A当中使用了类B作为成员变量。
- 双向关联:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。
图像: 实线和▲,由类指向所关联(就是所包含)的类
聚合
todo: 疑惑
聚合关系是整体和部分的关系,是一种强的关系,但是部分可以脱离整体而存在。是关联关系的一种。
耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。
图像: ◇实线^,由类指向所关联的类
组合
组合关系是聚合关系的一种变种,便是了更强的组合关系,它要求整体的对象代表部分对象的生命周期。(比如”鸟”和”翅膀”,)
相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。
图像: ◆实线^,由类指向所关联的类