UML
2022 osUML(Unified Modeling Language) 统一建模语言,是面向对象软件的标准化建模语言。
UML 词汇表包含 3 种结构块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图汇聚了相关的事物。
事物
UML 中有 4 种事物:结构事物、行为事物、分组事物和注释事物。
结构事物
结构事物(structural thing),结构事物是 UML 模型中的名词。它们通常是模型的静态部分,描述了概念或物理元素。结构事物包括类(class)、接口(interface)、协作(collaboration)、用例(use case)、主动类(active class)、构件(component)和结点(node)。
-
类 class
一个定义了属性和方法的对象。
-
接口 interface
类或者组件的服务函数集合。图形表示:
-
协作 Collaboration
一个大的行为或者行为模式。图形表示:
-
用例 Use Case
系统执行的一系列动作,并产生一个可观察的结果。图形表示:
-
主动类 Active Class
跟类类似,表示与其他行为并发的行为。图形表示:
-
组件 Component
系统实现的部分接口的物理或可替换的部分。图形表示:
-
结点 Node
运行时存在的物理元素,表示资源。图形表示:
行为事物
行为事物(behavior thing)是 UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。常见的行为事物包括交互(interaction)和状态机(satet machine)。
-
交互 Interaction
由一组消息组成的行为,这些消息在特定的上下文中对象之间交换特定的目的。
-
状态 State-Machine
规定了对象或交互在其生命周期内的状态。
分组事物
分组事物(grouping thing)是 UML 模型的组织部分,是一些由模型分解成的“盒子”。在所有的分组事物中,最主要的分组事物是包(package)。包的图形表示:
注释事物
注释事物是 UML 模型的解释部分。这些解释事物用来描述,说明模型上的任何元素。
注解(note)是一种主要的注释事物,依附于一个元素或一组元素之上,对它进行约束或解释的简单符号。注解的图形表示:
关系
UML 中有 4 种关系:依赖、关联、泛化和实现。
依赖
依赖(dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。
关联
关联(assocation)是一种结构关系,它描述了一组链,链是对象之间的连接。
聚合(aggregation)是一种特殊的关联,它描述了整体与个体之间的结构关系。
组合(composition)表示整体与个体之间的关系,是比聚合还强的关联关系,个体不能脱离整体对象而单独存在。
泛化
泛化(generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替换一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。
实现
实现(realization)是类元之间的语义关系,其中一个类元素指定了由另一个类元保证执行的契约。
在两种情况下会使用实现关系:一种是在接口和实现它们之间的类或构件之间;另一种是在用例和实现它们的协作之间。
图
图(diagram)是一组元素的图形表示,大多数情况下把图画成顶点(事物)和弧(关系)的连通图。
UML 2.0 提供了 13 种图,分别是类图,对象图,用例图,序列图,通信图,状态图,活动图,构件图,部署图,组合结构图,包图,交互概览图和计时图。
其中序列图、通信图、交互概念图和计时图均被称为交互图。
类图
类图(class diagram)展现了一组对象、接口、协作和它们之间的关系。
类图通常包括以下内容:
- 类
- 接口
- 协作
- 依赖、泛化和关联关系
类图的多重度:
1:表示一个集合中的一个对象对应另一个集合中一个对象。
0..*:表示一个集合中的一个对象对应另一个集合中的0个或多个对象。
1..*:表示一个集合中的一个对象对应另一个集合中一个或多个对象。
*:表示一个集合中的一个对象对应另一个集合中的多个对象。
指定类成员的可见性,可以使用符号放在成员名称之前,可选的有:
+
Public-
Private#
Protected~
Package/Internal
对象图
对象图(object diagram)展现了某一时刻一组对象以及他们之间的关系,描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。
用例图
用例图(use case diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。包括以下内容:
- 用例
- 参与者
- 用例之间的扩展关系(«extend»)和包含关系(«include»),参与者和用例之间的关联关系,用例与用例以及参与者与参与者此间的泛化关系。
- 包含关系:一个用例包含了另一个用例,
基本用例 --<<include>>--> 被包含用例
。如删除图书 --<<include>>--> 查询图书
。 - 扩展关系:用例的特殊情况或可选情况,
基本用例 <--<<extend>>-- 扩展用例
。注意扩展关系是扩展用例指向基本用例。
交互图
交互图表现为序列图,通信图,交互概览图和时序图。交互图一般包含对象、链和消息。
序列图是强调消息时间顺序的交互图;通信图是强调接收和发送消息的对象的结构组织的交互图;交互概览图是强调控制流的交互图。
-
序列图
序列图(sequence diagram)是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。
序列图不同于通信图的两个特征:a. 序列图有对象生命线。b. 序列图有控制焦点。
-
通信图
通信图(communication diagram)强调接受消息的对象的结构组织,也被称为协作图。
通信图不同于序列图的两个特征:a. 通信图有路径。b. 通信图有顺序号。
-
交互概览图
交互概览图(Interaction Overview Diagram)是活动图的变体,描述业务过程中的控制流概览,软件过程中的详细逻辑概览以及多个图进行连接,抽象掉消息和生命线。
-
计时图
计时图(Timing Diagram)关注沿着线性时间轴,生命线内部和生命线之间的条件改变。
状态图
状态图(state diagram)展现了一个状态机,它由状态、转换、事件和活动组成。状态图关注系统的动态视图,对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。
状态图通常包括简单状态和组合状态、转换(事件和动作)。
活动图
活动图(activity diagram)它展现了在系统内从一个活动到另一个活动的流程。活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。
活动图一般包括活动状态和动作状态、转换和对象。
构件图
构件图(component diagram)展现了一组构件之间的组织和依赖。通常吧构件映射为一个或多个类、接口或协作。
组合结构图
组合结构图(composite structure diagram)用于描述一个分类器(如类,协作,用例)的内部结构,分类器与系统中其他组成部分之间的交互端口,展示一组相互写作的实例如何完成特定的任务。
部署图
部署图(deployment diagram)是用来对面向对象系统的物理方面的建模的方法,展现了运行时处理节点以及其中构件的配置。
包图
包图(package diagram)是用于把模型本身组织成层次结构的通用机制,不能执行,展现由模型本身分解而成的组织但愿以及其间的依赖关系。
参考链接
- 《软件设计师教程》
- UAH: UML