文章目录
- 一、UML 是什么?
- 二、UML 与 面向对象
- 三、UML 基本要素
- 四、UML 常见图
-
概述
UML 是统一建模语言(Unified Modeling Language)的缩写。UML 提供了标准通用的图形化设计语言,使得在构建计算机应用时,开发团队的成员更高校直观地进行交流,用来绘制软件的蓝图。同时,UML 很好地支持面向对象的设计范式。
-
详情
一、UML 是什么?
UML 是 Unified Modeling Language 的缩写,即统一建模语言或标准建模语言。1997年,由OMG 组织(Object Management Group对象管理组织)发布。目的是为开发团队提供标准通用的设计语言来开发和构建计算机应用。
UML 提出了一套 IT 专业人员期待多年的统一的标准建模符号。通过使用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”的关系。
- 结构(Structural):结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,有类(Class)、接口(Interface)、协作(Collaboration)、用例(Use case)、组件(Component)、节点(Node);
图:结构图、行为图两大类。UML 结构图表示系统的静态方面,行为图基本上捕捉系统的动态方面。
结构图:
- 类图
- 对象图
- 组件图
- 部署图
行为图:
- 用例图
- 序列图
- 协作图
- 状态图
- 活动图
四、UML 常见图
-
类图
定义系统中的类,描述类的内部结构 (属性, 方法等),表示类之间的关系 (泛化、实现、依赖、关联、聚合、组合);
类的表示:
-
名称部分(Name) : 在顶端存放;
-
属性部分(Attribute) : 在中间存放属性,属性类型(AttributeType),初始值(InitialValue);
👉 语法:[可见性] 属性名 [:类型][ =初始值][{属性字符串}]
注:[]中的内容可选👉 可见性:公有(public + ),私有(private - ),受保护(protected # ),UML中不存在默认, 如果没有任何符号,就表示没有定义该属性。
-
方法部分(Operation) : 底部存放操作,参数表(arg:ArgumentType),返回值(ReturnType);
👉 语法:[可见性] 操作名 [( 参数表 )][ : 返回类型][ { 属性字符串 } ]
👉 主要包括 公有(public +),私有(private -),受保护(protected #),包内公有(package ~);
💡 可以增加注释部分,进行解释说明
-
-
对象图: 对象图可以被想象成正在运行的系统在某一时刻的快照
-
组件图: 又称为构件图,他描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。
-
部署图: 部署图与组件图密切相关,部署图是描述部署软件组件的硬件组件;而组件图是用来描述组件以及它们是如何在硬件中部署。
-
用例图:
用例图的目的是捕捉到一个系统的动态方面。用例图是用来收集系统的要求,包括内部和外部的影响。这些要求大多是设计要求。所以,分析一个系统时要收集其功能用例和确定参与者。
-
序列图:UML 交互图主要包括对象和消息两类元素,**创建交互图的过程实际上就是向对象分配任务的过程。**序列图又叫时序图。
以下序列图中包含了四个对象:客户、订单、特殊订单和正常订单。
首先调用的是 sendOrder(),这是一个订单对象的方法;在下一次调用 *confirm(),*这是一个 SpecialOrder 对象的方法;最后调用 Dispatch(),它是 SpecialOrder 对象的一种方法。这里的图主要描述方法从一个对象到另一个对象的调用,在系统运行时这也是实际情况:
-
协作图
-
状态图: 状态图是用来描述不同的对象在其生命周期的状态。
在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个中止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、中止状态和判定等组成,一个简单的状态图如下:
-
活动图:
References:
w3c school uml 教程
UML实践详细经典教程
tutorialspoint – learn uml