一、UML是什么?
UML(Unified Modeling Language,统一建模语言)是一种用于软件系统建模的标准化图形化语言。它提供了一组用于描述、可视化、构建和记录软件系统的图形化符号和技术。UML 是一种通用的、标准化的建模语言,广泛应用于软件开发领域。
UML 提供了一套丰富的图形符号,包括类图、对象图、时序图、活动图、用例图等,用于描述系统的结构、行为和交互。通过使用这些图形符号,开发人员可以更好地理解系统的设计和功能,进行系统分析、设计和文档编写。UML 还支持模型的可扩展性和可视化的可视化方式,使得团队成员之间的沟通更加直观和高效。
UML 不仅可以应用于软件系统的建模,也可以用于其他领域的建模,如业务流程建模、系统架构设计等。它是一种通用的、跨平台的建模语言,被广泛接受和应用于软件开发行业。
二、UML 与 面向对象
UML 可以表示出 OO 中所有的概念以及关系。面向对象中的类、对象、接口以及封装、继承、多态的概念都可以用 UML 表示出来。
在OO设计的过程中,有三个基本步骤:
OO Analysis --> OO Design --> OO implementation using OO languages
分析:确定对象,并以适当的方式来描述。如果可以有效地识别出对象,接下来的设计将会非常容易。
设计:对象的要求及其履行情况。
执行:使用编程语言进行实现
三、UML 基本要素
UML 的基本元素包含:事物(Things)、图(Diagrams)、关系(Relationships)
事物(Things):实体抽象化的最终结果,分为四类:结构、行为、分组、注释
- 结构(Structural):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,有类(Class)、接口(Interface)、协作(Collaboration)、用例(Use case)、组件(Component)、节点(Node);
- 类:表示一组具有类似职责的对象
- 接口:定义了一组操作,这些操作指定了类的职责
- 协作:定义了元素之间的交互
- 用例:表示系统位特定目标执行的一组动作
- 组件:描述系统的物理部分
- 节点:可以定义为运行时存在的物理元素
- 行为(Behavioral):行为事物指的是 UML 模型中的动态部分,代表语句里的 “动词”,表示模型里随着时空不断变化的部分,包含两类:交互、状态机;
- 分组(Grouping):可以把分组事物看成是一个"盒子",模型可以在其中被分解。目前只有一种分组事物,即包(package)。
- 注释(Annotational):注释事物可以被定义为一种机制来捕捉UML模型元素的言论,说明和注释。注释是唯一一个注释事物。
关系:显示元素是如何彼此相关联,UML中定义了四种关系(依赖关系依次增强):
- 泛化:generalization 表示符号为 实线+空心三角形
可以表示继承(Inheritance)的关系,两个类之间是“is-a”的关系,是一种表示特殊与一般的关系,Java中对应关键字 extends。
- 实现:realization 表示符号为 虚线+空心三角形
可以表示类对接口的实现(对应Java中的关键字 implements)
- 依赖:dependency 表示符号为 虚线+箭头
可以用来表示类之间“uses-a”的关系,如果类A中的方法操纵另一个类B的对象,就说类A依赖于类B。
- 关联:association 表示符号为 实线+箭头
可以用来表示类之间“has-a”的关系
- 聚合:aggregation 表示符号为 实线+空心菱形
关联关系中的一种特例,可以用来表示类之间“has-a”的关系,例如类A的对象包含类B的对象。
- 组合:composition 表示符号为 实线+实心菱形
关联关系中的一种特例,表示整体与部分的关系,整体与部分不可分离,且有相同的生命周期,是“contains-a”的关系。
图:结构图、行为图两大类。UML 结构图表示系统的静态方面,行为图基本上捕捉系统的动态方面。
结构图:
- 类图
- 对象图
- 组件图
- 部署图
行为图:
- 用例图
- 序列图
- 协作图
- 状态图
- 活动图
四、UML 常见图
-
类图
-
对象图
-
组件图
-
部署图
-
用例图
-
序列图
-
协作图
-
状态图
-
活动图