什么是UML?
文章目录
- 00 | 基础知识
- 01 | 静态建模
- 类图
- 对象图
- 用例图
- 02 | 动态建模
- 时序图
- 通信图
- 状态图
- 活动图
- 03 | 物理建模
- 构件图
- 部署图
UML(Unified Model Language),统一建模语言,是一种可以用来表现设计模式的直观的,有效的框图语言。类似于流程图,通过采用一系列的线条和图形来描述出面向对象软件的整体架构。
UML图总分为三大类
静态建模:类图、对象图、用例图
动态建模:时序图、通信图、状态图、活动图
物理建模:构件图、部署图
00 | 基础知识
-
UML图形
UML图形包括四大类:结构、行为、分组和注释
- 结构:结构图形是UML中的静态部分(类比中英文中的名词部分),用以描述其中的概念部分。结构图形中包括类、接口、协作、用例、主动类、构建、制品和结点等;

- 行为:行为图形是UML中的动态部分(类比中英文中的动词部分),用以描述其中的动作行为。行为图形中包括了交互、状态机和活动等;

- 分组:分组图像是UML中的组织部分(类比一个完整的中英文短句),用以描述由模型分解出来的一部分区域。其中最主要的分组图形就是包,包是把结构、行为打包的机制,仅在开发时存在,是一种纯粹的概念;

- 注释:注释图形是UML中的解释部分(类比中英文中的注释、注解),用以描述、说明和标注模型中的任意元素;

-
UML关系
UML关系包括四种:依赖、关联、泛化和实现
-

-
依赖:一个独立元素发生变化会影响另一个独立元素。在UML图形中,通常把依赖化成一条可能由方向的虚线;
-
关联:描述一组对象之间的结构关系连接。聚集是一种特殊的关联,描述了整体和部分之间的结构关系;
-
泛化:一种描述特殊-一般关系的语义,指特殊元素(子类的对象)可替代一般元素(父类的对象)的关系,特殊元素共享一般元素的结构和行为。在UML图形中,通常把一个泛化关系画成一条带有空间三角箭头的实线;
-
实现:指的是一个类指定了由另一个类保证执行的约定关系。在UML图形中常把一个实现关系画成一条带有空心三角箭头的虚线。实现关系通常用在两个情况上:
- 接口和实现他们的类之间;
- 用例和实现他们的协作之间;
-
01 | 静态建模
类图
类图展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中所建立的最常见的图就是类图。类图给出系统的静态设计视图,也包括主动类的类图给出的关系系统静态进程视图。
类图中主要包括:类、接口、协作和关系(依赖、泛化、关联)、注释

类图用于堆系统的静态设计建模,这种建模主要描述出系统的功能需求。根据建模的对象,通常用以下三种方式进行建模
-
面向系统的词汇建模:描述这些抽象词汇和他们的职责关系;
-
面向简单的协作建模:协作是一些共同工作的类、接口和其他元素的群体,对系统中合同的类之间的关系进行可视化的描述;
-
面向逻辑数据库模式建模:将模式看作为数据库的概念进行设计,描述系统中对数据操作的关系;
对象图
对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例静态快照,一般包括对象和它们之间的连接

用例图
用例图展现了一组用例、参与者以及他们之间的关系
用例图通常包括:用例、参与者、关系(用例间的扩展、包含关系,参与者与用例间的关联关系,用例与用例以及参与者与参与者之间的泛化关系

02 | 动态建模
时序图
时序图是应用场景的可视化、图形化表示形式,描述了以时间顺序组织的对象之间的交互活动。在嵌入式中,对平台芯片启动流程时常需使用时序图描述出系统启动的各级顺序。
时序图中把参加交互的对象放在图的上方水平排列(发起方居左,接收方居右),把对象发送和接收的消息沿垂直方向按时间顺序从上到下排列,形成一种随时间推移的控制流可视化痕迹。
时序图有两个特点:有对象生命线,有控制焦点

通信图
通信图强调收发消息的对象的结构组织
类比有向图,通信图中将参加交互的对象作为图的顶点,连接这些对象的的链作为图的弧,最后用对象发送和接收的消息来描述这些链。
通信图有两个特点:路径,顺序号

状态图
状态图展现了一个状态机,它由状态、转换、事件和活动组成,关注系统的动态视图,对于接口、类和协作的行为建模及其重要,主要强调对象行为的事件顺序。
状态图对系统的动态方面建模,主要包括出现在系统结构的任意视图中的对象按照顺序发生的行为
状态图通常包括简单状态和组合状态、转换
- 状态:指对象的生命周期中某个条件或者状态,在此期间对象将满足某些条件或者执行某些动作,即对象执行了活动的结果

活动图
活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程,专注于对象间的控制流程
活动图一般包括活动状态和动作状态、转换和对象,可以表示分支、合并、分岔和汇合
-
分支:描述基于布尔表达式的可选择路径
-
合并:描述两条控制流重新合并为一个控制流
-
分岔:描述一个控制流分程两个或多个并发控制流
-
汇合:两个或多个并发控制流的同步

03 | 物理建模
构件图
构件图展示了一组构建之间的组织和依赖,专注于系统的静态实现,通常把一个构建表示为类、接口、协作,与类图相关。

部署图
部署图展现了系统运行时处理结点以及其中构建的配置。
通常一个结点是一个在运行阶段存在并代表一个计算资源,即具备处理事件的能力,通常包含多个构件

相关文章:
什么是UML?
文章目录 00 | 基础知识01 | 静态建模类图对象图用例图 02 | 动态建模时序图通信图状态图活动图 03 | 物理建模构件图部署图 UML(Unified Model Language),统一建模语言,是一种可以用来表现设计模式的直观的,有效的框图…...
5.3 Mybatis映射文件 - 零基础入门,轻松学会查询的select标签和resultMap标签
本文目录 前言一、创建XML映射文件二、MybatisX插件安装三、mapper标签四、select标签UserMapper接口方法UserMapper.xml 五、resultMap标签定义resultMap标签修改select标签 总结 前言 MyBatis的强大在于它的语句映射,它提供了注解和XML映射文件两种开发方式&…...
“华为杯”研究生数学建模竞赛2020年-【华为杯】B题:汽油辛烷值优化建模(附获奖论文和python代码实现)
目录 摘 要: 1 问题重述 1.1 问题背景 1.2 问题重述 2 模型假设 3 符号说明...
C6678开发概述与Sys/bios基本使用
C6678开发概述 参考开发环境标记及术语创建sys/bios自定义平台运行第一个sys/bios程序Clock模块使用Demo 参考 TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Datasheet TMS320C66x DSP CorePac User Guide 官方手册 创龙6678开发教程 开发环境 …...
python算法中的图算法之网络流算法(详解二)
目录 学习目标: 学习内容: 网络流算法 Ⅰ. 网络流模型 Ⅱ . Ford-Fulk...
企业电子招投标采购系统之项目说明和开发类型源码
项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…...
ERTEC200P-2 PROFINET设备完全开发手册(8-1)
8.1 IRT通讯实验 这里我们使用APP3 IsoApp,修改源代码usrapp_cfg.h的宏为 #define EXAMPL_DEV_CONFIG_VERSION 3 使能App3,对应的主程序为“usriod_main_isoapp.c” 编译后下载运行。打开4.2建立的TIA项目,添加等时模式组织块,…...
手撕Twitter推荐算法
Twitter近期开源了其推荐系统源码[1,2,3],截止现在已经接近36k star。但网上公开的文章都是blog[1]直译,很拗口,因此特地开个系列系统分享下。系列涵盖: Twitter整体推荐系统架构:涵盖图数据挖掘、召回、精排、规则多…...
JAVA多态性测试的基本实验------JAVA入门基础教程
package duotai;public class Person {public void eat(){System.out.println("人吃饭");}public void Pdrink(){System.out.println("人喝水");} }package duotai;public class Man extends Person {public void eat(){System.out.println("男人吃饭…...
小说作者推荐: 妄鸦合集
《惊悚练习生》作品介绍 主人公叫弥赛亚,宗九的小说是《惊悚练习生》,它的作者是妄鸦倾心创作的一本现代耽美、娱乐圈、才女类型的小说,书中主要讲述了:作者:妄鸦 落魄魔术师宗九穿书了他穿到一本恐怖无限流选秀文里,…...
MySQL-自带工具介绍
目录 🍁mysql 🍁mysqladmin 🦐博客主页:大虾好吃吗的博客 🦐MySQL专栏:MySQL专栏地址 MySQL数据库不仅提供了数据库的服务器端应用程序,同时还提供了大量的客户端工具程序,如mysql&a…...
12个你应该知道的Python库
12个你应该知道的Python库 1. python命令行argparse 更简单的begins2. colorama改善命令行窗口3. pyqtgraph 它提供了不同的功能选择,尤其适用于实时和交互式可视化4. 网页浏览器Pywebview5. psutil 提供了完整的获取系统信息的方法 或许cpu近5s的基本报告6. Watchd…...
【数据分析之道-NumPy(七)】numpy字符串函数
文章目录 专栏导读1、函数说明2、add()函数3、multiply()函数4、center()函数5、capitalize()函数6、title()函数7、lower()函数8、upper()函数9、split()函数10、splitlines()函数11、strip()函数12、join()函数 专栏导读 ✍ 作者简介:i阿极,CSDN Pytho…...
【Linux】Linux基本指令(1)
一.前言 从这篇文章开始,博主就开启了Linux学习之路了,本篇文章也是博主的第一篇Linux的文章,今后也会持续不断更新的。 二.理解文件 1.文件 文件文件数据文件属性(所以一个建好的文件就算没有数据,也占用存储空间&am…...
更全面的对比GPT4和Claude对MLIR的掌握能力
本文构造了20个MLIR基础概念的问题以及使用OneFlow IR转换为Tosa IR的5个代码段来评测GPT4和Claude对于MLIR的掌握能力,我的结论是对于基础概念的理解Claude整体上和GPT4持平,而在阅读相关代码片段时Claude表现出了比GPT4更强一点的理解能力。 0x0. 前言…...
阿里ARouter 路由框架解析
一、简介 众所周知,在日常开发中,随着项目业务越来越复杂,项目中的代码量也越来越多,如果维护、扩展、解耦等成了一个非常头疼问题,随之孕育而生的诸如插件化、组件化、模块化等热门技术。 而其中组件化中一项的难点&…...
大型医院健康体检管理系统源码(PEIS)
一、体检管理系统(PEIS)概念 体检管理系统(PEIS)是以健康为中心的身体检查。一般医学家认为健康体检是指在身体尚未出现明显疾病时,对身体进行的全面检查。方便了解身体情况,筛查身体疾病。即应用体检手段对…...
java 获取时间的方法
Java的时间是通过字节码指令来控制的,所以 java程序的运行时间是通过字节码指令来控制的。但是由于 Java程序在运行时, JVM会产生一些状态,所以在执行 JVM指令时, JVM也会产生一些状态。 我们在执行 java程序时,主要是…...
Block原理(二)- 用白话说说底层源码,不扯代码
之前有一篇关于block的源码探究分析 Block原理(一),时至今日,总觉的那篇文章说得不够流畅,今天打算从顶层设计的角度试着拆解下block的设计思想,拗脑的源码部分就不必再次触碰了,尽量保障这篇文…...
springboot整合knife4j接口文档成公共模块使用
theme: smartblue 之前项目中一直用的是swagger-ui进行接口文档的调用和使用,最近前端一直反馈页面不美观,调用凌乱,等一系列问题。基于这个问题我决定将其进行更改调整,上网搜索了一下发现knife4j是目前接口文档不错的一款插件。…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...
LeetCode 0386.字典序排数:细心总结条件
【LetMeFly】386.字典序排数:细心总结条件 力扣题目链接:https://leetcode.cn/problems/lexicographical-numbers/ 给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。…...
