【编程概念基础知识】
、编程基础
一、面向对象的三大特性
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 答案解析:在面向切面编程ÿ…...

跨境独立站新手,如何用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 ,再点…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...