UML建模
主要记录UML中的相关知识,包括类、对象、接口、方法、用例、活动、状态、组件和部署图,详细介绍类之间关系与类图的绘制
文章目录
- 一、UML介绍
- 二、类图
- 类之间的关系
- 依赖关系
- 继承关系
- 实现关系
- 关联关系
- 组合关系
- 聚合关系
正文内容:
一、UML介绍
UML(Unified Modeling Language)是一种用于软件开发的标准建模语言,用于描述、构建、可视化和文档化软件系统的组织结构、行为和交互。UML提供了一套可扩展的图形符号和语法规则,可以用来表示系统的各种方面和部分,例如类、对象、接口、方法、用例、活动、状态、组件和部署等
UML图是UML的核心概念,主要有以下几种类型:
- 类图(Class Diagram):表示系统中的类、接口、对象和它们之间的关系
- 时序图(Sequence Diagram):描述对象之间的时序关系,表示对象之间的消息交互顺序
- 用例图(Use Case Diagram):描述系统的功能和行为,以及与外部环境的交互
- 活动图(Activity Diagram):描述系统的工作流程,表示各个活动的执行顺序和条件
- 状态图(State Diagram):描述系统中对象的状态转换,表示对象在不同状态下的行为和响应
- 组件图(Component Diagram):描述系统中的软件和硬件组件,以及它们之间的依赖关系
- 部署图(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下做有限的事情。 超级用户的命令提示符是“#”…...

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)概述正激式开关电源是指使用正激高频变压器隔离耦合能量…...

王道操作系统课代表 - 考研计算机 第四章 文件管理 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 操作系统 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “文件管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全部…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...