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

【编程概念基础知识】

、编程基础

一、面向对象的三大特性

1、封装:

盒子、零件、按钮

隐藏对象 的内部状态,并且只通过对象的方法来访问数据

想象你有一个小盒子(这个盒子就是一个类),里面装着一些零件(这些零件就是数据)。
现在,你不希望其他人直接接触到这些零件(数据/属性),因为他们可能会破坏或误用它们。
所以,你在盒子上安装了一些按钮和开关(这些按钮和开关就是方法),
当其他人需要使用零件(数据/属性)时,他们只能通过按下这些按钮或开关来间接地操作零件。

好处

1、保护数据:通过限制外部对数据的直接访问,可以防止数据被意外或恶意地修改。
2、提高可维护性:如果内部实现发生变化,只需要更新类的内部逻辑,不需要修改外部代码。
3、简化接口:用户只需要关心如何使用提供的方法,而不需要了解内部的具体实现细节。

2、继承

公司规定、部门落实

父类是模板,子类是具体的落实实现

继承了父类的所有属性和方法,并且可以添加或覆盖父类的行为以定义自己的行为

继承(Inheritance)是面向对象编程中的一个重要概念。它允许我们创建一个新类(子类),并从一个已有的类(父类)中继承属性和方法。想象你有一个基本的“动物”模型(父类),它包含了所有动物共有的特征和行为,例如“吃”和“睡觉”。现在,如果你想创建一个“猫”模型(子类),你可以直接从“动物”模型中继承这些共有特征和行为,而不需要重新定义它们。在这个例子中,“猫”模型是“动物”模型的子类,意味着它自动拥有了父类的所有特征和行为。同时,你也可以在“猫”模型中添加一些猫特有的特征和行为,例如“抓老鼠”。

好处

1、代码重用:避免重复编写相同的代码。
2、提高可维护性:如果父类的行为发生了改变,所有子类也会自动更新。
3、实现多态性:子类可以覆盖父类的方法,提供自己的实现方式。总之,继承就像是一个模板系统,你可以从一个基本模板中继承共有特征,然后添加独特的特征来创建新的模型

3、多态

叫,是一个通用的接口/方法,狗叫、猫叫、牛叫,均为自己特性的响应。

使用父类的接口来调用子类的实现, 而不需要修改原来的代码

多态(Polymorphism)是面向对象编程中的一个关键概念。它允许我们使用同一个接口(方法或函数)来执行不同的操作。想象你有一个遥控器,可以控制不同类型的电器的开关,例如电视、音响和灯光。每个电器都有一个“打开”按钮,但按下这个按钮会产生不同的效果:电视会显示画面,音响会播放音乐,灯光会亮起来。在这个例子中,“打开”按钮就是一个多态的接口,不同的电器(对象)可以根据自己的特性来响应这个接口的调用。这种机制使得我们可以编写通用的代码来控制不同类型的对象,而不需要针对每种类型的对象编写特定的代码。

好处

1、提高代码的灵活性和可扩展性:只需要添加新的对象类型,而不需要修改现有的代码。
2、简化代码的复杂度:使用同一个接口来处理不同类型的对象,降低了代码的复杂度。
3、实现更高级的编程技巧:例如策略模式、工厂模式等。总之,多态就像是一个通用的接口,可以被不同类型的对象所实现和响应。这种机制使得我们的代码更加灵活、可扩展和易于维护。

二、对面向对象的理解

类是对象的模板,实例是(根据这个模板创建的)具体对象

在面向对象编程中,类和实例是两个不同的概念。1、类:类是一个蓝图或模板,用于创建对象。它定义了对象的属性(数据)和方法(行为)。
类本身不是一个对象,它只是一个抽象的概念,用于描述一组具有相似特征和行为的对象。2、实例:实例是根据类创建的具体对象。
每个实例都有自己独特的状态(属性值),并可以执行类中定义的行为(方法)。实例是真正的对象,可以被操作和交互。可以将类比作一个车的设计图纸,而实例则是根据这个设计图纸生产出来的具体车辆。设计图纸(类)本身不是一辆车(对象),但它描述了如何制造一辆车(创建实例)。
一旦车辆被生产出来(实例被创建),每辆车都有自己的颜色、型号等特征(属性),并可以启动、加速等(方法)。
向对象编程是一种编程范式,它将现实世界中的事物抽象为对象,并将对象组合成更大的系统。在面向对象的编程中,我们定义类来描述对象,类定义了对象的属性和方法。
通过使用类,我们可以创建多个具有相同属性和方法的对象实例

三、结构化程序设计和面向对象程序设计各自的特点及优缺点是什么?

1、如何理解结构化程序设计

单位是一个积木块,都是小局部,通过拼接组合

想象你有一堆乐高积木(代表代码块),你需要按照特定的步骤来建造房子。首先,你可能会建造一个基础结构(代表主函数),然后再逐步添加墙壁、屋顶和门窗(代表不同的函数或过程)。每个步骤都非常清晰,易于理解和执行。例如,在编写一个计算器程序时,结构化程序设计可能会把代码分解为以下步骤:1、获取用户输入。
2、解析输入并确定要执行的操作。
3、执行所需的计算。
4、显示结果。每个步骤都像是一个独立的乐高积木块,可以单独完成,最后组合成一个完整的房子(程序)。

2、如何理解面向对象程序设计

单位是一个建筑物,都是个体,通过关系组合

想象你有一个完整的乐高城镇(代表对象),其中每个建筑物(代表对象)都有自己的特点和功能。例如,一个房子可能有门、窗和屋顶,而一个商店可能有货架和收银台
每个建筑物都可以独立存在,并且可以与其他建筑物交互。在编写同样的计算器程序时,面向对象程序设计可能会定义以下对象:1、UserInput对象:  负责获取用户输入。
2、Calculator对象: 负责执行计算。
3、Display对象:    负责显示结果。这些对象可以相互通信和协作,形成一个完整的系统(程序)。例如,UserInput对象可以将输入发送给Calculator对象,Calculator对象可以执行计算并将结果发送给Display对象。

3、她们二者的关系

结构化程序设计更像是一步步手动建造一个房子,

而面向对象程序设计则更像是一个已经存在的小城镇,你只需要将不同的建筑物组合在一起就可以了。

前者更注重程序的流程和顺序,后者更注重对象之间的关系和交互。

相关文章:

【编程概念基础知识】

、编程基础 一、面向对象的三大特性 1、封装: 盒子、零件、按钮 隐藏对象 的内部状态,并且只通过对象的方法来访问数据 想象你有一个小盒子(这个盒子就是一个类),里面装着一些零件(这些零件就是数据&a…...

【React】深入理解 JSX语法

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 深入理解 JSX语法1. JSX 简介2. JSX 的基本语法2.1 基本结构2.2 与普通 JavaScr…...

【Linux】从零开始使用多路转接IO --- 理解EPOLL的 LT水平触发模式 与 ET边缘触发模式

当你偶尔发现语言变得无力时, 不妨安静下来, 让沉默替你发声。 --- 里则林 --- 从零开始认识多路转接 1 EPOLL优缺点2 EPOLL工作模式 1 EPOLL优缺点 poll 的优点(和 select 的缺点对应) 接口使用方便:虽然拆分成了三个函数,…...

QtLua

描述 QtLua 库旨在使用 Lua 脚本语言使 Qt4/Qt5 应用程序可编写脚本。它是 QtScript 模块的替代品。 QtLua 不会为 Qt 生成或使用生成的绑定代码。相反,它提供了有用的 C 包装器类,使 C 和 lua 对象都可以从 lua 和 C 访问。它利用 Qt 元对象系统将 QOb…...

c++-有关计数、双变量累加、半衰、阶乘、变量值互换的基础知识

C是一种非常强大和灵活的编程语言,它包含了许多重要的概念和技巧。在本文中,我们将重点讨论五个主题:计数、双变量累加、半衰、阶乘和变量值的互换。我们将介绍这些概念的定义、用法、题目、答案和解释,以帮助读者更好地理解和运用…...

MyBatis3-获取参数值的方式、查询功能及特殊SQL执行

目录 准备工作 获取参数值的方式(重点) 查询功能 查询一个实体类对象 查询一个list集合 查询单个数据 查询一条数据为map集合 查询多条数据为map集合 特殊SQL执行 模糊查询 批量删除 动态设置表名 添加功能获取自增的主键 准备工作 模块My…...

web——[SUCTF 2019]EasySQL1——堆叠注入

这个题主要是讲述了堆叠注入的用法,来复现一下 什么是堆叠注入 堆叠注入:将多条SQL语句放在一起,并用分号;隔开。 1.查看数据库的名称 查看数据库名称 1;show databases; 发现有名称为ctftraining的数据库 2.对表进行查询 1;show tabl…...

【Ubuntu学习】Ubuntu无法使用vim命令编辑

问题 在VMware首次安装Ubuntu,使用vi指令对文件进行编辑,按i键后无法更改文件内容。 原因 由于Ubuntu中预装的是vim-tiny,平时开发中需要使用vim-full。 解决方案 卸载预装vim sudo apt-get remove vim-common安装vim-full sudo apt-get …...

UniAPP u-popup 禁止背景滑动

增加class .NoScroll {overflow: hidden;position: fixed; }在外层div上增加该class判断条件...

F5全新报告揭示AI时代API安全面临严峻挑战

F5 《2024年应用策略现状报告:API安全》揭示了 API 保护中的漏洞以及对全面安全措施的迫切需求 西雅图,2024年11月11日 – F5(NASDAQ: FFIV)日前发布《2024年应用策略现状报告:API 安全》(以下简称为“报告”),揭示了跨行业API安全面临的严峻现状。该报告强调了企业API保护方面…...

使用C语言进行信号处理:从理论到实践的全面指南

1. 引言 在现代操作系统中,信号是一种进程间通信机制,它允许操作系统或其他进程向一个进程发送消息。信号可以用来通知进程发生了一些重要事件,如用户请求终止进程、硬件异常、定时器超时等。掌握信号处理技术对于开发健壮、高效的系统程序至…...

什么是工单管理系统?全面认识指南

在现代企业中,客户服务和支持是业务成功的关键因素之一。为了有效地管理客户请求和问题,许多公司采用了工单管理系统。本文将深入探讨工单管理系统的定义、功能、优势。 一、工单管理系统的定义 工单管理系统是一种软件工具,旨在帮助企业管…...

集群化消息服务解决方案

目录 集群化消息服务解决方案项目概述架构图使用说明服务端通过API接口推送消息给客户端调用方式 请求参数返回参数 客户端推送消息连接websocket或发送消息 接收消息项目地址作者信息 集群化消息服务解决方案 项目概述 集群化消息服务解决方案是一种用于处理大量消息的高可用…...

python数据结构操作与可视化的应用

Python具有丰富的数据结构操作和可视化库,可以进行各种数据结构的创建、编辑和分析,并将结果可视化。以下是几个常见的Python数据结构操作和可视化的应用示例: 1. 列表(List)操作和可视化: - 创建列表&a…...

【基于轻量型架构的WEB开发】课程 作业4 AOP

一. 单选题(共7题,38.5分) 1 (单选题)下列选项中,用于通知/增强处理的是( )。 A. Joinpoint B. Pointcut C. Aspect D. Advice 正确答案:D 答案解析:在面向切面编程&#xff…...

跨境独立站新手,如何用DuoPlus云手机破局海外社媒引流?

独立站作为电商领域的一个重要组成部分,其发展在最近几年里确实令人瞩目,对于想要进入跨境赛道的新手卖家来说,手上握着有优势的货源,建立小型的DTC独立站确实会比入驻第三方平台具有更大的灵活性。本文将给跨境卖家们总结独立站和…...

【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏

Android 标题栏 参考 Android Studio版本 配置gradle镜像 阿里云 Android使用 android:theme 显示标题栏 添加依赖 dependencies {implementation("androidx.appcompat:appcompat:1.6.1")implementation("com.google.android.material:material:1.9.0")…...

信息安全工程师(83)Windows操作系统安全分析与防护

一、Windows操作系统安全分析 系统漏洞: Windows操作系统由于其复杂性和广泛使用,可能存在一些已知或未知的漏洞。这些漏洞可能会被黑客利用,进行恶意攻击。微软会定期发布系统更新和补丁,以修复这些漏洞,提高系统的安…...

QT Unknown module(s) in QT 以及maintenance tool的更详细用法(qt6.6.0)

不小心接了同事的委托,帮改一个qt的工程代码。然后出事了,那个proj是qt5.9版本的吧,搞到6.6版本的环境中各种问题。至少有3个是这样的: :-1: error: Unknown module(s) in QT: multimedia 直接百度,好像很简单&#x…...

如何在vscode中安装git详细新手教程

一、安装git后点击vscode中的设置 今天教大家如何在VScode中编写代码后提交到git仓库,如果我们不想切换到git的命令行窗口,可以在VScode中配置git,然后就可以很方便快捷的把代码提交到仓库中。 二、在输入框中输入 git.path ,再点…...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

深度学习水论文:mamba+图像增强

🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

日常一水C

多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...