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

UML建模

主要记录UML中的相关知识,包括类、对象、接口、方法、用例、活动、状态、组件和部署图,详细介绍类之间关系与类图的绘制

文章目录

  • 一、UML介绍
  • 二、类图
    • 类之间的关系
      • 依赖关系
      • 继承关系
      • 实现关系
      • 关联关系
      • 组合关系
      • 聚合关系


正文内容:

一、UML介绍

UML(Unified Modeling Language)是一种用于软件开发的标准建模语言,用于描述、构建、可视化和文档化软件系统的组织结构、行为和交互。UML提供了一套可扩展的图形符号和语法规则,可以用来表示系统的各种方面和部分,例如类、对象、接口、方法、用例、活动、状态、组件和部署等

UML图是UML的核心概念,主要有以下几种类型:

  1. 类图(Class Diagram):表示系统中的类、接口、对象和它们之间的关系
  2. 时序图(Sequence Diagram):描述对象之间的时序关系,表示对象之间的消息交互顺序
  3. 用例图(Use Case Diagram):描述系统的功能和行为,以及与外部环境的交互
  4. 活动图(Activity Diagram):描述系统的工作流程,表示各个活动的执行顺序和条件
  5. 状态图(State Diagram):描述系统中对象的状态转换,表示对象在不同状态下的行为和响应
  6. 组件图(Component Diagram):描述系统中的软件和硬件组件,以及它们之间的依赖关系
  7. 部署图(Deployment Diagram):描述系统的物理架构,表示软件和硬件组件的部署情况和连接方式

UML图可以用于各种软件开发过程中,例如需求分析、系统设计、编码实现、测试验证等阶段。它可以帮助开发人员更好地理解和设计系统,也可以用于系统的文档化和交流

二、类图

类之间的关系

类与类之间存在依赖,泛化,实现,关联,组合,聚合关系

依赖关系

依赖关系(Dependency):表示一个类的实现需要另一个类的协助。依赖关系用箭头表示,箭头指向被依赖的对象
通俗的讲,如果A类使用了B类,则A类的实现依赖于B类。如:B类作为A类成员属性;B类作为形参存在于A类方法;B类在A类方法中作为返回值;A类方法中使用B类
绘制示例
在这里插入图片描述

继承关系

继承关系(Inheritance):表示一个类继承自另一个类的属性和方法,表示一种类之间的泛化关系,通常以空心三角形和实线表示,箭头从子类指向父类
通俗的讲,继承是一种特殊的依赖关系
绘制示例
在这里插入图片描述

实现关系

实现关系(Realization):表示一个类实现了一个接口,表示类和接口之间的关系,通常以空心三角形和虚线表示,箭头从类指向接口
通俗的讲,实现也是一种特殊的依赖关系
绘制示例
在这里插入图片描述

关联关系

关联关系(Association):是指不同类之间的语义上的联系,用于表示类之间的关系,表示一个类中的对象和另一个类中的对象有连接。通常,关联被用来描述对象之间的连接,这些连接可以是单向的、双向的,也可以是多重的。关联也是一种特殊的依赖关系。在类图中,关联用一条带箭头的线表示,箭头指向表示被依赖者的类
关联关系分为以下几种
单向关联(Unidirectional Association):表示类之间的单向关系,箭头只指向被依赖者
双向关联(Bidirectional Association):表示类之间的双向关系,箭头指向两个类
自关联(Self Association):表示同一个类中不同对象之间的关系
聚合关系(Aggregation):表示整体与部分之间的关系,表示部分可以属于多个整体,用一个空心菱形表示
组合关系(Composition):表示整体与部分之间的关系,表示部分不能属于多个整体,用一个实心菱形表示
多重性关系(Multiplicity):表示关联的多重性,即关联关系的数量限制。例如,1对1、1对多、多对多等
绘制示例
在这里插入图片描述

组合关系

组合关系(Composition):表示整体和部分之间的强关系,即整体对象由部分对象组成,同时部分对象是整体对象的一部分,也就是说部分对象不能离开整体对象而单独存在。组合关系用实心菱形表示
绘制示例
此时需要注意,Computre包括Mouse与Monitor,此时的Mouse与Monitor与Computre共生存(成员属性定义的时候已经通过new关键字赋予实际值),Computre对象死亡后Mouse与Monitor对象跟着消亡,这是一种is-a的关系,Computre与(Mouse和Monitor)不可以分割

在这里插入图片描述

聚合关系

聚合关系(Aggregation):表示整体和部分之间的关系,即一个整体对象可以由多个部分对象组成(成员属性定义的时候只有引用,对象是通过set方法进行赋值),但是部分对象并不是整体对象的一部分,也就是说部分对象可以离开整体对象而存在。聚合关系用空心菱形表示
绘制示例
此时需要注意,Computre包括Mouse与Monitor,此时的Mouse与Monitor与Computre并没有共生存,Computre对象死亡后不会影响到Mouse与Monitor,这是一种has-a的关系,Computre与(Mouse和Monitor)可以分割

在这里插入图片描述
从关系强弱的角度来看,组合关系最强,因为部分对象与整体对象的生命周期是相同的,部分对象无法独立存在。聚合关系次之,因为部分对象可以离开整体对象而单独存在。依赖关系最弱,因为两个对象之间的关系是临时的、短暂的,一个对象的变化对另一个对象的影响是暂时的、有限的

相关文章:

UML建模

主要记录UML中的相关知识,包括类、对象、接口、方法、用例、活动、状态、组件和部署图,详细介绍类之间关系与类图的绘制 文章目录一、UML介绍二、类图类之间的关系依赖关系继承关系实现关系关联关系组合关系聚合关系正文内容: 一、UML介绍 …...

JavaScript常见面试题(更新中)

介绍js的基本数据类型 js一共有五种数据类型 分别是undefined null boolean number string 还有ES6中新增的symbol和ES10的bigInt symbol代表创建后独一无二的不可变的数据类型,他的出现我认为是为了解决可能出现的全局变量冲突的问题 BigInt是一种数字类型的数据 …...

TCP/IP协议

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录TCP/IP协议应用层协议自定义应用层协议DNS传输层协议端口号UDP协议UDP协议端格式TCP协议TCP协议段格式TCP工作机制确认应答(安…...

Python使用异步线程池实现异步TCP服务器交互

背景: 实现客户端与服务端交互,由于效率原因,要发送与接收异步,提高效率。 需要多线程,本文用线程池管理。 common代码: import pickle import struct import timedef send_msg(conn, data):time.sleep(…...

matplotlib常用操作

文章目录1 matplotlib绘图1.1 绘图步骤2 matplotlib基本元素2.1 matplotlib 画布2.2 设置坐标轴长度和范围2.3 设置图形的线型和颜色2.4 设置图形刻度范围、刻度标签和坐标轴标签等2.4.1 设置刻度范围2.4.2 设置坐标轴刻度2.5 文本标签图例3 matplotlib的ax对象绘图4 绘制子图5…...

二分算法题

文章目录一、在排序数组中查找数字二、0~n-1中缺失的数字三、旋转数组的最小数字四、二维数组中的查找一、在排序数组中查找数字 题目传送门 法一:暴力解 直接遍历然后计数 法二:二分法求边界 看到关键字排序数组、有序数组,一定要想到二分…...

Vue+ElementUI+SpringBoot项目配合分页插件快速实现分页(简单暴力)

首先需要在项目中引入Element-UI的组件库,使用以下命令,不会引入的请自行百度。 npm i element-ui -S Element官网地址:https://element.eleme.cn/#/zh-CN/component/changelog 去Element-UI官网组件库找到合适的分页插件,并把他引…...

【回眸】牛客网刷刷刷!嵌入式软件中也会遇到的嵌入式硬件,通讯,通讯协议专题(一)

前言 最近继续刷题,看看嵌入式软件还需要了解一些嵌入式硬件中的通讯协议和常用接口协议 比如说SPI CAN I2C 通讯协议专题 1.波特率 波特率 每秒传送的字符数 * 字符位数。串口的工作模式为1个起始位,7个数据位,1个校验位,1个…...

使用Vue展示数据(动态查询)

学习内容来源:视频P4 本篇文章进度接着之前的文章进行续写 精简前后端分离项目搭建 Vue基础容器使用 目录选择组件修改表格组件修改分页组件增加后端接口前端请求数据接口页面初始化请求数据点击页码请求数据选择组件 在官方文档中选择现成的组件,放在页…...

构建数据库测试数据——mysql

建表脚本 -- 建表 CREATE TABLE test_table (id INT(11) NOT NULL AUTO_INCREMENT,varchar_col VARCHAR(50),char_col CHAR(10),text_col TEXT,tinyint_col TINYINT(4),smallint_col SMALLINT(6),mediumint_col MEDIUMINT(9),int_col INT(11),bigint_col BIGINT(20),float_col…...

你想要的Android性能优化系列:启动优化 !

App启动优化为什么要做App的启动优化?网页端存在的一个定律叫8秒定律:即指用户访问一个网站时,如果等待打开的时间超过8秒,超过70%的用户将会放弃等待。同样的,移动端也有一个8秒定律:如果一个App的启动时间…...

python3的基础入门3:基本数据类型

基本数据类型 python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。 等号(&…...

消息队列原理与实战-学习笔记

消息队列:保存消息的一个容器,本质是个队列,但是需要支持高吞吐、高并发、高可用。 1 前世今生 1.1 业界消息队列对比 Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色RocketMQ:低延迟、强一致、高性…...

Linux权限相关知识(大量图文展示,及详细操作)

Linux权限相关概念 Linux下有两种用户:一种是超级用户(root)、一种是普通用户。 超级用户:可以在linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”&#xf…...

Ep_操作系统面试题-什么是协程

协程 是一种 比线程更加轻量级的存 在,一个线程可以拥有多个协程。是一个特殊的 函数 ,这个函数可以在某个地方挂起,并且可以重新在挂起处外继续运行。协程 不是被操作系统内核所管理 , 而完全是由程序所控制(也就是在…...

在C#中使用互斥量解决多线程访问共享资源的冲突问题

在阿里云上对互斥量的概述:互斥量的获取是完全互斥的,即同一时刻,互斥量只能被一个任务获取。而信号量按照起始的计数值的配置,可以存在多个任务获取同一信号量的情况,直到计数值减为0,则后续任务无法再获取…...

JavaEE进阶第六课:SpringBoot配置文件

上篇文章介绍了SpringBoot的创建和使用,这篇文章我们将会介绍SpringBoot配置文件 目录1.配置文件的作用2.配置文件的格式2.1 .properties语法2.1.1.properties的缺点2.2 .yml语法2.2.1优点分析2.2.2配置与读取对象2.2.3配置与读取集合2.2.4补充说明3.设置不同环境的…...

MySQL基础(一)SQL分类、导入、SELECT语句,运算符

目录 MySQL安装以及相关工具 SQL分类 导入数据 最基本的SELECT语句 SELECT FROM 列的别名 去除重复行 着重号 查询常数 描述表结构 过滤数据(重要) 运算符 算数运算符 比较运算符 符号运算符 非符号运算符 逻辑运算符 位运算符 MySQL安…...

反激与正激的区别

之前学习了正激开关电源,但是对于正激和反激一直不是很清楚,网上找了一篇,觉得感觉该可以,以此记录。正激和反激是两种不同的开关电源技术一、正激(1)概述正激式开关电源是指使用正激高频变压器隔离耦合能量…...

王道操作系统课代表 - 考研计算机 第四章 文件管理 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “文件管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全部…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

蓝桥杯 冶炼金属

原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...