一、基本概念

统一建模语言(Unified Modeling Language,UML)可以为面向对象系统的产品进行说明、可视化和编制文档,是一种非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。UML的本质是为了更好地交流。

二、作用

1 为软件系统建立可视化模型
基于UML的可视化模型,使系统结构直观、易于理解;使用UML进行软件系统的模型不但有利于系统开发人员和系统用户的交流,还有利于系统维护。

2 为软件系统建立构件
它可以使用代码生成器工具将UML模型转换为多种程序设计语言代码,如可生成C++,XML,DTD,JAVA, Visual basic等语言的代码,或使用反向生成器工具将程序源代码转换为UML;甚至还可以生成关系数据库中的表。

3 为软件系统建立文档
可以为系统的体系结构及其所有细节建立文档。不同的UML模型图可以作为项目不同阶段的软件开发文档。

三、分类

UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图。
在这里插入图片描述
也可以分为静态视图和动态视图。静态视图分为:用例图,类图,对象图,包图,构件图,部署图。动态视图分为:状态图,活动图,协作图,序列图。

1 用例图

用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
在这里插入图片描述

2 类图

类图描述类的内部结构和类与类之间的关系,是一种静态结构图。 在类图中,有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

(1) 泛化
是一种继承关系,表示一般与特殊的关系。
在这里插入图片描述
(2) 实现

是一种类与接口的关系,表示类是接口所有特征和行为的实现。
在这里插入图片描述
(3)关联

两个类之间有一定的关联度。如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

代码体现:成员变量

在这里插入图片描述
(4)聚合

是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎,学校和老师。

聚合关系是关联关系的一种,是较强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

代码体现:成员变量(使用set方法设置成员变量)
在这里插入图片描述
(5)组合

是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门,人和眼睛。

组合关系是关联关系的一种,是比聚合关系还要强。

代码体现:成员变量(使用构造方法设置成员变量)

箭头及指向:带实心菱形的实线,菱形指向整体
在这里插入图片描述
(6)依赖

是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

代码表现:局部变量、方法的参数或者对静态方法的调用

箭头及指向:带箭头的虚线,指向被使用者。
在这里插入图片描述
(7)类图示例
在这里插入图片描述

3 对象图

对象图(object diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。它是系统在某一个特定时间点上的静态结构,是类图的实例和快照,常用于表示复杂类图的实例。对象图实质上是具有关联关系的类图的实例。
在这里插入图片描述

4 状态图

描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。状态图是对类图的补充。
在这里插入图片描述

5 活动图

为了完成某个目标需要做的活动以及这些活动的执行顺序,着重表现的是系统的行为。本质是一种流程图,它描述了活动到活动的控制流。  
在这里插入图片描述
(1)带泳道的活动图

泳道表明每个活动是由哪些人或哪些部门负责完成。
在这里插入图片描述
(2)带对象流的活动图
用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。对象流用带有箭头的虚线表示。
在这里插入图片描述

6 序列图(时序图)

交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序。序列图的主要用途是把用例表达的需求,进行更加精细的表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。

消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
在这里插入图片描述

7 协作图

交互图的一种,描述了收发消息的对象的组织关系,强调对象之间的合作关系。时序图按照时间顺序布图,而协作图按照空间结构布图。
在这里插入图片描述
在这里插入图片描述

8 构件图

描述各种构件之间的依赖关系。构件时的单个组成部分,可以是一个文件,产品、可执行文件和脚本等。
在这里插入图片描述
在这里插入图片描述

9 部署图(配置图)

部署图描述一个系统运行时的硬件节点、在这些节点上运行的软件构件将在何处物理运行以及它们将如何彼此通信的静态视图。
在这里插入图片描述
小结:
用例图描述系统的外部交互、序列图描述系统的内部交互、状态图描述系统的动态特性、部署图描述系统的物理节点、类图与对象图描述依赖关系。

四、UML绘图工具选择

Visio,亿图图示

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐