前言
在软件系统中,类不是孤立存在的,类与类之间存在相互关系,因此,需要通过 UML 来描述这些类之间的关系。
类之间具有如下几种关系:
- 关联关系
- 依赖关系
- 泛化关系
- 接口与实现关系
关联关系
含义:通常将一个类的对象作为另一个类的属性。
表示:在 UML 类图中,用 带箭头的实线 连接有关联的对象所对应的类。
在 UML 中,关联关系 有以下几种类型:
1)双向关联
2)单向关联
3)自关联
4)多重性关联
5)聚合关系
含义:表示一个整体与部分的关系。在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
表示:在 UML 中,聚合关系用 带空心菱形的直线 表示。
6)组合关系
含义:也表示类之间整体和部分的关系。但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之间具有 同生共死 的关系。在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。
表示:在 UML 中,组合关系用 带实心菱形的直线 表示。
依赖关系
含义:在某个类的方法使用另一个类的对象作为参数
表示:在 UML 中,依赖关系用 带箭头的虚线 表示,由依赖的一方指向被依赖的一方。
泛化关系
含义:泛化关系也就是继承关系,泛化关系用于描述父类与子类之间的关系。父类又称作基类或超类,子类又称作派生类。
表示:在 UML 中,泛化关系用 带空心三角形的直线 来表示。
关键字:在 Java 语言中,使用 extends 关键字来实现。
接口与实现关系
含义: 在接口中,一般没有属性,而且所有的操作都是抽象的,只有操作的声明,没有操作的实现。接口和类之间存在一种实现关系,在这种关系中,类实现了接口,类中的操作实现了接口所有声明的操作。
表示:在 UML 中,类与接口之间的实现关系用 带空心三角形的虚线 来表示。
关键字:在 Java 语言中,使用 implements 关键字来实现。
摘自《设计模式》刘 伟 主编 P7