当前位置: 首页 > news >正文

什么是UML?

文章目录

  • 00 | 基础知识
  • 01 | 静态建模
    • 类图
    • 对象图
    • 用例图
  • 02 | 动态建模
    • 时序图
    • 通信图
    • 状态图
    • 活动图
  • 03 | 物理建模
    • 构件图
    • 部署图

UML(Unified Model Language),统一建模语言,是一种可以用来表现设计模式的直观的,有效的框图语言。类似于流程图,通过采用一系列的线条和图形来描述出面向对象软件的整体架构。
UML图总分为三大类
静态建模:类图、对象图、用例图
动态建模:时序图、通信图、状态图、活动图
物理建模:构件图、部署图

00 | 基础知识

  • UML图形

    UML图形包括四大类:结构、行为、分组和注释

    1. 结构:结构图形是UML中的静态部分(类比中英文中的名词部分),用以描述其中的概念部分。结构图形中包括类、接口、协作、用例、主动类、构建、制品和结点等;

    结构图形

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

    行为图形

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

    包

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

    注释

  • UML关系

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

    -UML关系

    1. 依赖:一个独立元素发生变化会影响另一个独立元素。在UML图形中,通常把依赖化成一条可能由方向的虚线;

    2. 关联:描述一组对象之间的结构关系连接。聚集是一种特殊的关联,描述了整体和部分之间的结构关系;

    3. 泛化:一种描述特殊-一般关系的语义,指特殊元素(子类的对象)可替代一般元素(父类的对象)的关系,特殊元素共享一般元素的结构和行为。在UML图形中,通常把一个泛化关系画成一条带有空间三角箭头的实线;

    4. 实现:指的是一个类指定了由另一个类保证执行的约定关系。在UML图形中常把一个实现关系画成一条带有空心三角箭头的虚线。实现关系通常用在两个情况上:

      1. 接口和实现他们的类之间;
      2. 用例和实现他们的协作之间;

01 | 静态建模

类图

类图展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中所建立的最常见的图就是类图。类图给出系统的静态设计视图,也包括主动类的类图给出的关系系统静态进程视图。

类图中主要包括:类、接口、协作和关系(依赖、泛化、关联)、注释
UML类图

类图用于堆系统的静态设计建模,这种建模主要描述出系统的功能需求。根据建模的对象,通常用以下三种方式进行建模

  1. 面向系统的词汇建模:描述这些抽象词汇和他们的职责关系;

  2. 面向简单的协作建模:协作是一些共同工作的类、接口和其他元素的群体,对系统中合同的类之间的关系进行可视化的描述;

  3. 面向逻辑数据库模式建模:将模式看作为数据库的概念进行设计,描述系统中对数据操作的关系;

对象图

对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例静态快照,一般包括对象和它们之间的连接

UML对象图

用例图

用例图展现了一组用例、参与者以及他们之间的关系

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

UML用例图

02 | 动态建模

时序图

时序图是应用场景的可视化、图形化表示形式,描述了以时间顺序组织的对象之间的交互活动。在嵌入式中,对平台芯片启动流程时常需使用时序图描述出系统启动的各级顺序。

时序图中把参加交互的对象放在图的上方水平排列(发起方居左,接收方居右),把对象发送和接收的消息沿垂直方向按时间顺序从上到下排列,形成一种随时间推移的控制流可视化痕迹。

时序图有两个特点:有对象生命线有控制焦点

UML时序图

通信图

通信图强调收发消息的对象的结构组织

类比有向图,通信图中将参加交互的对象作为图的顶点,连接这些对象的的链作为图的弧,最后用对象发送和接收的消息来描述这些链。

通信图有两个特点:路径顺序号

UML通信图

状态图

状态图展现了一个状态机,它由状态、转换、事件和活动组成,关注系统的动态视图,对于接口、类和协作的行为建模及其重要,主要强调对象行为的事件顺序。
状态图对系统的动态方面建模,主要包括出现在系统结构的任意视图中的对象按照顺序发生的行为

状态图通常包括简单状态和组合状态、转换

  • 状态:指对象的生命周期中某个条件或者状态,在此期间对象将满足某些条件或者执行某些动作,即对象执行了活动的结果

UML状态图

活动图

活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程,专注于对象间的控制流程

活动图一般包括活动状态和动作状态、转换和对象,可以表示分支、合并、分岔和汇合

  • 分支:描述基于布尔表达式的可选择路径

  • 合并:描述两条控制流重新合并为一个控制流

  • 分岔:描述一个控制流分程两个或多个并发控制流

  • 汇合:两个或多个并发控制流的同步

UML活动图

03 | 物理建模

构件图

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

构件图

部署图

部署图展现了系统运行时处理结点以及其中构建的配置。

通常一个结点是一个在运行阶段存在并代表一个计算资源,即具备处理事件的能力,通常包含多个构件

UML部署图

相关文章:

什么是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项目,添加等时模式组织块&#xff0c…...

手撕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("男人吃饭…...

小说作者推荐: 妄鸦合集

《惊悚练习生》作品介绍 主人公叫弥赛亚,宗九的小说是《惊悚练习生》,它的作者是妄鸦倾心创作的一本现代耽美、娱乐圈、才女类型的小说,书中主要讲述了:作者:妄鸦 落魄魔术师宗九穿书了他穿到一本恐怖无限流选秀文里&#xff0c…...

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是目前接口文档不错的一款插件。…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...