Markdown类图之继承、实现、关联、依赖、组合、聚合总结(十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

1.前言
本篇目的:理解Markdown类图之继承、实现、关联、依赖、组合、聚合的区别?以及如何使用。
2.Markdown类图继承、实现、关联、依赖、组合、聚合的定义
-
继承(Inheritance):一种类与类之间的关系,表示一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。继承可以实现代码的重用和扩展。
-
实现(Implementation):一种类与类之间的关系,表示一个类实现了另一个类定义的接口或协议。实现关系用于描述类之间的约定和契约,确保实现类具有指定的方法和行为。
-
关联(Association):一种类与类之间的关系,表示两个类之间的联系和连接。关联关系是对象之间最普遍和常见的关系,可以是单向的、双向的、一对一的、一对多的、多对多的。
-
依赖(Dependency):一种类与类之间的关系,表示一个类在执行过程中需要另一个类的协助或依赖。依赖关系通常以参数、返回值、局部变量等方式表现。
-
组合(Composition):一种类与类之间的关系,表示一个类由其他类组合而成,并且组合的类不能独立存在。组合关系是一种强关联关系,一旦组合的类不存在,则整个类也不存在。
-
聚合(Aggregation):一种类与类之间的关系,表示一个类包含其他类的实例,而这些实例可以独立存在。聚合关系是一种弱关联关系,即使聚合的类不存在,包含类仍然可以存在。
区分这些类关系的关键在于理解它们的语义和用途。继承和实现关系是针对类之间的继承和接口实现关系,关联和依赖关系描述了类之间的联系和依赖关系,组合和聚合关系描述了类之间的整体与部分的关系。在设计类之间的关系时,需要根据实际需求和语义来选择适合的关系类型。
3.类图中的符号表示

4.Markdown类图继承、实现、关联、依赖、组合、聚合应用实例
1. 继承(Inheritance):表示一个类可以继承另一个类的属性和方法。继承关系用于实现类的层次结构和代码的重用。子类继承父类的属性和方法,并可以扩展或重写它们。示例代码:
class Animal {// 父类Animal的属性和方法
}class Dog extends Animal {// 子类Dog继承了父类Animal的属性和方法,并可以扩展或重写它们
}
2. 实现(Implementation):表示一个类实现了另一个类定义的接口或协议。实现关系用于描述类之间的约定和契约,确保实现类具有指定的方法和行为。示例代码:
interface Drawable {void draw();
}class Circle implements Drawable {// 类Circle实现了接口Drawable的方法draw()
}
3. 关联(Association):表示两个类之间的连接和关系。关联关系可以是单向的、双向的,一对一的、一对多的或多对多的。关联关系通常是通过类之间的字段或参数来实现。示例代码:
class Car {// 类Car与类Engine之间存在关联关系,Car拥有一个Engineprivate Engine engine;
}
4. 依赖(Dependency):表示一个类在执行过程中需要另一个类的协助或依赖。依赖关系通常是通过类之间的方法参数或局部变量来实现。示例代码:
class Car {// 类Car依赖于类Engine的方法start()public void start(Engine engine) {engine.start();}
}
5. 组合(Composition):表示一个类由其他类组合而成,并且组合的类不能独立存在。组合关系是一种强关联关系,一旦组合的类不存在,则整个类也不存在。示例代码:
class Car {// 类Car由类Engine组合而成,Car拥有一个Engineprivate Engine engine;
}
6. 聚合(Aggregation):表示一个类包含其他类的实例,而这些实例可以独立存在。聚合关系是一种弱关联关系,即使聚合的类不存在,包含类仍然可以存在。示例代码:
class Department {// 类Department包含多个类Employee的实例,Employee可以独立存在private List<Employee> employees;
}
5.说明
举例说明:
1.继承:
定义:是一种继承关系,表示子类继承父类的所有特征和行为。
表示:使用带三角箭头的实线,箭头指向父类。示例:
Animal <|-- Person
Animal <|-- Dog2.实现
定义:类实现接口或者抽象类,表示类是接口所有特征和行为的实现
表示:带三角箭头的虚线,箭头指向接口或抽象类。
示例:
Person <|.. Man
Person <|.. Woman3.组合
定义:是一种整体与部分的关系,但部分不能离开整体而单独存在,随整体的创建而创建,称为强聚合(也属于关联关系的一种),要求代表整体的对象负责代表部分的对象的生命周期。
表示:带实心菱形的实线,实心菱形指向整体。示例:
Company *-- Department4.聚合
定义:是一种整体与部分的关系,且部分可以离开整体而单独存在,是关联关系的一种,强关联关系。关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
表示:带空心菱形的实现,空心菱形指向整体。示例:
Car *-- Wheel5.关联
定义:是一种拥有的关系,它使一个类知道另一个类的属性和方法;关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
表示:带普通箭头的实心线,指向被拥有者。
示例:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。示例:
Teacher -- Student
Student <-- Course6.依赖
定义:是一种使用关系,即一个类的实现需要另一个类的协助。(一个公司可以有一个或多个员工,但一个员工只能为一家公司工作。)
表示:带普通箭头的虚线,箭头指向被使用者。示例:
Oxygen <.. Animal相关文章:
Markdown类图之继承、实现、关联、依赖、组合、聚合总结(十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
@MultipartConfig注解
前言: 在学习Javaweb的Servlet文件上传和下载的过程中,我们会遇到一个特殊的注解---MultipartConfig。 MultipartConfig的适用情况: 1.文件上传: 当您的应用程序需要接收用户上传的文件时,可以在相应的 Servlet 上使用 Multipart…...
Python并发编程简介
1、Python对并发编程的支持 多线程: threading, 利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成多进程: multiprocessing, 利用多核CPU的能力,真正的并行执行任务异步IO: asyncio,在单线程利用CPU和IO同时执行的原理,实现函数异步执行使用Lo…...
WebSocket介绍及部署
WebSocket是一种在单个TCP连接上进行全双工通信的协议,其设计的目的是在Web浏览器和Web服务器之间进行实时通信(实时Web)。 WebSocket协议的优点包括: 1. 更高效的网络利用率:与HTTP相比,WebSocket的握手…...
自动求导,计算图示意图及pytorch实现
pytorch实现 x1 torch.tensor(3.0, requires_gradTrue) y1 torch.tensor(2.0, requires_gradTrue) a x1 ** 2 b 3 * a c b * y1 c.backward() print(x1.grad) print(y1.grad) print(x1.grad 6 * x1 * y1) print(y1.grad 3 * (x1 ** 2))输出为: tensor(36.) …...
睿伴科创上线了
Robotutor睿伴,一个专业的青少儿编程科创教育品牌和科创服务平台。 Robotutor睿伴拥有一个超过5年的青少儿编程科创教育团队,积累了丰富的课程研发,教学服务和赛事辅导经验。并和上海多所知名高校、上海市计算机学会、上海青少年科学社等开展…...
域名抢注和域名注册
随着互联网的发展,域名已经成为了企业和个人在网络上展示自己的重要标志。如何获得一段好记、易拼写、有意义的域名,是很多人都面临的问题。本文将介绍域名抢注和域名注册的相关内容,并推荐ym.qqmu.com这个可靠的域名注册平台。 一、什么是域…...
【20】c++设计模式——>组合模式
组合模式定义 C组合模式(Composite Pattern)是一种结构型设计模式,他允许将对象组合成树形结构来表示“部分-整体”的层次结构;在组合模式中有两种基本类型的对象:叶子对象和组合对象,叶子对象时没有子对象…...
Jetpack:004-如何使用文本组件
文章目录 1. 概念介绍2. 使用方法2.1 通用参数2.2 专用参数 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack组件在布局中的对齐方式,本章回中主要介绍文 本组件的使用方法。闲话休提,让我们一起Talk Android Jetpack吧 1. 概念介绍 我们在本章…...
JVM(八股文)
目录 一、JVM简介 二、JVM中的内存区域划分 三、JVM加载 1.类加载 1.1 加载 1.2 验证 1.3 准备 1.4 解析 1.5 初始 1.6 总结 2.双亲委派模型 四、JVM 垃圾回收(GC) 1.确认垃圾 1.1 引用计数 1.2 可达性分析(Java 采用的方案&a…...
C#WPF标记扩展应用实例
本文介绍C#WPF标记扩展应用实例 一、标记扩展 标记扩展是一个 XAML 语言概念。 用于提供特性语法的值时,大括号({ 和 })表示标记扩展用法。 此用法指示 XAML 处理不要像通常那样将特性值视为文本字符串或者可转换为字符串的值。就是类似于值用变量的意思。 WPF 应用编程中…...
四维曲面如何画?matlab
clc; clear all [theta,phi]meshgrid(linspace(0,pi,50),linspace(0,2*pi,50)); zcos(theta); xsin(theta).*cos(phi); ysin(theta).*sin(phi); f-1*((x.*y).2(y.*z).2(z.*x).^2); surf(sin(theta).*cos(phi).*f,sin(theta).*sin(phi).*f,cos(theta).*f,f) 结果...
软件培训测试高级工程师多测师肖sir__html之作业11
html之作业 案例1: 截图: 代码: <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单</title></head><body><table style"background-color:red" bo…...
详解一典型的反激式开关电源方案
理解一个单端反激式开关电源方案: 1、抛出问题: 如图,在某系统方案上看到下图所示的单端反激式开关电源方案。 2、解析问题: 2.1、乍一看: 典型的AC-DC电路,考虑了安规及过压过流保护,如&am…...
AI 大框架基于python来实现基带处理之TensorFlow(信道估计和预测模型,信号解调和解码模型)
AI 大框架基于python来实现基带处理之TensorFlow(信道估计和预测模型,信号解调和解码模型) 基带处理(Baseband Processing)是一种信号处理技术,用于在通信系统中处理和调制基带信号。基带信号是指未经过调制的信号,通常包含原始数…...
阿里云上了新闻联播
我是卢松松,点点上面的头像,欢迎关注我哦! 阿里新任的CEO吴泳铭上央视新闻联播了! 在昨天的新闻联播里,出席科技座谈会,有一个特别镜头,出现了阿里新任CEO吴泳铭的镜头。 这个信号意义明显,我…...
算法练习12——跳跃游戏
LeetCode 55 跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 贪…...
Java架构师系统架构设计服务拆分
目录 1 服务拆分和子系统模块拆分1.1 服务化架构的优势2 描绘系统蓝图里面的详解服务2.1 为什么拆分服务3 服务拆分的基本要求3.1 服务功能是自包含的3.2 服务呢应该具备独立性和专业性3.3 服务是无状态的3.4 服务之间采用轻量级的通讯机制4 服务拆分的基本方法4.1 按业务边界拆…...
通用任务批次程序模板
通用批次任务模板 我们总会遇到需要使用批次任务处理问题的场景,任务有很多不同类型的任务,同时这些任务可能都有大致相同,甚至抽象出来共同的执行阶段状态。 任务的执行肯定无法保证一帆风顺,总会在某个时间阶段被打断ÿ…...
Rust专属开发工具——RustRover发布
JetBrains最近推出的Rust集成开发工具——RustRover已经发布,官方网站:RustRover: Rust IDE by JetBrains JetBrains出品过很受欢迎的开发工具IntelliJ IDEA、PyCharm等。 RustRover优势 Rust集成环境,根据向导可自动下载安装rust开发环境提…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
