UML-各种图

news2024/11/13 14:44:06

什么是类图

定义系统中的类,描述类的内部结构(属性、方法等),表示类之间的关系(泛化、实现、依赖、关联、聚合、组合)。

UML表示类图

在这里插入图片描述
上图中左侧图形是一个常见的类图,

  • 类名:在顶端存放;
  • 属性部分:在中间存放,+ name: string => 可见性符号 属性名: 属性类型。
  • 方法部分:在底部存放,+ exam(int,double) => 可见性符号 方法名(参数列表): 返回值类型
    使用便签图形与虚线为类图添加注释

可见性

  • “+”:表示公有 public
  • “-”:表示私有 private
  • “#”:受保护的 protected
  • “~”:包内公有 package

属性语法

[可见性]属性名[:类型][=初始值][{属性字符串}] => + name: String = "tom" {readOnly}
中括号中描述的可有可无。


方法语法

[可见性]方法名[(参数列表)][:返回类型][{方法字符串}] => + calculateTotalPrice(quantity: int, pricePerUnit: double): double {static}
中括号中描述的可有可无。


泛化关系(继承关系)

在这里插入图片描述
一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父接口


实现关系

在这里插入图片描述
实现用一条带三角箭头的虚线表示,从类指向实现的几接口


依赖关系

  • 定义:依赖关系表示一个类的方法使用另一个类的对象作为参数、局部变量或返回值,或者在方法中调用另一个类的方法。

  • 特点:依赖关系是一种较弱的关系,通常是临时性的。一个类的变化可能会影响到依赖它的类,但这种影响是间接的。

  • 表示:通常用虚线箭头表示。

  • 例子:学生和食堂,学生吃饭需要去食堂,食堂提供食物。


关联关系

  • 定义:关联关系表示两个类之间存在某种关系,通常是通过成员变量来实现的。这种关系可以是单向的,也可以是双向的。

  • 特点:关联关系中的对象通常是独立存在的,它们的生命周期不相互依赖。一个对象的创建和销毁不会直接影响另一个对象。

  • 表示:通常用实线箭头表示。

  • 例子:一个 Teacher 类包含多个 Student 类的对象,表示教师和学生之间的关系。


聚合关系

  • 定义:聚合关系是一种特殊的关联关系,表示整体与部分的关系,但部分可以独立于整体存在。

  • 特点:聚合关系强调的是整体与部分的关系,部分对象可以属于多个整体对象,或者可以独立存在* 。部分对象的生命周期可以独立于整体对象。

  • 表示:通常用空心菱形表示。

  • 例子: 一个 Department 类包含多个 Employee 类的对象,表示部门和员工之间的关系,员工可以独立于部门存在。


组合关系

  • 定义:组合关系是一种强聚合关系,表示整体与部分之间的一种更强的关联。

  • 特点:组合关系表示整体与部分的关系,部分对象的生命周期完全依赖于整体对象。如果整体对象被销毁,部分对象也会被销毁。部分对象不能独立存在,也不能被多个整体对象共享。

  • 表示:通常用实心菱形表示。

  • 例子:一个 Car 类包含一个 Engine 类的对象,表示汽车和引擎之间的关系,引擎的生命周期完全依赖于汽车。


关联关系和聚合关系的区别

在面向对象编程中,关系的类型(如关联关系和聚合关系)通常是根据对象之间的语义和生命周期来区分的。具体到 Department 和 Employee 以及 Teacher 和 Student 的例子,我们可以从以下几个方面来理解它们之间的关系类型:

Department 和 Employee
聚合关系:

  • 整体与部分:Department 和 Employee 之间的关系可以被视为整体与部分的关系。一个 Department 包含多个 Employee,但 Employee 可以独立于 Department 存在。例如,一个 Employee 可以在多个 Department 之间转移,或者在没有 Department 的情况下继续存在。

  • 生命周期独立:Employee 的生命周期不依赖于 Department。即使 Department 被销毁,Employee 仍然可以存在。

Teacher 和 Student
关联关系:

  • 一般关系:Teacher 和 Student 之间的关系可以被视为一般的关联关系。一个 Teacher 可以教多个 Student,但这并不意味着 Student 是 Teacher 的一部分。Teacher 和 Student 是独立的实体,它们之间的关系是基于教学活动,而不是整体与部分的关系。

  • 生命周期独立:Teacher 和 Student 的生命周期是独立的。一个 Teacher 的创建和销毁不会直接影响 Student,反之亦然。

总结

  • 聚合关系:强调整体与部分的关系,部分对象的生命周期可以独立于整体对象。例如,Department 和 Employee。

  • 关联关系:表示对象之间的一般关系,对象的生命周期独立。例如,Teacher 和 Student。

在实际编程中,选择合适的关系类型取决于具体的业务需求和对象之间的语义关系。理解这些关系有助于更好地设计类之间的关系,确保程序的正确性和可维护性。

总结

  • 依赖关系:较弱的关系,临时性,一个类的变化可能影响依赖它的类。

  • 关联关系:一般关系,对象独立存在,生命周期不相互依赖。

  • 聚合关系:整体与部分的关系,部分对象可以独立存在。

  • 组合关系:强聚合关系,部分对象的生命周期完全依赖于整体对象。

什么是用例图

什么是状态图

什么是活动图

什么是时序图

什么是组件图

什么是组件图

什么是部署图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1916316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局: 1.1QVBoxLayout介绍: 1.2 属性介绍: 1.3细节理解: 二、QHBoxLayout-水平布局: 三、QGridLayout-网格布局: 3.1QGridLayout介绍: 3.2常用方法&#xff1a…

iMazing 3.0.3.1Mac中文破解版下载安装激活

今天,小编要分享的是Mac下一款可以帮助用户管理IOS设备的软件——iMazing,之前,小编也分享的过类似的软件,iMazing却有独特之处。小子这次带来的是3.0.3.1版本。 iMazing 3是一款iOS设备管理软件,该软件支持对基于iOS…

【STM32学习】cubemx配置,串口的使用,串口发送接收函数使用,以及串口重定义、使用printf发送

1、串口的基本配置 选择USART1,选择异步通信,设置波特率 选择后,会在右边点亮串口 串口引脚是用来与其他设备通信的,如在程序中打印发送信息,电脑上打开串口助手,就会收到信息。 串口的发送接收&#xff0…

机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!...

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Ubuntu 24.04 安装 NVIDIA Container Toolkit 什么是 NVIDIA Container Toolkit? 描述:NVIDIA Container Toolkit(容器工具包)使用户能够构建和运行 GPU 加速的容器,该工具包括一个容器运行时库和实用程序,用于自动…

新能源汽车充电站远程监控系统S275钡铼技术无线RTU

新能源汽车充电站的远程监控系统在现代城市基础设施中扮演着至关重要的角色,而钡铼技术的S275无线RTU作为一款先进的物联网数据监测采集控制短信报警终端,为充电站的安全运行和高效管理提供了强大的技术支持。 技术特点和功能 钡铼S275采用了基于UCOSI…

【PTA天梯赛】L1-006 连续因子(20分)

作者:指针不指南吗 专栏:算法刷题 🐾或许会很慢,但是不可以停下来🐾 文章目录 题目题解题意步骤 总结 题目 题目链接 题解 题意 求解n的最长连续因子 和因子再相乘的积无关,真给绕进去了 步骤 双重循…

D-走一个大整数迷宫(牛客月赛97)

题意:给两个n行m列的矩阵a和b,计数器,只有当计数器的值模(p-1)时出口才打开,要从左上走到右下,求最快多久走出迷宫。 分析:无论2的bij次方有多大p的2的bij次方的次方取模&#xff0…

前端vue 实现取色板 的选择

大概就是这样的 一般的web端框架 都有自带的 的 比如 ant-design t-design 等 前端框架 都是带有这个的 如果遇到没有的我们可以自己尝试开发一下 简单 的 肯定比不上人家的 但是能用 能看 说的过去 我直接上代码了 其实这个取色板 就是一个input type 是color 的input …

云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析

随着科技的快速发展,视频监控技术已经广泛应用于各个领域,如公共安全、商业管理、教育医疗等。与此同时,视频转码技术作为视频处理的关键环节,也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…

【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)

Tajimas D Test 已经开发了几种中性检验,用于识别模型假设的潜在偏差。在这里,我们将说明一种有影响力的中性检验,即Tajimas D(Tajima 1989)。Tajimas D通过比较数据集中的两个𝜃 4N𝜇估计值来…

nssm的下载和使用

nssm(Non-Sucking Service Manager)是一个用于在Windows系统上管理服务的工具。它允许你将.exe文件和.bat文件转换为Windows服务,并提供了一些功能来管理这些服务。 下载和安装 首先,你需要从nssm官方网站(https://n…

顺序结构 ( 四 ) —— 标准数据类型 【互三互三】

序 C语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。 整型(integer) 在C语言中,整型类型标识符为int。根据整型变量的取值范…

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

C/C++ list模拟

模拟准备 避免和库冲突&#xff0c;自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…

宝塔:如何开启面板ssl并更新过期ssl

1、登录宝塔面板 > 前往面板设置 > 最上方的安全设置 > 面板SSL > 面板SSL配置 打开后先查看自签证书的时间&#xff0c;如果时间是已经过期的&#xff0c;就前往这个目录&#xff0c;将该目录下所有文件都删掉 重新回到面板SSL配置的位置&#xff0c;打开后会看到…

web后端开发--请求响应

目录 前言 请求 简单参数 原始方法 Spring方式 Post请求乱码处理 实体参数 简单实体参数 复杂实体参数 ​编辑 数组集合参数 数组参数 ​编辑 集合参数 日期参数 ​编辑 Json参数 ​编辑 传递json数据 json数组 json对象&#xff08;POJO&#xff09; jso…

conda篇----在已有conda环境的基础上升级python包

conda篇----在已有conda环境的基础上升级python包 原先的python版本 第一步&#xff1a; conda update --all(py11) [xxxaivrs01 xxx]$ conda update --all Collecting package metadata (current_repodata.json): done Solving environment: done> WARNING: A newer vers…

PTC可复位保险丝 vs 传统型保险丝:全面对比分析

PTC可复位保险丝&#xff0c;又称为自恢复保险丝、自恢复熔断器或PPTC保险丝&#xff0c;是一种电子保护器件。它利用材料的正温度系数效应&#xff0c;即电阻值随温度升高而显著增加的特性&#xff0c;来实现电路保护。 当电路正常工作时&#xff0c;PTC保险丝呈现低阻态&…

可理解性评估:使用Google Gemini优化语音识别的意义保留

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

从零开始实现大语言模型(三):Token Embedding与位置编码

1. 前言 Embedding是深度学习领域一种常用的类别特征数值化方法。在自然语言处理领域&#xff0c;Embedding用于将对自然语言文本做tokenization后得到的tokens映射成实数域上的向量。 本文介绍Embedding的基本原理&#xff0c;将训练大语言模型文本数据对应的tokens转换成Em…