九种常见UML图

1.类图

概述

类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。

类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。

类图不仅用于可视化描述和记录系统的不同方面,也为构建可执行代码的软件应用程序。

类图描述一类的属性和操作,也对系统的约束。被广泛应用于类图的建模的面向对象的系统中,因为它们是唯一的,可以直接映射到面向对象语言的 UML 图。

类图显示集合的类,接口,关联,协作和约束,它也被称为作为结构图。

目的

  1. 分析和设计应用程序的静态视图;
  2. 描述一个系统的责任;
  3. 基地组件图和部署图;
  4. 正向和逆向工程。

示例

类图

车的类图结构为<>,表示车是一个抽象类;

它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;

小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;

小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;

学生与班级之间是聚合关系,使用带空心箭头的实线表示;

学生与身份证之间为关联关系,使用一根实线表示;

学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;

2.对象图

概述

UML 对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。

UML 对象图显示某时刻对象和对象之间的关系。一个UML对象图可看成一个类图的特殊用例,实例和类可在其中显示。

UML 对象图是类图的实例,几乎使用与类图完全相同的标识。

由于对象存在生命周期,因此UML对象图只能在系统某一时间段存在。

目的

对象图的目的与类图类似。

不同的是,一个类图代表一个抽象的模型,包括类和它们之间的关系。但是,由于对象存在生命周期,因此UML对象图只能在系统某一时间段存在。

这意味着对象图是更接近实际的系统行为。目的是在一个特定的时刻捕捉到静态的系统视图。

对象图的目的概述如下:

正向和逆向工程;

一个系统的对象间的关系;

一个交互的静态视图;

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

示例

对象图

上面的对象图代表订单管理系统,顾客在一个特定的时间下单。它具有顾客、订单、特殊订单和一般订单四个对象。现在客户对象(C)是与三个订单对象(O1,O2和O3)。这些订单对象相关联的特殊订单和一般订单对象(S1,S2和N1)。顾客具有以下三个具有不同数目的订单(12,32和40),用于所考虑的特定的时间。

3.组件图

概述

UML 组件图(Component Diagram)又称为构件图,他描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。

组件图 = 构件(Component)+接口(Interface)+关系(Relationship)+端口(Port)+连接器(Connector)。

UML 组件图给提供了将要建立的系统的高层次的架构视图,这将帮助开发者开始建立实现的路标,并决定关于任务分配及(或)增进需求技能。

目的

组件图是一种特殊的 UML 图。与我们之前讨论的 UML 图表的目的都不同。组件图不描述该系统的功能,但它描述了使用这些功能的组件。

所以从这一点来说,组件图用于可视化在一个系统中的物理组件。这些组件包括库,程序包,文件等。

组件图也被描述为一个静态的实施的系统视图,在一个特定的时刻,静态执行代表组织的组成部分。

一个单一的组件图不能代表整个系统,但图的集合可用来代表整个。

组件图的目的概括如下:

可视化系统的组成部分。

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

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

示例

组件图

在购买一件商品时,我们首先是浏览商品,了解商品详情。在商品详细页面上,我们可以看到一个“加入购物车”。可以绘制网上商城组件图,如上图所示:购物车、订单、库存、支付管理组件。

4.部署图

概述

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

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

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

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

部署图是用来描述一个系统的静态部署视图。

目的

部署图与组件图密切相关,部署图是用来描述软件组件部署的硬件组件;而组件图是用来描述组件和显示了它们是如何在硬件中部署。

UML的设计主要是把重点放在系统的软件构件。但是,这两个图是使用特殊图表专注于软件组件和硬件组件。

所以大多数的 UML 图是用来处理逻辑组件,但把重点放在系统的硬件拓扑部署图。

以下是部署图的目的描述:

可视化系统的硬件拓扑。

描述用于部署软件组件的硬件组件。

描述运行时处理节点。

示例

部署图

5.用例图

概述

用例图捕捉了模拟系统中的动态行为,并且描述了用户、需求以及系统功能单元之间的关系。

用例图展示了一个外部用户能够观察到的系统功能模型图。

用例图由主角,用例和它们之间的关系组成。

目的

用例图的目的是捕捉到一个系统的动态方面。

用例图是用来收集系统的要求,包括内部和外部的影响。这些要求大多是设计要求。所以,分析一个系统时要收集其功能用例和确定参与者。

简单来说,用例图的目的如下:

用例图用来收集系统的要求。

用例图用于获取系统的外观图。

用例图识别外部和内部因素影响系统。

用例图显示要求之间的相互作用是参与者。

示例

用例图

6.序列图

概述

序列图亦称为时序图或循序图或顺序图,是一种UML行为图。它通过描写叙述对象之间发送消息的时间顺序,显示多个对象之间的动态协作。它能够表示用例的行为顺序,当运行一个用例行为时,时序图中的每条消息响应了一个类操作或状态机中引起转换的触发事件。

序列图展示对象之间的交互,这些交互是指在场景或用例的时间流中发生的,序列图属于动态建模。

序列图的重点在消息序列上,也就是说,描写叙述消息是怎样在对象间发送和接收的,表示对象之间传送消息的时间顺序。

序列图的组成元素:对象、生命线、激活、消息。

目的

  1. 细化用例的表达。将用例所描述的需求与功能转化为更加正式、层次更加分明的细化表达。
  2. 有效地描述类职责的分配方式。根据顺序图中各对象之间的交互关系和发送的消息,来进一步明确对象所属类的职责。
  3. 丰富系统的使用语境的逻辑表达。系统的使用语境即为系统可能的使用方式和使用环境。

示例

ATM机取款的需求描述如下:

用户通过ATM机,插入银行卡。系统提示输入密码,用户输入密码。系统检查密码是否正确,密码正确用户选择取款。系统提示输入取款金额。用户输入金额,系统判断其合法性。在获取用户输入金额后,系统开始事物处理,减少账户金额,输出相应现金。序列图如下图所示:

序列图

7.协作图

概述

协作图是动态图的另一种表现形式,强调参加交互的各对象结构的信息。协作图是一种类图,包含类元角色和关联角色,而不仅仅是类元和关联。协作图强调参加交互的各对象的组织。

序列图的组成元素:对象、链接、消息。

目的

协作图中对象之间的消息传递来反映具体的使用语境的逻辑表达,表示的是系统的一个行为,消息编号对应了程序中嵌套调用的结构和信号传递过程,显示的对象之间的一种关系。协作图常用于过程的详细设计。

示例

ATM机取现金100元的需求,协作图如下图所示:

协作图

8.状态图

概述

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

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

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

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

目的

UML状态图可以捕获对象、子系统和系统的生命周期,可以告知一个对象可以拥有的状态,并且事件(如消息的接收,时间的流逝、错误、条件为真等)会怎样随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标志状态和复杂行为的类;该图可以确定类的行为以及该行为如何根据当前的状态而变化,也可以展示哪些事件将会改变类的对象的状态。状态图主要是为了模拟响应系统。

以下是使用状态图的主要目的:

  • 为了模拟系统的动态环节。
  • 反应系统模型生命周期。
  • 一个对象来描述不同的状态,在其生命周期的时间。
  • 定义一个状态机模型状态的对象。

示例

状态图

9.活动图

概述

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

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

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

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

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

目的

UML活动图能够捕捉到该系统的动态行为,UML中其它的四个图是用来显示从一个对象到另一个消息流,但活动图是用来显示消息流从一个活动到另一个活动图。

活动图不仅用于可视化系统的动态性质,也可用于通过使用正向和逆向工程技术来构建可执行的系统。唯一缺少的东西在活动图的消息部分。

它并不显示任何消息流程从一个活动到另一个,活动图是一段时间视为流程图。虽然图中看起来像一个流程图,但事实并非如此。它显示不同的流程,如并行,分支,并发单。

以下是 UML 活动图目的描述:

  • 绘制活动流程系统。
  • 描述的顺序从一个活动到另一个。
  • 描述系统并行,分支,并发流。

示例

活动图

参考原文链接:https://www.jianshu.com/p/0d9bf91a2110

九种常见UML图(分类+图解)的更多相关文章

  1. [转]解析UML建模语言中的UML图分类、 UML各种图形及作用

    本文向大家介绍一下UML图分类,作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML图大致可分为五类,共有九种图形. AD: 本文和大家重点讨论一下UML图分类,标准建模语言U ...

  2. 四种常见的APP分类界面布局设计案例学习

    相信各位对于APP设计,已经很熟练啦.如何在熟练的基础上提高我们界面的优美度,或者是进行APP界面的迭代设计. 重构APP设计布局是我们必须要经历的一个过程. 在之前,学习UI设计的时候,经常要接触到 ...

  3. 【转】23种设计模式UML图

    原文:http://blog.csdn.net/bwwlpnn/article/details/7421628

  4. 23种设计模式UML图

  5. Java中9种常见的CMS GC问题分析与解决

    1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省 ...

  6. UML九种图-包图、类图

    UML九种图-包图.类图 一.包 (一)相关概念: 1.包: 一个包=一层=一个命名空间=一个文件夹 2.包的命名: 简单名:王老二 路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班 ...

  7. UML总结4---UML九种图关系说明

    转自:http://blog.csdn.NET/chenyujing1234/article/details/8173519 UML中包括九种图:用例图.类图.对象图.状态图.时序图.协作图.活动图. ...

  8. UML的九种模型图

    本文转自UML 的九种模型图,仅供学习交流! 一.作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML语义:描述基于UML的精确元模型定义. UML表示法:定义UML符号的表示 ...

  9. 浅谈UML的概念和模型之UML九种图

    1.用例图(use case diagrams) [概念]描述用户需求,从用户的角度描述系统的功能 [描述方式]椭圆表示某个用例:人形符号表示角色 [目的]帮组开发团队以一种可视化的方式理解系统的功能 ...

随机推荐

  1. C++ | 程序编译连接原理

    文章目录 预编译(生成*.i文件) 编译(生成*.s文件) 汇编(生成*.o文件,也叫目标文件) 链接(生成*.exe文件,也叫可执行文件) 汇编--目标文件 查看文件头 查看符号表 查看 .o 文件 ...

  2. STM32 HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数

    最近笔者开始学习STM32的HAL库,由于以前一直用标准库进行开发,于是发现了HAL库几点好玩的地方,在此分享. 1.句柄在STM32的标准库中,假设我们要初始化一个外设(这里以USART为例)我们首 ...

  3. word中怎么加入endnote的插件

    首先,打开Microsoft Word 2010,然后点击文件菜单,在弹出的项目中点击选项. 2 弹出Word选项对话框,在左侧导航处点击"加载项"按钮,如图. 3 在右侧内容窗口 ...

  4. “一键”生成HTML——Emmet插件常用语法

    Emmet是一款文本编辑器/IDE的插件,用来快速生成复杂的HTML代码,只要掌握一些常用的语法(类似于CSS选择器),就可以减少重复编码的工作(主要是懒).我个人惯用的是sublime,因此下文介绍 ...

  5. A小程序与B小程序相互跳转的一点记录

    要点速览: A小程序和B小程序关联同一个公众号 B程序的用户授权 A小程序和B小程序的用户关联 诸葛 io 统计用户访问信息 需求:微信放开小程序互跳的 API 后,一些导流和拉新等活动可以在新的小程 ...

  6. 前端react+redux+koa写的博客推荐

    React-Node搭建的博客 曾经用的php+mysql+js写的博客,现在看来已经很low了,所以用目前最火的react+koa框架重构一下.先上地址吧:目前线上版本http://www.liuw ...

  7. java中时间的规范是按美国,SimpleDateFormat怎么处理

    题目3.2: 如果时间的规范是按美国,怎么处理? import java.text.ParseException;import java.text.SimpleDateFormat;import ja ...

  8. IO流入门+简单案例实现

    IO流 总结内容 1. IO流是什么 2. 字符流和字节流 3. File常用API(前面类型为返回类型) 4. 编码转换 5. IO流实现流程 6. 输入输出流简单实现 7. 输入输出流简单实现 总 ...

  9. echarts中boundaryGap属性

    boundaryGap:false boundaryGap:true 代码处: xAxis: { type: "category", data: ["06-01" ...

  10. js new Date()参数格式

    最近在写页面使用new Date()获取时间戳在ie浏览器中测试发现无效:后来发现是参数格式问题, new Date()参数格式如下: 1.用整数初始化日期对象 var date1 = new Dat ...