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

【UML】统一建模语言 UML 基础

【UML】统一建模语言UML 基础

文章目录

    • 一、概述
      • 1.1 - 什么是建模
      • 1.2 建模的原则
      • 1.3 软件建模的实现过程
    • 二、 UML
      • 2.1 UML中10种图
    • 三、用例图
      • 3.1 用例之间的关系 —— 泛化关系
      • 3.2 用例之间的关系 —— 包含关系
      • 3.3 用例之间的关系 —— 扩展关系
    • 四、类图
      • 4.1 类的表示方法
      • 4.2 类之间的关系 —— 泛化关系
      • 4.3 类之间的关系 —— 实现关系
      • 4.4 类之间的关系 —— 依赖关系
      • 4.5 类之间的关系 —— 关联关系
      • 4.6 关联关系的名称
      • 4.7 关联关系的角色
      • 4.8 关联关系的多重性
      • 4.9 类之间的关系 —— 关联 - 聚合
      • 4.10 类之间的关系 —— 关联 - 组合

一、概述

1.1 - 什么是建模

统一建模语言

开发之前 规划 骨架规划好,然后

什么是建模,

软件设计:把软件开发想清楚的过程
软件工程:对软件开发全过程进行建模和管理

互联网开发模式,敏捷开发。
比如12个功能,只做一个核心功能,投放市场看用户反馈,早早与用户需求完全靠拢,极限编程。

模型:对问题的书面上的无歧义文字或图形的描述。简而言之,模型是对现实的简化。通过模型,人们可以了解所研究事物的本质。

模型是对现实实际问题的简化,比如地图。

1.2 建模的原则

1)选择建立什么样的模型对如何发现和解决问题具有重要的影响。正确的模型有助于提高开发者的洞察力。

盖狗窝 和 盖高楼不一样,盖高楼需要考虑避雷,电梯规划等等的。

2)每个模型可以有多种表达方式。使用者的身份和使用的原因是评判模型好坏的关键
3)最好的模型总是能够切合实际。模型是现实的简化,必须保证简化过程不会掩盖任何重要的细节

1.3 软件建模的实现过程

软件建模的作用是把来源于现实世界的问题转化为计算机可以理解和实现的问题。

现实世界 —映射—> 计算机世界

软件建模的实现过程是从需求入手,用墨香表达分析设计过程,最终将模型映射程软件实现。

需求 --> 模型 --> 编码

二、 UML

  1. UML(United Modeling Language, 统一建模语言): 是一种基于面向对象可视化建模语言。
  2. UML采用了一组形象化的图形(如类图)符号作为建模语言,使用这些符号可以形象地描述系统地各个方面
  3. UML通过建立图形之间的各种关系(如类与类之间的关系)来描述模型。

2.1 UML中10种图

  • 类图
  • 对象图
  • 包图
  • 组件图
  • 部署图
  • 用例图
  • 时序图
  • 协作图
  • 状态图
  • 活动图

三、用例图

1 - 用例图(Use Case Diagram): 也称为用户模型图,是从软件需求分析到最终实现的第一步,它是从客户的角度来描述系统功能。
2 - 用例图包含 3 个基本组件:
参与者(Actor): 与系统打交道的人或其他系统即使用系统的人或事物。在 UML 种参与者用人形图标表示
用例(Use Case): 代表系统的某项完整功能。在 UML 种使用一个椭圆来表示
关系: 定义用例之间的关系 —— 泛化关系、扩展关系、包含关系
在这里插入图片描述

3.1 用例之间的关系 —— 泛化关系

泛化关系:表示同一业务的目的(父用例)的不同技术实现(各个子用例)。在UML中,用例泛化用一个三角箭头从子用例指向父用例。以下是某购物网站为用户提供不同的支付方式

在这里插入图片描述

3.2 用例之间的关系 —— 包含关系

一个用例可以包含其他用例具有的行为,并把它包含的用例行为作为自身行为的一部分。在 UML 中包含关系用虚线箭头加 "<<include>>",箭头执行被包含的用例。

在这里插入图片描述

3.3 用例之间的关系 —— 扩展关系

如果在完成某个功能的时候偶尔会执行另外一个功能,则用扩展关系表示,在UML中扩展关系用虚线箭头加<<extend>>, 箭头指向被扩展的用例。
在这里插入图片描述

四、类图

类图是面向对象系统建模中最常用的图,是定义其他图的基础。
类图主要是用来显示系统中的类,接口以及它们之间的关系。
类图包含的主要元素有类、接口和关系。其中关系有泛化关系、关联关系、依赖关系和实现关系。在类途中也可以包含注释和约束

4.1 类的表示方法

  1. 类是类图的主要组件,由三部分组成:类名、属性和方法。在UML中,类用矩形来表示,顶端部分存放类的名称,中间部分存放类的属性,属性的类型及值,底部部分存放类的方法,方法的参数和返回。
  2. 在UML中可以根据实际情况由选择的隐藏属性部分或方法部分或者两者都隐藏。
  3. 在UML中,公有类型由 + 表示,私有类型用 - 表示,保护类型用 # 表示,UML的工具开发上可以使用自己定义的符号表示不同的可见性

4.2 类之间的关系 —— 泛化关系

  1. 在UML中,泛化关系用来表示类与类,接口与接口之间的继承关系,泛化关系有时也称为“is a kind of” 关系
  2. 在UML中泛化关系用一条实线空心箭头由子类指向父类
    在这里插入图片描述

4.3 类之间的关系 —— 实现关系

在UML中,实现关系用来表示类与接口之间,实现关系用一条虚线空心箭头由子类指向父类。

4.4 类之间的关系 —— 依赖关系

对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间体现为依赖关系。例如生产零件的机器和零件,机器负责构造零件对象,充电电池和充电器,充电电池通过充电器来充电。自行车Bicycle和打气筒Pump,自行车通过打气筒来充气
在这里插入图片描述

class Bicycle
{
public:void run();
};
// 如果说 Person类 有一个成员方法,将Bicycle当作一个形参来传递,并且Person没有 Bicycle成员
// 就说Person类依赖于 Bicycle
class Person
{
public:void goToWork(Bicycle* bcl){bcl->run();}
};

4.5 类之间的关系 —— 关联关系

对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。例如客户和订单,每个订单对应特定的客户,每一个客户对应一些特定的订单;公司和员工,每一个公司对应一些特定的员工,每个员工对应一特定的公司;自行车和主人,每辆自行车属于特定的主人,每个主任有特定的自行车。而充电电池和充电器之间就不存在固定的对应关系,同样自行车和打气筒之间也不存在固定的对应关系。
在这里插入图片描述

// 如果说 Person2 类 有一个成员方法,用到了另外一个 Bicycle类,并且还拥有Bicycle的成员
// 就说Person2 关联 Bicycle
class Person2
{
public:void goToWork(){bicycle->run();}
private:Bicycle bicycle;
};

关联关系比依赖关系更紧密一些

4.6 关联关系的名称

关联关系可以有一个名称,用于描述该关系的性质。此关联名称应该是动词短语,因为它表明源对象正在目标对象上执行动作。

在这里插入图片描述

4.7 关联关系的角色

当一个类处于关联的某一端时,该类就在这个关系中扮演一个特定的角色。具体来说,角色就是关联关系中一个类对另一个类所表现的职责。角色名称是名词或名词短语。
在这里插入图片描述

4.8 关联关系的多重性

指有多少对象可以参与该关联,多重性可以用来表达一个取值范围,特定值,无限定的范围

在这里插入图片描述
一个人拥有 1-n台自行车 一个自行车只能被1个人拥有

4.9 类之间的关系 —— 关联 - 聚合

  1. 聚合关系是关联关系的一种,是更强的关联关系。
  2. 聚合和整体和部分之间的关系,例如汽车由引擎、轮胎以及其他零件组成。
  3. 聚合关系也是通过成员变量来实现的。但是关联关系所设计的两个类处在同一个层次上,而聚合关系,两个类处于不同的层次上,一个代表整体,一个代表部分。 在这里插入图片描述

4.10 类之间的关系 —— 关联 - 组合

  1. UML类图关系中组合关系是关联关系的一种,是比聚合还要强的关系。
  2. 代表整体对象负责代表部分对象的生命周期

在这里插入图片描述

相关文章:

【UML】统一建模语言 UML 基础

【UML】统一建模语言UML 基础 文章目录 一、概述1.1 - 什么是建模1.2 建模的原则1.3 软件建模的实现过程 二、 UML2.1 UML中10种图 三、用例图3.1 用例之间的关系 —— 泛化关系3.2 用例之间的关系 —— 包含关系3.3 用例之间的关系 —— 扩展关系 四、类图4.1 类的表示方法4.2…...

AWS S3深度解析:十大核心应用场景与高可用架构设计实践

摘要&#xff1a;作为全球领先的对象存储服务&#xff0c;Amazon S3凭借其高扩展性、持久性和安全性&#xff0c;已成为企业云原生架构的核心组件。本文将深入探讨S3的典型技术场景&#xff0c;并揭秘其背后的架构设计逻辑。 一、AWS S3核心技术特性解析 Amazon Simple Storag…...

如何用Python 3自动打开exe程序

诸神缄默不语-个人CSDN博文目录 本文所说的exe程序特指那种双击直接就能打开的Windows软件。本文中给出的具体例子是C:\Users\user_name\AppData\Local\Postman\Postman.exe&#xff0c;这串字符串在示例代码中都用exe_path代替了&#xff0c;方便你用的时候直接换成自己的软件…...

计算机网络之路由协议(自治系统)

一、自治系统&#xff08;AS&#xff09; 自治系统是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。它是网络的基本构成单位&#xff0c;每个自治系统是一个独立运营并自主决定与谁交换流量的实体。自治系统内部运行内部网关协议&#xff08;IGP&#xff09…...

MFC笔记:本专栏课件

专栏导航 上一篇&#xff1a;在VS2019里面&#xff0c;调整代码字体大小 回到目录 下一篇&#xff1a;无 本节前言 在之前的讲解里面&#xff0c;我讲解了 Visual Studio 软件的一些个基础操作步骤。从本节开始&#xff0c;我们进入预备章。 本节内容&#xff0c;属于是 …...

springboot集成jackson-dataformat-xml实现发送XML请求和XML响应参数处理

背景 最近在做发票相关的业务&#xff0c;需要对接第三方进行开发票等一系列操作&#xff0c;对方的系统是较老系统&#xff0c;需要采用XML的请求方式。 思路 一般来说&#xff0c;基于springboot的项目采用的都是JSON格式的请求参数和响应参数&#xff0c;因此需要做一个转…...

Spring Cloud Gateway 网关的使用

在之前的学习中&#xff0c;所有的微服务接口都是对外开放的&#xff0c;这就意味着用户可以直接访问&#xff0c;为了保证对外服务的安全性&#xff0c;服务端实现的微服务接口都带有一定的权限校验机制&#xff0c;但是由于使用了微服务&#xff0c;就需要每一个服务都进行一…...

超高速工业相机的应用

超高速工业相机一般安装在机器流水线上代替人眼来做测量和判断&#xff0c;通过数字图像摄取目标转换成图像信号&#xff0c;传送给专用的图像处理系统。图像处理系统对这些信号进行各种运算来抽取目标的特征&#xff0c;进而根据判别的结果来控制现场的设备动作。一般来说&…...

学习笔记--电磁兼容性EMC

一、基本概念 电磁兼容性&#xff08;Electromagnetic Compatibility&#xff0c;EMC&#xff09;是电子电气设备在特定电磁环境中正常工作的能力&#xff0c;同时不会对其他设备产生不可接受的电磁干扰。其核心目标是确保设备在共享的电磁环境中既能抵抗干扰&#xff0c;又能避…...

利用开源小智AI制作桌宠机器狗

本文主要介绍如何利用开源小智AI制作桌宠机器狗 1 源码下载 首先下载小智源码,下载地址, 下载源码后,使用vsCode打开,需要在vscode上安装esp-idf,安装方式请自己解决 2 源码修改 2.1添加机器狗控制代码 在目录main/iot/things下添加dog.cc文件,内容如下; #include…...

基于PSO-LSTM长短期记忆神经网络的多分类预测【MATLAB】

一、研究背景与意义 在时间序列分类、信号识别、故障诊断等领域&#xff0c;多分类预测任务对模型的时序特征捕捉能力提出了极高要求。传统LSTM网络虽能有效建模长程依赖关系&#xff0c;但其性能高度依赖超参数的选择&#xff0c;例如隐含层神经元数量、学习率、迭代次数等。…...

Qt中C++与QML交互从原理、方法与实践陷阱深度解析

在我们使用Qt开发中&#xff0c;现在以及普遍通过 C 与 QML 的交互&#xff0c;将 C 的强大功能与 QML 的界面设计优势相结合&#xff0c;既保证了应用程序的性能和稳定性&#xff0c;又能快速实现美观、易用的用户界面。接下来专门讲下C与QML交互原理、方法与实践中的一些陷阱…...

基于SpringBoot和Leaflet的邻省GDP可视化实战

目录 前言 一、技术实现路径 1、空间数据检索 2、数据展示检索流程 二、SpringBoot后台实现 1、模型层实现 2、控制层实现 三、WebGIS前端实现 1、控制面展示 2、成果展示 四、总结 前言 在数字化浪潮席卷全球的今天&#xff0c;数据已成为驱动社会经济发展、指导政策…...

esp工程报错:something went wrong when trying to build the project esp-idf 一种解决办法

最近上手了正点原子esp32s3板子&#xff0c;环境采用的是vscodeesp-idf插件。导入了正点原子的demo测试&#xff0c;每次都报这个错误无法建造。也不是网上说的ninja error&#xff0c;不是中文路径的问题。 在终端中查看&#xff0c;发现是缺少了git。&#xff08;我这里没有…...

Grouped-Query Attention(GQA)详解: Pytorch实现

Grouped-Query Attention&#xff08;GQA&#xff09;详解 Grouped-Query Attention&#xff08;GQA&#xff09; 是 Multi-Query Attention&#xff08;MQA&#xff09; 的改进版&#xff0c;它通过在 多个查询头&#xff08;Query Heads&#xff09;之间共享 Key 和 Value&am…...

DeepSeek AI人工智能该如何学习?

人工智能&#xff08;Artificial Intelligence, AI&#xff09;是当今科技领域的热门话题&#xff0c;它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个子领域。 作为中国科技发展的核心方向之一&#xff0c;AI在国家战略规划中占据了重要地位&#xff0c;特别是在…...

【数据库】【MySQL】索引

MySQL中索引的概念 索引&#xff08;MySQL中也叫做"键&#xff08;key&#xff09;"&#xff09;是一种数据结构&#xff0c;用于存储引擎快速定找到记录。 简单来说&#xff0c;它类似于书籍的目录&#xff0c;通过索引可以快速找到对应的数据行&#xff0c;而无需…...

SprinBoot整合HTTP API:从零开始的实战指南

在现代 Web 开发中,HTTP API 是前后端交互的核心。Spring Boot 作为 Java 生态中备受欢迎的框架,提供了简洁而强大的方式来构建和整合 HTTP API。本文将带你从零开始,通过具体代码示例,展示如何在 Spring Boot 中整合 HTTP API,实现高效、稳定的前后端通信。 一、为什么选…...

可狱可囚的爬虫系列课程 13:Requests使用代理IP

一、什么是代理 IP 代理 IP&#xff08;Proxy IP&#xff09;是一个充当“中间人”的服务器IP地址&#xff0c;用于代替用户设备&#xff08;如电脑、手机等&#xff09;直接与目标网站或服务通信。用户通过代理IP访问互联网时&#xff0c;目标网站看到的是代理服务器的IP地址&…...

DBeaver下载安装及数据库连接(MySQL)

1. DBeaver下载 官网下载地址:Download | DBeaver Community 2. 安装 1. 双击下载的安装包&#xff0c;选择简体中文。 2. 点击下一步。 3. 点击我接受。 4. 如下勾选为所有用户安装&#xff0c;点击下一步。 5. 需重复做1~3 的步骤。 6. 选择组件&#xff0c;默认即可&…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...