如果是准备学习设计模式的同学,可以只了解类图相关的知识

而如果是在准备软件设计师考试的同学,或许会对你有点帮助

正在施工......

参考博客:https://blog.csdn.net/unique_perfect/article/details/104989118


UML 统一建模语言

统一建模语言(UML,Unified Modeling Language)是面向对象软件的标准化建模语言。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已成为可视化建模语言的工业标准。在软件无线电系统的开发过程中,统一建模语言可以在整个设计周期中使用,帮助设计者缩短设计时间,减少改进的成本,使软硬件分割最优。

UML 中的三个基本模块:事务,关系,图。


UML 分类

类就像是工厂中的流水线,而对象就是流水线上制作出的产品。

UML 静态结构图

静态结构图就是基于类用于描述这条流水线的。

图名 作用
类图 表示分析设计领域的静态结构
对象图 表示系统中的多个对象在某一时刻的状态
包图 对UML的模型元素进行分组整理,还可以表示多个包之间的关系
构建图 表示构成软件的各个可重复再利用的部件的内部结构以及部件之间的相互关系
结合结构图 表示具有复杂内部结构的类或者构件的内部结构
部署图 表示系统执行时的硬件构成以及硬件节点之间的关系

UML 动态行为图

动态行为图基于对象用于描述这条流水线上的产品的交互、行为等。

图名 作用
用例图 表示从系统外部看到的系统所提供给用户可以使用的功能
活动图 表示某个业务的具体处理流程
状态图 表示某个对象在其生命周期内,各个状态之间的迁移变化及引起状体迁移的触发事件之间的关系

下面这三种图都属于(交互图)

图名 作用
顺序图 按照时间顺序从上到下来表示生命线之间的信息交互,可结合用例图表示某个用例的场景。
通信图 以参与交互的生命线之间的连接为着眼点表示生命线之间的信息交互。交互概念图:用活动图的形式表示多个交互之间的控制关系。
时序图 表示多个生命线的状态变化和时间之间的关系。

用例图

用例图是9种UML图中比较重要的图之一,它是由软件需求分析到最终实现的第一步,描述人们希望如何使用一个系统,最常用来描述系统以及子系统。

用例图的组成

事务 描述 图例
参与者(Actor) 与应用程序或系统进行交互的用户、组织或外部系统。
用例(UseCase) 用例就是外部可见的系统功能,对系统提供的服务进行描述。
子系统(Subsystem) 用来展示系统的一部分功能,这部分功能联系紧密。

用例图所包含的的关系

用例图中涉及的关系有:关联、泛化、包含、扩展。

a. 关联(Association)

表示参与者与用例之间的通信,任何一方都可发送或接受消息。

【箭头指向】:无箭头,将参与者与用例相连接,指向消息接收方

b. 泛化(Inheritance)

就是通常理解的继承关系。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。

【箭头指向】:指向父用例

c. 包含(Include)

提取公共交互,提高复用

【箭头指向】:指向分解出来的功能用例

d. 扩展(Extend)

“冻结”基用例以保持稳定,并且动态扩展基用例功能

【箭头指向】:指向基础用例

例子比如这是一个用户管理的用例图


类图

类图是描述系统中的类,以及各个类之间的关系的静态视图。是面向对象系统建模中最常用和最重要的图,是定义其他图的基础。

类图示例

一个Employee类,它包含private属性age,protected属性name,public属性email,package属性gender,public方法work()。

  • +、-、#、~ 表示属性及方法可见性

    • public 用 + 表示
    • private 用 - 表示
    • protected 用 # 表示
    • package 用 ~ 表示

接口的UML图示

在UML类图中,常见的有以下几种关系

关系 指向 例子 图示
泛化 从子类指向父类,或者子接口指向父接口。 类和子类的关系。比如学生类可以继承人类。
实现 箭头指向成员变量类。 两个类之间的关联,也可以是一个类和自身的关联。比如班级类和学生类,学生类作为成员变量存在于班级类中。
关联 箭头指向成员变量类。 两个类之间的关联,也可以是一个类和自身的关联。比如班级类和学生类,学生类作为成员变量存在于班级类中。
依赖 箭头指向入参类 一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如班级类和学生类,班级类作为学生类的方法入参。
聚合 菱形部分指向整体,箭头指向个体 整体和部分的关系。比如大雁和雁群之间的关系,两者不是生命周期不同。
组合 菱形部分指向整体 整体和部分关系、整体部分不可分离、比聚合更强。比如大雁和大雁翅膀的关系,两者是同生共死的。

类图示例


对象图、包图

对象图的组成

对象图中的建模元素有对象

对象之间的关系,被称为链。

对象是类的实例,链是关联的实例

对象的基本特征可以归纳为对象的属性行为两类,对象名必须小写

包图

可类比java中的包机制

包图只有依赖关系

当一个包将另一个包导入时,该包里的元素能够使用被导入包里的元

素,而不必在使用时通过包名指定其中的元素。

例如,当使用某个包中的类时,如果未将包导入,则需要使用包名加

类名的形式引用指定的类。在导入关系中,被导入的包称为目标包。

要在UML中显示导入关系,需要画一条从包连接到目标包的依赖性箭

头,再加上字符import,如图所示。

A包导入B包,则可以直接使用B包中的类。如果没有的话,则是B.类表示


活动图

活动图本质是上是一种流程图,但是活动图是面向对象的,而流程图是面

向过程的。

活动图与流程图的区别

区别 流程图 活动图
描述 着重描述处理过程(顺序分支循环)流程图做不到 描述的则是对象活动的顺序关系所遵循的规则。
思想 面向过程 面向对象
方向 有着严格的处理顺序和处理时间关系(不能表示并发活动的情形) 着重表现的是系统的行为,而非处理过程。(能够表示并发活动的情形)

活动图实例

网吧会员系统


顺序图(跟协作图,也叫做通信图等价)

顺序图主要有:对象、生命线、消息和激活。用来建模以时间顺序安排的对象交互,并且把用例行为分配给类。

  • 小人:动作的发起人
  • 矩形/小圆圈:对象
  • 实线箭头:调用
  • 虚线箭头:返回
  • 柱状:对象的生命周期,柱状不能断,在同一流程当中不能断。
  • 回折线:当前对象中的方法执行过程中调用自己当前类中的方法

顺序图和协作图的异同

  • 相同点

    • 顺序图和协作图都可以表示对象间的交互关系,但它们的侧重点不同。
    • 都能体现出系统用例的行为。
异同点 顺序图 协作图
对象间通信方式 用消息的几何排列关系来表达对象间交互消息的先后时间顺序。 用建模对象(或角色)间的通信关系。
描述对象 按时间顺序描述对象的消息交换过程 它描述对象间的组织协作关系

协作图

与顺序图等价

时序图

时序图侧重于描述时间对系统交互的影响,因此时序图的一个重要的特

征是加入了时间元素。 时序图上的时间由左到右横跨页面。

状态图

一般不去描述参与者类对象的状态。要描述的是系统内部的

核心对象的状态。

活动图与状态图

活动图描述的是用例的行为,而状态图描述的是对象。

活动图可以包含多个对象。而状态图只可以包含一个对象。

构造实现方式图

包括有组件图跟部署图

组件图

组件图显示软件组件的组织以及组件之间的依赖关系,包

括源代码组件、二进制代码组件以及可执行组件。

包括组件、接口、依赖关系

组件图实例

组件与类的比较

  • 相同点

    • 两者都有名称;
    • 都可以实现一组接口;
    • 都可以参与依赖关系;
    • 都可以被嵌套;
    • 都可以有实例;
    • 都可以有参数和交互;
  • 不同点

    • 类描述了软件设计的逻辑组织和意图
    • 而组件则描述软件设计的物理实现(即:每个组件体现了系统设计中特定类的实现)

部署图

组件图用来建模软件组件,而部署图用来对部署系统时涉及到的硬件进行建模。
节点表示一种硬件。组件表示逻辑元素的物理包装,即类的物理包装,而节点表示组件的物理配置。
节点的种类:处理器跟设备。
处理器是能够执行软件、具有计算能力的节点。
设备是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务

部署图实例

【UML】统一建模语言的更多相关文章

  1. 技术人应该学习的行话--UML统一建模语言

    新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...

  2. 设计模式学习总结(一)——设计原则与UML统一建模语言

    一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...

  3. 1. UML统一建模语言

    (1)UML概述: 建模: 对现实系统进行适当的过滤, 用适当的表现规则描述出简洁的模型. 建模是一种深入解决问题的方法. UML: UML(United Modeling Language, 统一建 ...

  4. UML统一建模语言

    概述 统一建模语言(UML)是一种图形化的语言,用于软件密集系统要素的可视化.制定规范.构建对象和编写文档.UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,例如业务过程和系统功能,也包括 ...

  5. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  6. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  7. 统一建模语言UML---类图

    什么是统一建模语言,来看看百科中的介绍统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模 ...

  8. 统一建模语言UML

    目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...

  9. UML2.0统一建模语言

      Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规 ...

随机推荐

  1. Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

    2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...

  2. 一个非常简单用.NET操作RabbitMQ的方法

    RabbitMQ作为一款主流的消息队列工具早已广受欢迎.相比于其它的MQ工具,RabbitMQ支持的语言更多.功能更完善. 本文提供一种市面上最/极简单的使用RabbitMQ的方式(支持.NET/.N ...

  3. transform: scale() 实现鼠标悬浮在元素之上出现和消失

    前言 transform属性允许你旋转,缩放,倾斜或平移给定元素.其中scale(x, y)就是实现元素缩放的属性值. scale(x, y)的 x 乘以原本元素的 x:y 乘以原本的元素 y,就可以 ...

  4. 解决QIcon引用qrc不显示图片

    引用Qrc 对于Qt来说,添加qrc之后,可以使用":"来直接访问qrc的文件,比如 QIcon icon(":/icon/red.png"); 绝对路径 当然 ...

  5. python自学笔记10:while循环和for循环

    条件控制和循环控制是两种典型的流程控制方法,前面我们写了 if 条件控制,这节讲 for 循环和 while 循环. 循环是另一种控制流程的方式,一个循环体中的代码在程序中只需要编写一次,但可能会连续 ...

  6. nginx的安装和配置

    目录 目录 一.购买下载SSL证书 二.修改Nginx配置信息 三.重启Nginx 一.购买下载SSL证书 SSL证书阿里云做活动期间可以免费申请,购买SSL证书时选择单域名-DV SSL-免费版即可 ...

  7. e1000e网卡驱动在麒麟3.2.5上编译安装

    一.清空原驱动 因为系统安装完毕后系统中自带了e1000e的网卡驱动,会影响后面自行编译的驱动 所以先用find命令找出并删除掉所有关于e1000e的驱动文件 find / -name "* ...

  8. AD画板从头开始

    AD画板从头开始 前言 近期认真的画了一次板子,以前虽然也画过,但是都是很随意的,这次是做一个小项目,然后因为有一段时间没有画板了,发现自己很多基础的东西都忘记了,这里就来记录一下从头到尾的过程.本次 ...

  9. 3、StringBuffer类

    StringBuffer类 java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删 很多方法与String相同,但StringBuffer是可变长度的 StringB ...

  10. 第六章:Django 综合篇 - 11:分页 Paginator

    分页功能是几乎所有的网站上都需要提供的功能,当你要展示的条目比较多时,必须进行分页,不但能减小数据库读取数据压力,也有利于用户浏览. Django又很贴心的为我们提供了一个Paginator分页工具, ...