在进行对象建模、面向对象分析和设计的过程中,需要使用建模语言来描述分析的过程和结果。统一建模语言(Unified Modeling Language,UML)是为了这个目标而设计的一种标准通用的设计语言。
UML不是一种方法学,而是一种描述语言,它提供了多种类型的模型描述图(diagram),当在某种给定的方法学中使用这些图时,人们就能更容易理解和交流设计思想。UML的图可划分为如下三种类型。
— 静态图(static diagram):描述了那些不发生变化的软件元素的逻辑结构,描绘了类、对象、数据结构及其存在于它们之间的关系。
— 动态图(dynamic diagram):展示了在运行期间的软件实体的变化,描绘了执行流程、实体改变状态的方式。
— 物理图(physical diagram):显示了软件实体的不变化的物理结构,描绘库文件、字节文件、数据文件等,以及存在于它们之间的关系
类 型 | 图 名 | 分析阶段 | 设计阶段 | 实现阶段 |
静态图 | 用例图 | ü |
|
|
| 对象图 | ü | ü |
|
| 类图 | ü | ü | ü |
| 组件图 |
| ü | ü |
| 部署图 |
|
| ü |
动态图 | 协作图 | ü | ü | ü |
| 序列图 | ü | ü | ü |
| 活动图 | ü |
|
|
| 状态图 | ü | ü | ü |
物理图 | 文件、数据库等 | ü | ü | ü |
在一个系统中,类之间存在多种关系,如下所示。
— 继承(inheritance):继承是指一个类从其父类派生而来,继承了父类的属性和方法。基于类的继承叫做一般化(generalization),基于接口的继承,叫做实现(realization)。
— 关联(association):类之间的关联大多用来表示变量实例持有对其他对象的引用,这种关系是半永久的,但没有包含关系。
— 依赖(dependency):依赖是不同类的实例之间的暂时关系。
— 聚合(aggregation):聚合是关联的一种特殊形式,它意味着一种整体/部分(whole/part)的关系,但是部分也可以作为其他整体的组分,而且部分和整体之间也没有生命期的依赖。
— 组合(composition):组合是聚合的一种特殊形式,组合的关联性比聚合更强,部分只能作为唯一的一个整体的部分,而且部分的生命周期依赖于整体的生命周期。