「软件工程」 UML类图

Posted by Dawn-K's Blog on May 3, 2020

UML 类图

[toc]

分为三部分

  1. 类名
  2. 属性(可以没有属性)
  3. 操作

其中属性和操作都有public(+), private(-),protect(#)三种访问限定标志

举个例子:

Student
- num : int
+ Study() : void

几种关系

  1. Realization(实现)
  2. Generalization(泛化/继承)
  3. Dependency(依赖)
  4. Association(关联)
  5. Aggregation(聚合)
  6. Composition(合成或组合)

关系由弱到强: 依赖 < 关联 < 聚合 < 组合 < 泛化(继承)

实现

接口类: 接口一般是没有成员变量。所有操作都是抽象的,只有声明没有具体的实现。

实现是特殊的继承.多用于实现接口关系,也就是类和接口类之间的关系.

图像: 虚线和△,由类指向接口类

泛化

泛化表示类和类之间的继承关系,接口和接口之间的继承关系(此处不同地方说法不懂,需要核实,不过基本思想是普通的继承关系).

图像: 实线和△,由子类指向父类

依赖

依赖关系是类与类之间最弱的关系,A元素变化会影响B元素.

类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用

图像: 虚线和▲,由类指向所依赖的类

关联

关联关系表示一个类和另一类有联系,它使一个类知道另一个类的属性和方法

  • 单向关联:类A当中使用了类B作为成员变量。
  • 双向关联:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。

图像: 实线和▲,由类指向所关联(就是所包含)的类

聚合

todo: 疑惑

聚合关系是整体和部分的关系,是一种强的关系,但是部分可以脱离整体而存在。是关联关系的一种。

耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

图像: ◇实线^,由类指向所关联的类

组合

组合关系是聚合关系的一种变种,便是了更强的组合关系,它要求整体的对象代表部分对象的生命周期。(比如”鸟”和”翅膀”,)

相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。

图像: ◆实线^,由类指向所关联的类