菜鸟笔记
提升您的技术认知

如何画UML图

uml
一,UML概述
什么是uml
UML 是 OMG 在1997年1月提出了创建由对象管理组和 UML1.0 规范草案;

		UML 是一种为面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言;

		UML 作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现;

		UML 是不同于其他常见的编程语言,如 C + +,Java中,COBOL 等,它是一种绘画语言,用来做软件蓝图;

		UML 不是一种编程语言,但工具可用于生成各种语言的代码中使用 UML 图;

		UML 可以用来建模非软件系统的处理流程,以及像在一个制造单元等.
	 	UML 的目标就是 UML 被定义为一个简单的建模机制,帮助我们按照实际情况或者按照我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化。
	 uml概念模型:
  • 概念模型被定义为模型,他是由概念和他们之间的关系组成的

  • 概念魔性是在绘制uml图之前,他帮助了解在现实世界中的各个实体,以及它们之间的相互交流。
    uml描述的实时系统,是一个很重要的概念模型
    掌握概念模型需要学习以下三大要素:

  • uml构建模块

  • 规则模块

  • uml公共机制
    uml面向对象的概念:
    uml描述为面向对象的分析和设计的继承者
    对象是现实世界的实体存在我们周围像抽象,封装,继承,多态的基本概念,都可以使用 UML 表示。因此,UML 是强大到足以代表所有的概念存在于面向对象的分析和设计

面向对象设计
调查就是为面向对象的分析,就是调查对象。设计是确定对象的协作
面向对象的分析和设计的目的可以描述为:

  • 确定一个系统的对象
  • 确定他们之间的关系
  • 做一个设计,使用面向对象的语言可以转换为可执行文件
    三种基本应用面向对象的概念和实施步骤。步骤可以被定义为:
OO Analysis --> OO Design --> OO implementation using OO languages

以上三点可以详细描述:

在面向对象的分析,最重要的目的是确定对象和描述他们以适当的方式。如果这些对象的有效识别,那么接下来的设计工作是很容易的。对象应确定职责。职责是对象所执行的功能。每一个对象具有某种类型的要执行的责任。当这些责任协作系统的目的达成。

第二阶段是面向对象的设计。在这个阶段的重点是要求及其履行情况。在这一阶段中的对象根据其预期的关联协作。协作完成设计也完成了。

第三阶段是面向对象的执行。在这个阶段,设计采用面向对象语言,如 Java,C++ 等。

UML 在面向对象设计中的作用:
如果我们观察到类图,对象图,协作图,交互图,将基本上基于对象的设计。

因此,面向对象的设计和 UML 之间的关系是非常重要的理解。根据要求,面向对象的设计转化为 UML 图。在详细了解 UML 的面向对象的概念应该学会正确。的面向对象的分析与设计完成后,下一步是很容易的。从面向对象的分析与设计的输入是输入的UML 图。

uml基本元素:

  • 三个基本模块:事务,关系,图
  • 四种事务:
    结构事务:类,接口,协作,用例,活动类,组件,节点。
    行为事务:交互,状态机
    分组事务:包
    注释事务:注释
  • 四种关系:
    依赖
    关联
    实现
    泛华
  • 十种图:
    用例图,类图,对象图,包图,部署图,活动图,状态图,序列图,协作图,组件图

uml注释:
uml中最重要的模型元素是符号
适当有效的使用符号对一个完整的,有意义的模型来说是重要的。
在学习uml的时候就要强调表示发的重要性,不同的符号用于表示物件和关系

uml核心:
uml的核心是图表,大致可以把这些图归类为结构图和行为图

  • 结构图就是静态图,如类图,对象图等静态图
  • 行为图:是由序列图,协作图等动态图
    一个系统的静态和动态特性是通过使用这些图的可视化

uml类图:
类图是使用面向对象的最流行的uml图。他描述了在一个系统中对象和他们之间的关系,能够让我们正确编写代码之前对系统有一个全面的认识
一个单独的雷图描述系统的一个具体方面,搜集类图表示整个系统。类图表示系统的静态试图
类图是唯一一个可以直接映射到面向对象的语言的uml图。广泛应用于开发者社区

uml对象图:
对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。
在UML中,对象图使用的是与类图相同的符号和关系,因为对象就是类的实例。

组件图:
组件图是一种特殊的UML图来描述系统的静态实现视图。组件图包括物理组件,如库,档案,文件夹等。

此图是用来从实施的角度。使用一个以上的元件图来表示整个系统。正向和逆向工程技术的使用,使可执行文件组件图。

UML 部署图:
组件图是用来描述一个系统的静态部署视图。这些图主要用于系统工程师。

部署图是由节点和它们之间的关系。一个高效的部署图是应用软件开发的一个组成部分。

UML 用例图:
用例图是从用户角度描述系统功能,并指出各功能的操作者,用来捕捉系统的动态性质。

一个高层次的设计用例图是用来捕捉系统的要求,因此它代表系统的功能和流向。虽然用例图的正向和反向工程是不是一个很好的选择,但他们仍然在一个稍微不同的方法来模拟它。

UML 交互图:
交互图,用于捕获系统的动态性质。

交互图包括序列图和协作图,其中:序列图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显示对象间的动态合作关系。

UML 状态图:
状态图是一个用于模拟系统的动态性质的五个图。这些图用来模拟一个对象的整个生命周期。

一个对象的状态被定义为对象所在的条件下,特定的时间和对象移动对其他状态,在某些事件发生时。状态图还用于正向和反向工程。

状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。

UML 活动图:
活动图是 UML 的动态模型的一种图形,一般用来描述相关用例图,活动图是一种特殊的状态图。
准确的活动图定义:活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。活动图是一种特殊的状态图,它对于系统的功能建模特别重要,强调对象间的控制流程。

UML构建模块
UML 的概念模型需要掌握的三大要素是:

  • UML构建模块(三要素:事物,关系,图)
  • 规则连接构建模块
  • UML的公共机制

事物:
事物是实体抽象化的最终结构,是uml构建块最重要的组成部分,事物的分类如下:
结构事务,行为事物,分组事务,注释事物
结构事物:结构事物是模型中的静态部分,用以呈现概念或实体的表现元素,是软件建模中最常见的元素,接下来是对结构化物件的简要描述:
类(class):具有相同属性,方法,关系,语义的对象的集合

接口(interface):是类或组件所提供的服务(操作),描述了类或组件对外可见的动作

协作(collaboration):协作定义了元素的相互作用

用例(use case):定义了执行者(在系统外部和系统交互的人)和被考虑的系统之间的交互来实现的一个业务目标

组件(component):组件描述物理系统的一部分

节点:定义为在运行时存在的物理元素

行为 事物:是uml模型中的动态部分,随着时空不断变化的部分,包括两类:
交互:被定义为一种行为,包括一组元素之间的消息交换来完成特定的任务

状态机:有一系列对象的状态组成,他是有用的,一个对象在其生命周期的状态很重要

分组事务:可以看成是一个盒子,模型可以在其中被分解,目前只有一种分组事务,包(package).结构事务,行为事物甚至分组事物都可以放入一个包中,只存在于开发阶段,而组件在运行时存在

包:唯一一个分组事物可搜集结构和行为的东西

注释事物:定义为一种机制用来捕捉uml模型元素的言论,说明和注释。注释是唯一一个注释事物
注释:主适用于渲染意见,结束等的uml元素

二,关系:是另一个uml的构建块,它显示了元素是如何彼此关联,此关联描述的是一个应用程序的功能,uml定义了四种关系:
依赖关系:两件事物之间的语义关系,其中一个事物的变化会影响另一个事物。

协作:一组对象之间连接的关系,聚合关系(整体和部分间的结果关系)

泛华:一个专门的元件连接与一个广义的元素,它基本上描述了在对象世界中的继承关系,是一种一般化-特殊化的关系

三,uml图
图是事物集合的分类,UML 中包含多种图:

类图:类图描述系统所包含的类、类的内部结构及类之间的关系;
对象图:对象图是类图的一个具体实例;
用例图:用例图从用户的角度出发描述系统的功能、需求,展示系统外部的各类角色与系统内部的各种用例之间的关系;
顺序图:顺序图表示对象之间动态合作的关系;
协作图:协作图描述对象之间的协作关系;
活动图:活动图描述系统中各种活动的执行顺序。
状态图:状态图描述一类对象的所有可能的状态以及事件发生时状态的转移条件;
部署关系图:部署关系图定义系统中软硬件的物理体系结构;
组件图:组件图描述代码部件的物理结构以及各部件之间的依赖关系;

uml架构
是由视图,图,模型元素和通用机制等几个部分构成
视图用来表示被建模系统的各个方面。由多个图构成,它不是一个图片,而是在某一个抽象层上,对系统的抽象表示。如果要为系统建立一个完整的模型图,只需定义一定数量的视图,每个视图表示系统的一个特殊方面就可以了。视图还把建模语言和系统开发时选择的方法或过程连接起来。

图由各种图片构成,用来描述一个视图的内容。UML语言定了9中不同的图的类型,把它们有机地结合起来就可以描述系统的所有视图。

模型元素代表面向对象中的类、对象、消息和关系等概念,是构成图的最基本的常用概念。
通用机制用于表示其他信息,比如注释、模型元素的语义等。它还提供扩展机制,使UML语言能够适应一个特殊的方法(或过程)、或扩充至一个组织或用户。

从不同的角度使用 UML 定义一个系统的起着重要的作用,这些角度是:
设计,实现,处理,部署

UML建模类型
UML 建模可以把在复杂世界的许多重要的细节给抽象出。为了区分 UML 模型, UML 建模用不同类型的不同的图。接下来介绍三个重要类型的UML建模:
结构建模:
结构建模具有捕捉静态的功能,包括:
类图
对象图
部署图
包图
复合结构图
组件图

行为建模:
、 行为建模描述了在系统中的相互作用,代表之间的交互的结构图,行为建模显示系统的动态性质,包括下列各项:
活动图
交互图
用例图

架构建模:
架构建模表示的是一个系统的总体框架,它包含了系统的结构和行为的元素。架构建模可以被定义为整个系统的蓝图。包图是根据架构模型进行的。

类注释:

对象表示法:

接口表示法:

协作表示法:

用例表示:

角色图:某些内部或外部的与系统进行交互的实体,可以被定义为一个角色

初始化状态表示法:以现实开始的一个过程

最终状态表示法:
用来显示一个过程的结

活动类表示法:一般用来描述一个系统的并发行为


元件表示法:

节点表示法:表示一个物理的系统组件


行为事物:包括交互和状态机。
相互作用可分为两种类型:

顺序(序列图)
协作(协作图)

交互表示法:交互基本上是两个 UML 组件之间的信息交换。下图表示交互中使用不同的符号。交互是用来表示一个系统的组件之间的通信。

状态机表示法:状态机描述的组件在其生命周期的不同状态。


状态机是用来描述一个系统组件的不同状态。状态可以是活动,空闲或任何其他根据情况。

分组事物:UML 中只有一个元件即可用于分组,也就是包。
包表示法:
包装信息书写方式如下表所示,这是用来包装系统组成部分的。

注释事物:
注释表示法:它们被用来提供一个系统的必要的信息。

依赖表示法:
依赖是UML元素的一个重要方面。它描述了相关的元素和方向上依赖关系。

依赖关系的虚线箭头表示,如下所示。箭头代表的独立元素,另一端的依赖元素。

协作表示法:
协作介绍 UML 图中的元素相关联。简单的一句话,它介绍了多少个元素参与互动。

联合会(无)两侧的箭头的虚线表示。两端代表两个相关联的元素,如下所示。在两端(1,*等)的多样性也提到多少对象相关。协作是用来表示一个系统的两个元素之间的关系。


泛化表示法:泛化介绍了面向对象世界的继承关系。这是父与子的关系。描述一个系统的两个元素的亲子关系。

可扩展性表示法:
定型观念(代表新元素)
标记值 (代表新的属性)
约束 (代表界限)


如何画类图:
类图中的名称应该是有意义的描述,并且是面向系统的。

画类图前应先确定每个元素之间的关系。

类图中的每个类职责(属性和方法)应该清晰标明。

对于每个类的属性的最小数量应符合规定,不必要的属性将使图表复杂。

使用了以下注释有否要求来描述图中的某些方面。因为上面的附图,它应该是可以理解的开发者/编码器。

最后,在最终版本之前,该图应绘制在普通纸上尽可能多次,使其纠正和返工。

下图是一个二阶系统的一个应用程序的一个例子,它描述了整个应用程序的一个特定方面:

系统中的两个要素是所有订单以及客户,他们有一个一对多的关系,因为一个客户可以有多个订单。

我们将保持 Order 类是一个抽象类,它有两个具体的类(继承关系)SpecialOrder 和 NormalOrder。

两个继承类 Order 类的所有属性。此外,他们有额外的功能 dispatch () 和 receive ().

在哪里使用类图?
类图是一个静态图,它是用来模拟一个系统的静态视图,也被认为是类图作为基础组件图和部署图。

类图不仅用于可视化系统的静态视图,但它们也可用于构建可执行代码的任何系统中的前向和反向工程。

UML 图一般不直接映射到任何面向对象的编程语言,但在类图是一个例外。
因此类图可以用来:

描述系统的静态视图。

显示静态视图中的元素之间的协作。

由系统执行的功能的描述。

构建软件应用面向对象的语言。

UML 对象图概述:UML 对象图显示某时刻对象和对象之间的关系。一个UML对象图可看成一个类图的特殊用例,实例和类可在其中显示。
由于对象存在生命周期,因此UML对象图只能在系统某一时间段存在。
UML 对象图目的:
不同的是,一个类图代表一个抽象的模型,包括类和它们之间的关系。但是,由于对象存在生命周期,因此UML对象图只能在系统某一时间段存在。

这意味着对象图是更接近实际的系统行为。目的是在一个特定的时刻捕捉到静态的系统视图。
对象图的目的概述如下:
正向和逆向工程。

一个系统的对象间的关系

一个交互的静态视图。

了解对象的行为和他们的关系从实用的角度来看

组件图 = 构件(Component)+接口(Interface)+关系(Relationship)+端口(Port)+连接器(Connector)UML 组件图给提供了将要建立的系统的高层次的架构视图,这将帮助开发者开始建立实现的路标,并决定关于任务分配及(或)增进需求技能。
组件图的目的概括如下:
可视化系统的组成部分。

构建的可执行文件,使用正向和反向工程。

描述的组织和组件的关系。

组件图是用来描述一个系统的物理构件。此神器包括文件,可执行文件,库等。

UML 部署图概述:
部署图由节点以及节点之间的关系组成。

部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。

部署图通常用来帮助理解分布式系统,一个系统模型只有一个部署图。

部署图用于可视化的软件组件部署的系统中的物理组件的拓扑结构。

部署图是用来描述一个系统的静态部署视图。
UML 部署图元素
1、结点(Node)

结点是存在与运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统,比如64主机、Windows server 2008操作系统、防火墙等。

2、结点实例(Node Instance)

结点实例的命名格式:Node Instance : node。它与结点的区别在于名称有下划线和结点类型前面有冒号,冒号前面可以有示例名称也可以没有示例名称,如下图:

3、结点类型(Node Stereotypes)

结点类型有:cdrom、cd-rom、computer、disk array、pc、pc client、pc server、secure、server、storage、unix server、user pc,并在结点的右上角用不同的图标表示,如下图:

4、物件(Artifact)

物件是软件开发过程中的产物,包括过程模型(比如用例图、设计图等等)、源代码、可执行程序、设计文档、测试报告、需求原型、用户手册等等。物件表示如下,带有关键字 artifact 和文档图标


5、连接(Association)

结点之间的连线表示系统之间进行交互的通信路径,这个通信路径称为连接(Association),如下图所示,连接中有网络协议:

6、结点容器(Node as Container)

一个结点可以包括其他的结点,比如组件或者物件,则称此结点为结点容器(Node as Container)。如下图所示,结点(Node)包容了物件(Artifact):


UML 交互图概述:UML 交互图描述的是对象之间的动态合作关系以及合作过程中的行为次序 uML 交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况,即一个用例的实现过程。
UML 交互图包括两种:序列图和协作图。
序列图 :显示对象之间的关系,强调对象之间消息的时间顺序,显示对象之间的交互。

协作图 :描述对象之间的交互关系。
交互图捕捉一个系统的动态行为;

交互图用来描述该系统中的消息流;

交互图用来描述对象的结构组织;

交互图是为了描述对象之间的互动。
交互图的作用就是捕捉系统的动态环节。动态环节可以定义为在一个特定的时刻运行的系统快照
在绘制交互图之前,确定以下条件:

参与互动的对象;

对象之间的消息流;

消息的顺序流程;

对象的组织。

序列图是用来捕获从一个对象到另一个消息流的顺序;协作图用来描述参与相互作用中的对象的结构组织。

UML 状态图概述:
UML 状态图是图表本身的名称,主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。

UML 状态图描述了一个状态机,可以被定义为一台机器,它定义了一个对象,这些状态控制外部或内部事件的不同状态。

状态机由状态、转换、事件、活动和动作五部分组成。

状态:状态指的是对象在其生命周期中的一种状况,处于某个特定状态中的对象必然会满足某些条件、执行某些动作或者是等待某些事件。一个状态的生命周期是一个有限的时间阶段。
转换:转换指的是两个不同状态之间的一种关系,表明对象在第一个状态中执行一定的动作,并且在满足某个特定条件下由某个事件触发进入第二个状态。
事件:事件指的是发生在时间和空间上的对状态机来讲有意义的那些事情。事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态,如信号、对象额度创建和销毁等。
活动:活动指的是状态机中进行的非原子操作。
动作:动作指的是状态机中可以执行的哪些原子操作。所谓原子操作,指的是他们在运行的过程中不能被其他消息中断,必须一直执行下去,以至最终导致状态的变更或者返回一个值。

绘制状态图之前,我们必须明确以下几点:

识别对象,以进行分析。

识别状态。

识别的事件。

在UML中,状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。状态的转换由事件触发,状态和状态之间由转换箭头连接。每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始。还有一个中止状态(半实心圆),用来表示状态机的终止。状态图主要由元素状态、转换、初始状态、中止状态和判定等组成,一个简单的状态图如下:

1.状态:状态用于对实体在其生命周期中的各种状况进行建模,一个实体总是在有限的一段时间内保持一个状态。状态由一个带圆角的矩形表示,状态的描绘素应该包括名称、入口和出口动作、内部转换和嵌套状态。如下图,为一个简单状态:

状态名指的是状态的名字,通常用字符串表示,其中每个单词的首字母大写。状态名可以包含任意数量的字母、数字和除了冒号“:”以外的一些字符,可以较长,甚至连续几行。但是一定要注意一个状态的名称在状态图所在的上下文中应该是唯一的,能够把该状态和其他状态区分开。
入口和出口动作一个状态可以具有或者没有入口和出口动作。入口和出口动作分别指的是进入和退出一个状态时所执行的“边界”动作。
内部转换指的是不导致状态改变的转换。内部转换中可以包含进入或者退出该状态应该执行的活动或动作。
嵌套状态状态分为简单状态(Simple State)和组成状态(Composite State)。简单状态是指在语义上不可分解的、对象保持一定属性值的状况,简单状态不包含其他状态:而组成状态是指内部嵌套有子状态的状态,在组成状态的嵌套状态图部分包含的就是此状态的子状态。

2.转换:在UML的状态建模机制中,转换用带箭头的直线表示,一端连接源状态,箭头指向目标状态。转换还可以标注与此转换相关的选项,如事件、监护条件和动作等,如下图所示。注意:如果转换上没有标注触发转换的事件,则表示此转换自动进行。


监护条件(Guard Condition):是一个布尔表达式。当接收到触发事件要触发转换时,要对该表达式求值。如果表达式为真,则激活转换:如果表达式为假,则不激活转换,所接收到的触发事件丢失。

动作(Action):是一个可执行的原子计算。
通常初始状态上的转换是无监护条件的,并且初始状态只能作为转换的源,而不能作为转换的目标。在UML中,一个状态图只能有一个初始状态,用一个实心圆表示。

终止状态:终止状态是一个状态图的终点,一个状态图可以拥有一个或者多个终止状态。对象可以保持在终止状态,但是终止状态不可能有任何形式的和触发转换,它的目的就是为了激发封装状态上的转换过程的结束。因此,终止状态只能作为转换的目标而不能作为转换的源,在UML中,终止状态用一个含有实心圆的空心圆表示。

.判定:活动图和状态图中都有需要根据给定条件进行判断,然后根据不同的判断结果进行不同转换的情况。实际就是工作流在此处按监护条件的取值发生分支,在UML中,判定用空心菱形表示

UML 活动图概述:
UML 活动图是 UML 的动态模型的一种图形,一般用来描述相关用例图。

UML 活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。

UML 活动图是一种特殊的状态图,它对于系统的功能建模特别重要,强调对象间的控制流程。

UML 活动图是一种表述过程基础、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模

UML 活动图基本上是代表流程形成一个活动到另一个活动的流程图。活动可以被描述为一个系统的操作。
以下是 UML 活动图目的描述:

绘制活动流程系统。

描述的顺序从一个活动到另一个。

描述系统并行,分支,并发流。

下图绘制的四个主要活动:

由客户发送订单

收到订单

确认订单

分发订单

收到订单后请求状态进行检查,以检查它是否是正常的或特殊的顺序。不同的顺序确定之后,执行调度活动,并标记为终止进程。