编程哲学——抽象

news2024/11/17 7:51:36

主要参考资料:
App Image Format: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32s3/api-reference/system/app_image_format.html#

目录

  • 简介
    • 抽象:从现实到模型
    • 类和对象:现实与模型的映射
    • 封装:隐藏复杂性
    • 继承:代码复用的桥梁
    • 多态:接口的多样性
  • ESP-IDF中的抽象概念
    • App Image

简介

在软件开发的广阔天地中,面向对象编程(OOP)以其独特的抽象哲学,为构建复杂软件系统提供了一种强大的方法论。

抽象:从现实到模型

抽象是面向对象编程的核心,它允许我们忽略细节,专注于对象的本质特征。在现实世界中,每一个实体都有其独特的属性和行为。例如,一辆车有颜色、速度等属性,以及行驶、停止等行为。在OOP中,我们将这些实体抽象为“类”,每个类定义了一组属性和方法,从而捕捉了实体的关键特征。

类和对象:现实与模型的映射

类是现实世界实体的抽象模型,而对象则是这些模型的具体实例。通过创建类,我们定义了一种模板,它规定了对象应具备的属性和行为。当我们需要一个具体的实体时,我们可以根据类来创建对象。这个过程不仅简化了代码的编写,也提高了代码的重用性和可维护性。

封装:隐藏复杂性

封装是OOP的另一个重要概念,它涉及到将对象的实现细节隐藏起来,只暴露出一个可以被外界访问的接口。这样做的好处是,我们可以改变对象的内部实现,而不会影响到使用该对象的其他部分。封装提高了代码的模块化,使得各个部分之间的耦合度降低,从而更容易进行维护和扩展。

继承:代码复用的桥梁

继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和方法。这不仅减少了代码的重复,也使得我们可以在现有的基础上进行扩展和定制。继承体现了一种“是一个”(is-a)的关系,例如,所有的车辆都可以继承自一个更通用的“交通工具”类。

多态:接口的多样性

多态性是OOP的另一个关键特性,它允许我们使用统一的接口来处理不同类型的对象。这意味着,即使对象的具体类型不同,只要它们遵循相同的接口,我们就可以以相同的方式使用它们。多态性提高了代码的灵活性,使得我们可以编写更加通用和可扩展的代码。

ESP-IDF中的抽象概念

App Image

在编译好的elf文件中,DROM段自esp_app_desc_t结构体开始,这个结构体中的信息就是 App Image的抽象(在C语言中会使用结构体 来模拟 C++中的类)。
包含了以下信息:
在这里插入图片描述

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

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

相关文章

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch2 贝尔曼公式 【状态值、动作值】

PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍 1、学堂在线 视频 习题 2、相应章节 过电子书 复习 GitHub界面链接 3、总体 MOOC 过一遍 还是跳过了一些 P38 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链接 PPT和书籍下载网址: 【github…

EDU学校漏洞sql注入挖掘记录

某搜索框 biaoti参数单引号报错 双引号正常 经过我的不断测试,’||exp(710)||’报错,exp函数就是执行e的多少次方,709不会报错,710会导致这个数太大报错 709正常,这里说明一下,因为这个数是小数所以返回200&#xff0c…

自学C语言-10

第10章 指针 指针是C语言的一个重要组成部分,是C语言的核心、精髓所在。用好指针,可以在C语言开发中起到事半功倍的效果。一方面,可以提高程序的编译效率、执行速度,以及动态存储分配;另一方面,可使程序更加…

MoonBit 周报 Vol.46:支持32位无符号整数!

MoonBit 更新 支持了 32 位无符号整数 let num 100U // 32位无符号整数的字面量需要后缀U在 wasm 后端导出返回值类型为 Unit 的函数时,之前导出函数的类型中会有 (result i32),现在 MoonBit 编译器会自动生成一个没有返回值 wrapper 函数&#xff0c…

[leetcode]add-strings 字符串相加

. - 力扣(LeetCode) class Solution { public:string addStrings(string num1, string num2) {int i num1.length() - 1, j num2.length() - 1, add 0;string ans "";while (i > 0 || j > 0 || add ! 0) {int x i > 0 ? num1[i…

win10改远程桌面端口,Windows 10 修改远程桌面端口号的专业指南

在Windows 10系统中,远程桌面(Remote Desktop)功能允许用户从一台计算机远程访问和控制另一台计算机。为了增加远程连接的安全性,减少潜在的安全风险,修改默认的远程桌面端口号是一个常见的安全措施。以下是在Windows …

名侦探李先生第一话:谁是真正的凶手(只出现一次的数字相关题解(力扣)+位操作符回忆)

引子:我们在之前的案子中破解过基础的单身狗问题,那面对更有挑战的案子,且看李先生如何破局,那下凶手! 复习: 1,位操作符: 正整数原,反,补码都相同 首位是…

长城与华为签署《HUAWEI HiCar 集成开发合作协议》,共创开发生态

近日,在2024年华为开发者大会上,长城汽车与华为签署《HUAWEI HiCar 集成开发合作协议》(下称《协议》)。这不仅标志着双方相关团队在技术方面的深度合作,更体现了两家公司共同提升未来智能出行体验的共同愿景。 而凭借…

SAPUI5基础知识8 - 模块(Module)的使用

1. 背景 在SAPUI5中,几乎所有东西都是一个模块(例如:控件,控制器,组件等等),通过依赖管理,模块间可以相互调用。这样做的好处是,可以仅在需要时才去加载必需的模块&…

基于Openmv的追小球的云台

介绍 在这篇文章,我会先介绍需要用到且需要注意的函数,之后再给出整体代码 在追小球的云台中,比较重要的部分就是云台(实质上就是舵机)的控制以及对识别的色块位置进行处理得到相应信息后控制云台进行运动 1、舵机模…

基于 RGB的热成像无人机树冠数据集(目标检测)

亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 摘要&a…

Hightec编译器系列之高级调试技巧精华总结

Hightec编译器系列之高级调试技巧精华总结 小T为了便于大家理解,本文的思维导图大纲如下: 之前可能很多小伙伴没有使用过Hightec编译器,大家可以参考小T之前的文章《Hightec编译器系列之白嫖就是爽》可以下载一年试用版本。 小T使用过适配英…

vue中图谱关系插件relation-graph

vue中图谱关系插件relation-graph 一、效果图二、安装下载&#xff08;vue2.0版本的&#xff09;三、直接上代码 一、效果图 二、安装下载&#xff08;vue2.0版本的&#xff09; npm install --save relation-graph var foo bar;三、直接上代码 <template><div cla…

Notepad++插件 Hex-Edit

Nptepad有个Hex文件查看器&#xff0c;苦于每次打开文件需要手动开插件显示Hex&#xff0c;配置一下插件便可实现打开即调用 关联多个二进制文件&#xff0c;一打开就使用插件的方法&#xff0c;原来是使用空格分割&#xff01;&#xff01;&#xff01;

MySQL中的Redo-log是什么?有什么作用?

用来实现数据的恢复&#xff0c;数据被更新到缓冲区但没刷磁盘&#xff0c;然后MySQL宕机了&#xff0c;MySQL会通过日志恢复数据。 1.为什么需要Redo-log日志&#xff1f; MySQL绝大部分引擎都是基于磁盘存储数据的&#xff0c;每次读写数据都走磁盘&#xff0c;效率十分低下…

jar包转exe封装软件并一键安装使用

目录 封装文档说明如有跨域问题在ems服务增加配置服务启动自动打开浏览器使用工具 Launch4j 把jar包打成exe执行文件现在还不能给用户用&#xff0c;因为缺少jre&#xff0c;后面整合资源会把jre一起打包使用inno setup合并资源&#xff0c;mysql之类的服务&#xff0c;最终打包…

鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段二

一、鸿蒙应用界面开发 弹性布局-Flex 语法 /* 弹性容器组件 Flex() 位置&#xff1a; Flex默认主轴水平往右&#xff0c;交叉轴垂直向下&#xff08;类似Row&#xff09; 语法&#xff1a; Flex(参数对象){子组件1,子组件2,子组件3 } 属性方法&#xff1a; direction&#xf…

2-15 基于matlab的蚁群,模拟退火,遗传,神经网络,禁忌搜索等智能优化算法对TSP问题

基于matlab的蚁群&#xff0c;模拟退火&#xff0c;遗传&#xff0c;神经网络&#xff0c;禁忌搜索等智能优化算法对TSP问题。五种优化算法对多个城市路径进行规划&#xff0c;通过优化速度、距离可比较五种方法的优劣。程序已调通&#xff0c;可直接运行。 2-15 蚁群优化算法 …

【UEFI实战】HttpBoot

环境配置 首先下载tftpd工具&#xff0c;可以在phjounin / tftpd64 / Downloads — Bitbucket下载到&#xff0c;建议不要安装到C盘&#xff0c;因为可能无法修改其配置。配置tftpd工具的DHCP服务&#xff1a; 注意这里的IP地址需要跟实际网卡IP匹配。 下载Apache&#xff0c…

短视频矩阵系统搭建部署,AI剪辑短视频,矩阵发布,一键管理矩阵账号

目录 前言&#xff1a; 一、短视频矩阵系统功能是怎么样的&#xff1f; 二、怎么制作这样一款系统&#xff1f; 总结&#xff1a; 前言&#xff1a; AI短视频矩阵系统&#xff0c;利用AI编辑短视频的功能&#xff0c;将素材上传到系统里面&#xff0c;AI可以自动剪辑成新的短…