当前位置: 首页 > 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 ,再点…...

JVM垃圾回收详解二(重点)

死亡对象判断方法 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。 引用计数法 给对象中添加一个引用计数器: 每当有一个地方引用它,计数器就加 1…...

VLAN 高级技术实验

目录 一、实验背景 二、实验任务 三、实验步骤 四、实验总结 一、实验背景 假如你是公司的网络管理员,为了节省内网的IP地址空间,你决定在内网部署VLAN聚合,同时为了限制不同业务之间的访问,决定同时部署MUX VLAN。 二、实验…...

windowsC#-创建和引发异常

异常用于指示在运行程序时发生了错误。 此时将创建一个描述错误的异常对象,然后使用 throw 语句或表达式引发。 然后,运行时搜索最兼容的异常处理程序。 当存在下列一种或多种情况时,程序员应引发异常: 1. 方法无法完成其定义的…...

python爬虫案例——请求的网页源码被加密,解密方法全过程(19)

文章目录 1、任务目标2、网页分析3、代码编写1、任务目标 目标网站:https://jzsc.mohurd.gov.cn/data/company,该网站的网页源码被加密了,用于本文测验 要求:解密该网站的网页源码,请求网站并返回解密后的明文数据,网页内容如下: 2、网页分析 进入网站,打开开发者模式,…...

详解广告联盟

某种程度上,动荡的程度甚于以往。产业链中快速挤进了众多不曾有过的角色,产业逻辑被完全颠覆。巨大的变化在几年间迅速产生,源头是快速发展的互联网和科技。 这个行业走到了十字路口,身处其中的大多数人感到乐观,但同…...

Getting accurate time estimates from your tea(从您的团队获得准确的时间估计)

Hi again. 嗨了。 Ready to get back into it? 准备好重新开始了吗? Let’s go. Time estimation, 我们走吧。时间估计, effort estimation, 努力估计, and capacity planning are all helpful techniques for creating your project schedule. 容量规划都是创建项…...

攻防世界35-easyupload-CTFWeb

攻防世界35-easyupload-CTFWeb 通过各种上传发现&#xff0c;过滤了php后缀和内容中有php的文件 有这几种方式上传一句话木马 <script language"php">eval($_POST[1]);</script> <?php eval($_POST[cmd]);?> <? eval($_POST[cmd]);?>…...

在Mysql中,如何定位慢查询

参考回答&#xff1a;之前我们有个项目做压测的时候有的接口非常的慢&#xff0c;接口的响应时间超过了2秒以上&#xff0c;因为在MySOL中也提供了慢日志查询的功能&#xff0c;可以在MySOL的系统配置文件中开启这个慢日志的功能&#xff0c;并且也可以设置SOL执行超过多少时间…...

CSS教程(三)- CSS 三大特性

1. 层叠性 介绍 多组CSS样式共同作用于一个元素&#xff0c;就会出现 覆盖&#xff08;层叠&#xff09; 另一个冲突的样式。 层叠原则 样式冲突&#xff1a;遵循就近原则&#xff08;哪个样式离结构近&#xff0c;就执行哪个样式&#xff09; 样式不冲突&#xff0c;就不会重…...

如何保证Redis与MySQL双写一致性

什么是双写一致性问题&#xff1f; 双写一致性主要指在一个数据同时存在于缓存&#xff08;如Redis&#xff09;和持久化存储&#xff08;如MySQL&#xff09;的情况下&#xff0c;任何一方的数据更新都必须确保另一方数据的同步更新&#xff0c;以保持双方数据的一致状态。这一…...

淄博企业网站建设公司/微信如何引流推广精准加人

常用的软件自动化测试工具有哪些&#xff1f;对于企业测试人员来说&#xff0c;工欲善其事必先利其器&#xff0c;了解软件测试工具能够更好的开展测试工作&#xff0c;为整体软件测试方案形成打下良好的基础。卓码软件测评小编整理了关于软件手工测试与自动化测试应用场景差异…...

电子商务网站后台模板/灰色seo关键词排名

声明&#xff1a; 仅个人小记 前言&#xff1a; 主要是引入一个新的看待矩阵乘法的角度觉得这个挺重要的&#xff0c;故做记录 列向量角度&#xff0c;矩阵左乘 AB C 结合上图&#xff0c;我们可以知道&#xff0c;结果矩阵C中的第 j 列完全可以表示为矩阵A中列向量的线性组合…...

修改wordpress登录密码忘记/建网站要多少钱

把 "Hello World!" 转换为十六进制值&#xff1a;<?php $str bin2hex("Hello World!");echo($str);?>定义和用法bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。语法bin2hex(string)参数  描述…...

武汉手机网站制作公司/宁波seo外包

C11 long long超长整形详解 C 11 标准中&#xff0c;基于整数大小的考虑&#xff0c;共提供了如表 1 所示的这些数据类型。与此同时&#xff0c;标准中还明确限定了各个数据类型最少占用的位数。 表 1 C11标准中所有的整形数据类型 整数类型等价类型C11标准规定占用最少位数…...

厦门网站建设价格/网站建设公司大型

一、安装telnet客户端 sudo apt-get install telnet 二、安装telnet服务端 sudo apt-get install telnetd 三、安装网络守护进程 sudo apt-get install openbsd-inetd 四、安装xinetd sudo apt-get install xinetd 五、重启telnet服务 sudo /etc/init.d/…...

深圳做商城网站/广告接单平台app

这个问题百度了很多次&#xff0c;为了解决走了完了&#xff0c;也让我更了解VS的Release和Debug。VS的2015的Debug需要在属性-链接器-输入-附加依赖器里面写的是python37_d.lib,而Relase里写的是python37.lib。这也就是说明报错为无法打开python37.lib的话就是Relase下找不到这…...