10.4.4 UML 概述
统一建模语言是面向对象软件的标准化建模语言。
由于其简单、统一,又能变大软件设计中的动态和静态信息,目前已经成为可视化建模语言事实上的工业标准。
从企业信息系统到基于Web的分布式应用,甚至严格的实时嵌入式系统都适合UML 来建模。它是一种富有表达力的语言,可以描述开发所需要的各种视图,然后以此为基础装配系统。
UML 由三个要素组成:
UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。
UML 的词汇表包含三种构造块: 事物、关系和图。
事物是对模型中最具有代表性的成分的抽象:关系把事物结合在一起:图聚集了相关的事物。
1、事物
UML 中有 4 种事物: 结构事物、行为事物、分组事物和注释事物。
(1)结构事物(structural thing)。
结构事物是 UML 模型中的名词。它们通常是模型的静态部分,描述概念与物理元素。
结构事物包括类(class)、接口(interface)、协作(collaboration)、用例(use case)、主动类(active class)、构件(component)和节点(node)。
各种结构事物的图形化表示:
(2)行为事物(behavior thing)。
行为事物是UML 模型的动态部分。
它们是模型中的动词,描述了跨越时间和空间的行为。共有两类主要的行为事物:
交互(interaction)和状态机(state machine)。
交互由特定语境中共同完成一定任务的一组对象之间的交换的消息组成。
一个对象群体的行为或单个操作的行为可以用一个交互来描述。交互涉及一些其他元素,包括消息、动作序列(有一个消息所引起的行为)和链(对象间的连接)。在图形上,把一个消息表示为一条有向直线,通常在表示消息的线段上总有操作名。
状态机描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列。单个类或一组类之间协作的行为可以用状态机来描述。一个状态机涉及到一些其他元素,包括状态、转换(从一个状态到另一个状态的流)、事件(触发转换的事物)和活动(对一个转换的响应)。在图形上,把状态表示为一个圆角矩形,通常在圆角矩形中含有状态的名称机器子状态,如图:
(3)分组事物(grouping thing)。
分组事物是 UML 模型的组织部分。它们是一些由模型分解成“ 盒子 ”。在所有的分组事物中,最主要的分组事物是包(package)。包是把元素组织成组的机制,这种机制具有多种用途。结构事物、行为事物甚至其他分组事物都可以放进包内。
包不像构件(仅在运行时存在),它纯粹是概念上的(即它斤在开发时存在)。包的图形化表示:
(4)注释事物(annotational thing)。
注释事物是 UML 模型的解释部分。
这些注释事物用来描述、说明和标注模型的任何元素。注解(note)是一种主要的注释事物。注解是一个依附于一个元素或者一组元素之上,对它进行约束或解释的简单符号。注解的图形化表示如图:
2、关系
UML 中有 4种关系:依赖、关联、泛化和实现。
(1)依赖(dependency)。依赖是两个事物件的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖图画成一条可能有方向的虚线,如图:
(2)关联(association)。
关联是一种结构关系,它描述了一组链,链是对象之间的连接。
聚集(aggregation)是一种特殊类型的关联,它描述了整体和部分之间的结构关系。关联和聚集的图形化表示如图:
在关联上可以标注重复度(multiplicity)和角色(role)。
(3)泛化(generalization)。
泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替换一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素,如图:
(4)实现(realization)。
实现时类元素之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种地方要遇到实现关系:一种是在接口和实现它们的类和构件之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现关系画成一条带有空心箭头的虚线,如图:
这 4 种关系 是 UML 模型中可以包含的基本关系事物。它们也有变体,例如,依赖的变体有精化、跟踪、包含和延伸。
3、UML 中图
图(diagram)是一组元素的图形表示,大多数情况下吧图画成顶点(代表事物)和弧(代表关系)的连通图。为了对系统进行可视化,可以从不同的角度画图,这样图是对系统的投影。
UML 2.0提供了 13 种图,分别是:
类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、部署图、组合接结构图、包图、交互概览图和时序图。
1) 类图
类图(class diagram)展现了一组对象、接口、协作和它们之间的关系。
在面向对象系统的建模中所建立的最常见的图就是类图。类图给出系统的静态设计视图。
包含主动类的类图给出了系统的静态进程视图。
类图中通常包括下述内容:
(1)类
(2)接口
(3)协作
(4)依赖、泛化和关联关系
2)对象图
对象图(object diagram)展现了一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照。
对象图一般包括对象和链。
3)用例图
用例图(use case diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。
用例图通常包括如下内容,如图
(1)用例
(2)参与者
(3)扩展关系、包含关系
4)交互图
序列图、通信图、交互概览图和时序图均被称为交互图。
(1)序列图。
序列图(sequence diagram)是场景(scenario)的图形化表示,描述了时间顺序组织的对象之间的交互活动。
① 通信图
5)状态图(state diagram)展现了一个状态机,它由状态、转换、事件和活动组成。
6)活动图
活动图(activity diagram)是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。
7)构件图
构件图(component diagram)展现了一组构件之间的组织和依赖。
8)部署图
部署图(deployment diagram)展现了运行处理节点以及其中构件的配置。