UML(Unified Modeling Language) 统一建模语言,是面向对象软件的标准化建模语言。

UML 词汇表包含 3 种结构块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图汇聚了相关的事物。

事物

UML 中有 4 种事物:结构事物、行为事物、分组事物和注释事物。

结构事物

结构事物(structural thing),结构事物是 UML 模型中的名词。它们通常是模型的静态部分,描述了概念或物理元素。结构事物包括类(class)、接口(interface)、协作(collaboration)、用例(use case)、主动类(active class)、构件(component)和结点(node)。

  1. 类 class

    一个定义了属性和方法的对象。

  2. 接口 interface

    类或者组件的服务函数集合。图形表示:

    UML-Interface

  3. 协作 Collaboration

    一个大的行为或者行为模式。图形表示:

    UML-Collaboration

  4. 用例 Use Case

    系统执行的一系列动作,并产生一个可观察的结果。图形表示:

    UML-UseCase

  5. 主动类 Active Class

    跟类类似,表示与其他行为并发的行为。图形表示:

    UML-ActiveClass

  6. 组件 Component

    系统实现的部分接口的物理或可替换的部分。图形表示:

    UML-Component

  7. 结点 Node

    运行时存在的物理元素,表示资源。图形表示:

    UML-Node

行为事物

行为事物(behavior thing)是 UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。常见的行为事物包括交互(interaction)和状态机(satet machine)。

  1. 交互 Interaction

    由一组消息组成的行为,这些消息在特定的上下文中对象之间交换特定的目的。

    UML-Display

  2. 状态 State-Machine

    规定了对象或交互在其生命周期内的状态。

    UML-State

分组事物

分组事物(grouping thing)是 UML 模型的组织部分,是一些由模型分解成的“盒子”。在所有的分组事物中,最主要的分组事物是包(package)。包的图形表示:

UML-Package

注释事物

注释事物是 UML 模型的解释部分。这些解释事物用来描述,说明模型上的任何元素。

注解(note)是一种主要的注释事物,依附于一个元素或一组元素之上,对它进行约束或解释的简单符号。注解的图形表示:

UML-Comment

关系

UML 中有 4 种关系:依赖、关联、泛化和实现。

依赖

依赖(dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。

关联

关联(assocation)是一种结构关系,它描述了一组链,链是对象之间的连接。

聚合(aggregation)是一种特殊的关联,它描述了整体与个体之间的结构关系。

组合(composition)表示整体与个体之间的关系,是比聚合还强的关联关系,个体不能脱离整体对象而单独存在。

泛化

泛化(generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替换一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。

实现

实现(realization)是类元之间的语义关系,其中一个类元素指定了由另一个类元保证执行的契约。

在两种情况下会使用实现关系:一种是在接口和实现它们之间的类或构件之间;另一种是在用例和实现它们的协作之间。

图(diagram)是一组元素的图形表示,大多数情况下把图画成顶点(事物)和弧(关系)的连通图。

UML 2.0 提供了 13 种图,分别是类图,对象图,用例图,序列图,通信图,状态图,活动图,构件图,部署图,组合结构图,包图,交互概览图和计时图。

其中序列图、通信图、交互概念图和计时图均被称为交互图。

类图

类图(class diagram)展现了一组对象、接口、协作和它们之间的关系。

类图通常包括以下内容:

  1. 接口
  2. 协作
  3. 依赖、泛化和关联关系

类图的多重度:

1:表示一个集合中的一个对象对应另一个集合中一个对象。
0..*:表示一个集合中的一个对象对应另一个集合中的0个或多个对象。
1..*:表示一个集合中的一个对象对应另一个集合中一个或多个对象。
*:表示一个集合中的一个对象对应另一个集合中的多个对象。

指定类成员的可见性,可以使用符号放在成员名称之前,可选的有:

  • + Public
  • - Private
  • # Protected
  • ~ Package/Internal

对象图

对象图(object diagram)展现了某一时刻一组对象以及他们之间的关系,描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。

用例图

用例图(use case diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。包括以下内容:

  1. 用例
  2. 参与者
  3. 用例之间的扩展关系(«extend»)和包含关系(«include»),参与者和用例之间的关联关系,用例与用例以及参与者与参与者此间的泛化关系。
  • 包含关系:一个用例包含了另一个用例,基本用例 --<<include>>--> 被包含用例。如 删除图书 --<<include>>--> 查询图书
  • 扩展关系:用例的特殊情况或可选情况,基本用例 <--<<extend>>-- 扩展用例。注意扩展关系是扩展用例指向基本用例。

交互图

交互图表现为序列图,通信图,交互概览图和时序图。交互图一般包含对象、链和消息。

序列图是强调消息时间顺序的交互图;通信图是强调接收和发送消息的对象的结构组织的交互图;交互概览图是强调控制流的交互图。

  1. 序列图

    序列图(sequence diagram)是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。

    序列图不同于通信图的两个特征:a. 序列图有对象生命线。b. 序列图有控制焦点。

  2. 通信图

    通信图(communication diagram)强调接受消息的对象的结构组织,也被称为协作图。

    通信图不同于序列图的两个特征:a. 通信图有路径。b. 通信图有顺序号。

  3. 交互概览图

    交互概览图(Interaction Overview Diagram)是活动图的变体,描述业务过程中的控制流概览,软件过程中的详细逻辑概览以及多个图进行连接,抽象掉消息和生命线。

  4. 计时图

    计时图(Timing Diagram)关注沿着线性时间轴,生命线内部和生命线之间的条件改变。

状态图

状态图(state diagram)展现了一个状态机,它由状态、转换、事件和活动组成。状态图关注系统的动态视图,对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。

状态图通常包括简单状态和组合状态、转换(事件和动作)。

活动图

活动图(activity diagram)它展现了在系统内从一个活动到另一个活动的流程。活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。

活动图一般包括活动状态和动作状态、转换和对象。

构件图

构件图(component diagram)展现了一组构件之间的组织和依赖。通常吧构件映射为一个或多个类、接口或协作。

组合结构图

组合结构图(composite structure diagram)用于描述一个分类器(如类,协作,用例)的内部结构,分类器与系统中其他组成部分之间的交互端口,展示一组相互写作的实例如何完成特定的任务。

部署图

部署图(deployment diagram)是用来对面向对象系统的物理方面的建模的方法,展现了运行时处理节点以及其中构件的配置。

包图

包图(package diagram)是用于把模型本身组织成层次结构的通用机制,不能执行,展现由模型本身分解而成的组织但愿以及其间的依赖关系。

参考链接