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

UML类图学习

UML类图学习

  • UML类图是描述类之间的关系
  • 概念
    • 1.类(Class):使用三层矩形框表示
    • 2.接口(interface):使用两层矩形框表示,与类图主要区别在于顶端有<<interface>>显示
    • 3、继承类(extends):用空心三角形+实线来表示
    • 4、实现接口(implements):用空心三角形+虚线来表示
    • 5、关联(Association):用实线箭头来表示,例如:燕子与气候
    • 6、聚合(Aggregation):用空心的菱形+实线箭头来表示
    • 7、组合:用实心棱形+实现箭头来表示
    • 8、依赖(Dependency) :用虚线箭头来表示,例如:动物与氧气
    • 9、注意:关联关系、聚合关系与组合关系都是可以有基数的,比如一只鸟有两个翅膀,一个类也可以有无数个实例,则用 n 来表示
  • 总结

UML类图是描述类之间的关系

概念

1.类(Class):使用三层矩形框表示

第一层表示类名(斜体表示抽象类)
第二层表示该类属性和字段
第三层表示该方法
注意:属性、字段或方法前面+表示Public -表示Private #表示protected,如果是静态的可以在前面加上static。

抽象类:
在这里插入图片描述

普通类:
在这里插入图片描述

2.接口(interface):使用两层矩形框表示,与类图主要区别在于顶端有<>显示

第一层表示接口名称。
第二层表示接口方法。

在这里插入图片描述

还有一种方法是棒棒糖表示法

在这里插入图片描述

3、继承类(extends):用空心三角形+实线来表示

在这里插入图片描述

4、实现接口(implements):用空心三角形+虚线来表示

在这里插入图片描述

5、关联(Association):用实线箭头来表示,例如:燕子与气候

在燕子的类中持有气候属性
在这里插入图片描述

6、聚合(Aggregation):用空心的菱形+实线箭头来表示

聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分,例如:公司和员工
在这里插入图片描述

在这里插入图片描述

7、组合:用实心棱形+实现箭头来表示

组合:是一种强的‘拥有’关系,体现了严格的部分与整体关系,部分和整体的生命周期一样。

在这里插入图片描述

8、依赖(Dependency) :用虚线箭头来表示,例如:动物与氧气

比如动物依赖洋气和水
在这里插入图片描述
在这里插入图片描述

9、注意:关联关系、聚合关系与组合关系都是可以有基数的,比如一只鸟有两个翅膀,一个类也可以有无数个实例,则用 n 来表示

总结

看懂了上述,UML类图基本是可以看明白,如果想深入研究 双向关联
可以研究一下。

相关文章:

UML类图学习

UML类图学习 UML类图是描述类之间的关系概念1.类(Class)&#xff1a;使用三层矩形框表示2.接口(interface)&#xff1a;使用两层矩形框表示&#xff0c;与类图主要区别在于顶端有<<interface>>显示3、继承类&#xff08;extends&#xff09;&#xff1a;用空心三角…...

死锁面试题详解

什么是死锁&#xff1f; 死锁是指两个或多个进程在执行过程中&#xff0c;因争夺资源而造成的一种相互等待的现象&#xff0c;如果没有外力干涉&#xff0c;这些进程将永远无法继续执行 死锁通常发生在多个进程试图同时访问同一资源而无法获取的情况下&#xff0c;例如&#…...

【rust/bevy】使用points构造ConvexMesh

目录 说在前面问题提出Rapier具体实现参考 说在前面 操作系统&#xff1a;win11rust版本&#xff1a;rustc 1.77.0-nightlybevy版本&#xff1a;0.12github&#xff1a;这里 问题提出 在three.js中&#xff0c;可以通过使用ConvexGeometry从给定的三维点集合生成凸包(Convex Hu…...

【C语言】string.h——主要函数总结

string.h主要定义了字符串处理函数和内存操作函数。 字符串处理函数 strlen() 功能&#xff1a;strlen()函数返回字符串的字节长度&#xff0c;不包括末尾的空字符\0。 函数原型&#xff1a;size_t strlen(const char* s); 返回值&#xff1a;返回的是size_t类型的无符号整…...

如何在前端优化中减少页面加载时间?

在前端优化中&#xff0c;减少页面加载时间是至关重要的&#xff0c;因为快速加载的页面可以提高用户体验&#xff0c;减少跳出率&#xff0c;从而提升网站的整体性能。本文将介绍一些实用的前端优化技巧&#xff0c;以帮助您减少页面加载时间。 一、优化图片 图片是页面加载…...

Typecho后台无法登录显示503 service unavailable问题及处理

一、Typecho 我的博客地址&#xff1a;https://www.aomanhao.top 使用老薛主机动态Typecho博客框架handsome主题的搭配&#xff0c;文章内容可以异地网页更新&#xff0c;可以听后台背景音乐&#xff0c;很好的满足我的痛点需求&#xff0c;博客部署在云端服务器访问响应较快…...

Python入门(一)

anaconda安装 官网&#xff1a;https://www.anaconda.com下载 jupyter lab 简介&#xff1a; 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境&#xff0c;你可以使用它编写notebook&#xff0c;操作终端&#xff0c;编辑markdown文本&#xf…...

云表企业级无代码案例-自主开发ERP管理系统

痛点 我是一名企业经营者&#xff0c;同时也是信息化建设的坚定倡导者。凭借管理专业背景&#xff0c;我深知经营数据对于企业的至关重要性。如何高效搜集、精准分析经营数据&#xff0c;并将其转化为决策依据&#xff0c;直接关乎企业的生死存亡。太多因盲目决策而倒闭的企业…...

Qt —— 编译Qt5版本QFTP库,并实现连接服务、获取列表、上传、下载、删除文件等操作(附源码、附基于Qt5编译好的QFTP库)

示例效果1 示例效果2 介绍 QFTP是Qt4的库,Qt5改用了QNetworkAccessManager来代替。但是Qt5提供的QNetworkAccessManager仅支持FTP的上传和下载,所以只能将QFTP库编译为Qt5的库来进行调用。 QFTP在Github的下载地址:https://github.com/qt/qtftp 客户端源码生成的release结果…...

碰到es6的...拓展运算符

第一次碰到&#xff0c;哥们啥也不会 let searchForm ref({}) let formData ref({}) const initArgs async() > { args.value props.init_data formData .value { ...searchForm.value,//把值都带过来 workWhere : args.value.workWhere, statusArgs : args.value.sta…...

JDK8新特性详解

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…...

ELK+Filebeat 部署实验

Filebeat是轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat&#xff0c;并指定目录与日志格式&#xff0c;Filebeat 就能快速收集数据&#xff0c;并发送给 logstash 进行解析&#xff0c;或是直接发给 Elasticsearch 存储&#xff0c;性能上相比运行…...

利用wireshark lua扩展能力增加自定义解析器[注释解读版]

前言 Wireshark提供了lua扩展能力&#xff0c;可以定制一些Listner和Dissector&#xff0c;用于一些自定义的使用场景&#xff0c;例如: lua插件适应场景Listener报文统计、内容抽取等Dissector协议树解析&#xff0c;在wireshark中立等可看 已在以前的文档中积累了对于List…...

GPT-5不叫GPT-5?下一代模型会有哪些新功能?

OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示&#xff0c;他现在的首要任务就是推出下一代大模型&#xff0c;这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%&#xff0c;GPT-5应该是15%或者20%。 OpenAI从去年开…...

2024.1.23(347.前k个高频元素)

2024.1.23(347.前k个高频元素) 思路 这道题目主要涉及到如下三块内容&#xff1a; 1.要统计元素出现频率 2.对频率排序 3.找出前K个高频元素 首先统计元素出现的频率&#xff0c;这一类的问题可以使用map来进行统计。 然后是对频率进行排序&#xff0c;这里我们可以使用一种…...

MySQL对数据库的操作

前腰&#xff1a;本节只是的数据库本身进行增删查改、备份、恢复等操作&#xff0c;而不是对数据库内的数据表做操作&#xff0c;还请您区分好这两点。 1.创建数据库 # 创建数据库的语法形式 CREATE DATABASE [IF NOT EXISTS] database_name [create_specification]# 大写的是…...

解决Unity WebGLInput插件全屏输入的问题

unity webgl的中文输入插件WebglInput在全屏的时候会出现无法输入中文/输入的英文会字母出现在光标后面/什么都输入不了的等无法正常使用的情况。 插件官网作者给出了unity的2017&#xff0c;2018&#xff0c;2019版本的全屏输入解决方法。 最新插件下载地址&#xff1a;http…...

Android14实战:调整A2DP音量曲线(五十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…...

vector讲解

在学习玩string后我们开始学习vector&#xff0c;本篇博客将对vector进行简单的介绍&#xff0c;还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构&#xff0c;但是vector是由C编写而成的&#xff0c;他和数组也有本质上的区别&#xff…...

nvm 配置淘宝镜像失效,以及安装node后 npm-v 无效

win11 nvm版本 1.1.4 和1.1.7和1.1.12&#xff08;目前最新版本24年 一月二十三日&#xff09; 以上nvm版本都会出现一下问题&#xff0c; 从https://github.com/coreybutler/nvm-windows/releases 下载nvm安装包如下图 傻瓜式安装后&#xff0c;不用去配置环境变量&#…...

深入解析Safe智能合约钱包:架构、安全与开发实践

1. 项目概述&#xff1a;一个面向未来的智能合约钱包架构如果你在Web3领域待过一段时间&#xff0c;尤其是深度参与过以太坊生态的DApp开发或资产管理&#xff0c;那么你一定对“钱包”这个入口工具有着复杂的感情。一方面&#xff0c;它是我们通往链上世界的钥匙&#xff1b;另…...

Rust命令行工具开发实战:从架构设计到工程化发布

1. 项目概述&#xff1a;为什么是Rust&#xff0c;为什么是命令行工具&#xff1f;最近几年&#xff0c;如果你关注过系统编程或者高性能工具领域&#xff0c;Rust这个词出现的频率会越来越高。它不再是一个“未来之星”&#xff0c;而是实实在在地在重塑我们手中的工具链。我自…...

5个技巧打造个性化Obsidian笔记界面:AnuPpuccin主题美化指南

5个技巧打造个性化Obsidian笔记界面&#xff1a;AnuPpuccin主题美化指南 【免费下载链接】AnuPpuccin Personal theme for Obsidian 项目地址: https://gitcode.com/gh_mirrors/an/AnuPpuccin 还在为单调的笔记界面而烦恼吗&#xff1f;想要让你的Obsidian笔记软件焕然一…...

【M1 Mac实战】MATLAB R2021b 安装与优化全攻略

1. M1 Mac安装MATLAB R2021b前的准备工作 第一次在M1芯片的Mac上安装MATLAB R2021b时&#xff0c;我遇到了不少坑。这里分享下必须做好的几项准备工作&#xff0c;能帮你节省至少2小时的折腾时间。 首先确认你的系统版本。实测在macOS Monterey&#xff08;12.0&#xff09;到V…...

ZeroAPI:基于Go与JS的极简文件系统API服务器设计与实践

1. 项目概述&#xff1a;一个极简API服务器的诞生最近在折腾一些个人项目和小工具时&#xff0c;我常常遇到一个场景&#xff1a;需要一个轻量级的、能快速响应的后端接口&#xff0c;用来处理一些简单的数据逻辑&#xff0c;比如表单提交、状态查询&#xff0c;或者作为前端页…...

QtScrcpy:将手机屏幕变成电脑扩展屏的终极解决方案

QtScrcpy&#xff1a;将手机屏幕变成电脑扩展屏的终极解决方案 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy …...

FinalBurn Neo终极指南:如何轻松搭建经典街机游戏模拟器

FinalBurn Neo终极指南&#xff1a;如何轻松搭建经典街机游戏模拟器 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo&#xff08;简称FBNeo&#xff09;是一款开源街机游戏模拟器&#xf…...

番茄小说下载器:如何用开源工具构建个人数字图书馆?

番茄小说下载器&#xff1a;如何用开源工具构建个人数字图书馆&#xff1f; 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经遇到过这样的情况&#xff1a;在手机上追…...

Pine Script V6核心特性解析与量化策略迁移实战指南

1. 项目概述&#xff1a;Pine Script V6 与交易策略开发如果你在TradingView社区里泡过一段时间&#xff0c;或者对量化交易策略开发感兴趣&#xff0c;那么“Pine Script”这个名字你一定不陌生。它就像是TradingView这个全球最大图表分析平台的“官方编程语言”&#xff0c;让…...

除了 Docker 还能用什么?一文看懂容器技术的“四大门派”

除了 Docker 还能用什么&#xff1f;一文看懂容器技术的“四大门派” 在云原生时代&#xff0c;Docker 几乎成了容器的代名词。但实际上&#xff0c;容器技术是一片茂密的森林&#xff0c;除了 Docker&#xff0c;还有许多针对特定痛点&#xff08;如安全、性能、隔离性&#x…...