【UML】统一建模语言
如果是准备学习设计模式的同学,可以只了解类图相关的知识
而如果是在准备软件设计师考试的同学,或许会对你有点帮助
正在施工......
参考博客: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】统一建模语言的更多相关文章
- 技术人应该学习的行话--UML统一建模语言
新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...
- 设计模式学习总结(一)——设计原则与UML统一建模语言
一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...
- 1. UML统一建模语言
(1)UML概述: 建模: 对现实系统进行适当的过滤, 用适当的表现规则描述出简洁的模型. 建模是一种深入解决问题的方法. UML: UML(United Modeling Language, 统一建 ...
- UML统一建模语言
概述 统一建模语言(UML)是一种图形化的语言,用于软件密集系统要素的可视化.制定规范.构建对象和编写文档.UML提供了一种标准的方式来描述系统的设计图,既包括概念方面,例如业务过程和系统功能,也包括 ...
- 2017.12.23 第二章 统一建模语言UML概述
第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...
- UML标准建模语言与应用实例
一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...
- 统一建模语言UML---类图
什么是统一建模语言,来看看百科中的介绍统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模 ...
- 统一建模语言UML
目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...
- UML2.0统一建模语言
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规 ...
随机推荐
- 编译器优化:何为SLP矢量化
摘要:SLP矢量化的目标是将相似的独立指令组合成向量指令,内存访问.算术运算.比较运算.PHI节点都可以使用这种技术进行矢量化. 本文分享自华为云社区<编译器优化那些事儿(1):SLP矢量化介绍 ...
- Three---面向对象与面向过程/属性和变量/关于self/一些魔法方法的使用/继承/super方法/多态
python的面向对象 面向对象与面向过程 面向过程 面向过程思想:需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做) 面向对象 面向对象的三 ...
- POJ2201 Cartesian Tree (cartesian tree)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- JavaScript 异步编程(一):认识异步编程
前言 "异步"的大规模流行是在 Web 2.0浪潮中,它伴随着 AJAX 席卷了 Web.前端充斥了各种 AJAX 和事件,这些都是典型的异步应用场景.现在的 Web 应用已经不再 ...
- 计算机网络-DNS和HTTPDNS了解
DNS 和 HTTPDNS DNS 域名解析的过程 传统 DNS 存在的问题 1.域名缓存问题 2.域名转发问题 3.出口 NAT 问题 4.DNS 域名更新问题 5.解析延迟问题 6.运营商劫持 H ...
- PI控制器的由来
20世纪20年代初,一位名叫尼古拉斯·米诺斯基(Nicolas Minorsky)的俄裔美国工程师通过观察舵手在不同条件下如何驾驶船只,为美国海军设计了自动转向系统. 根据Wikipedia.org, ...
- Mybatis中多对一与一对多
多对一的处理 在pojo中就有 Student private String name; private String id; private Teacher teacher; 比如说多个学生对应着一 ...
- AtCoder Beginner Contest 255(E-F)
Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...
- 阿里云Centos7部署私人CSGO服务器
大四毕业生,论文和答辩分别以1.8%的重复率和只答不辨的态度双双过关.现在就是在家等着学校发毕业证了.顺带学学驾驶...可是我这么一个喜欢折腾的人,怎么能够让自己接受这么无聊的咸鱼时光呢?因为这个寒假 ...
- 多版本并发控制 MVCC
介绍多版本并发控制 多版本并发控制技术(Multiversion Concurrency Control,MVCC) 技术是为了解决问题而生的,通过 MVCC 我们可以解决以下几个问题: 读写之间阻塞 ...








