【编程概念基础知识】

、编程基础

一、面向对象的三大特性

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、她们二者的关系

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDM扩展添加到Edge浏览器

IDM扩展添加到Edge浏览器 一般情况下,当安装IDM软件后,该软件将会自动将IDM Integration Module浏览器扩展安装到Edge浏览器上,但在某些情况下,需要我们手动安装,以下为手动安装步骤 手动安装IDM扩展到Edge浏览器 打…

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功: 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

深入探索Waymo自动驾驶技术发展:从DARPA挑战赛到第五代系统的突破

引言 自动驾驶技术正引领着未来出行方式的革命,而Waymo作为全球自动驾驶领域的先锋,始终走在技术发展的最前沿。本文基于Waymo联席CEO德米特里多尔戈夫(Dmitri Dolgov)在No Priors节目中的访谈,全面介绍Waymo的技术发展…

鸿蒙移动应用开发-------初始arkts

一. 什么是arkts ArkTS是HarmonyOS优选的主力应用开发语言。 ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和…

c++ 输入三条边 绘制三角形

安装图形库 参考 #include "graphics.h" // 就是需要引用这个图形库 #include <conio.h> #include <stdio.h> #include <math.h>// 判断是否可以构成三角形 int isTriangle(int a, int b, int c) {return (a b > c) && (a c >…

A20红色革命文物征集管理系统

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

Logrus入门

Logrus入门 1. 下载 go get github.com/sirupsen/logrus2. logrus常用方法 logrus.Debugln("Debugln") logrus.Infoln("Infoln") logrus.Warnln("Warnln") logrus.Errorln("Errorln") logrus.Println("Println")// 输出如…

pyspark入门基础详细讲解

1.前言介绍 学习目标&#xff1a;了解什么是Speak、PySpark&#xff0c;了解为什么学习PySpark&#xff0c;了解课程是如何和大数据开发方向进行衔接 使用pyspark库所写出来的代码&#xff0c;既可以在电脑上简单运行&#xff0c;进行数据分析处理&#xff0c;又可以把代码无缝…

权限管理练习2

1.在/home中创建一个名为 file1.txt 的文件&#xff0c;并设置权限为&#xff1a;所有者和组成员可以读写&#xff0c;但其他人只能读。 所有者和组成员可以读写 u rw- g rw- o r-- 2.在 /home 目录下创建一个名为 shared 的子目录&#xff0c;使得所有用户都可以进入&#…

面试经典 150 题:121,125

121. 买卖股票的最佳时机 【参考代码】 动态规划解决 class Solution { public:int maxProfit(vector<int>& prices) {int size prices.size();int min_price 99999, max_profit 0;for(int i0; i<size; i){if(prices[i] < min_price){min_price prices[i…

数据集划分

1、 sklearn玩具数据集介绍 数据量小&#xff0c;数据在sklearn库的本地&#xff0c;只要安装了sklearn&#xff0c;不用上网就可以获取 2 sklearn现实世界数据集介绍 数据量大&#xff0c;数据只能通过网络获取&#xff08;科学上网&#xff09; 3 sklearn加载玩具数据集 示…

图形几何之美系列:仿射变换矩阵之先转后偏

“在几何计算、图形渲染、动画、游戏开发等领域&#xff0c;常需要进行元素的平移、旋转、缩放等操作&#xff0c;一种广泛应用且简便的方法是使用仿射变换进行处理。相关的概念还有欧拉角、四元数等&#xff0c;四元数在图形学中主要用于解决旋转问题&#xff0c;特别是在三维…

刷题强训(day05) -- 游游的you、腐烂的苹果、孩子们的游戏(圆圈中最后剩下的数)

目录 1、游游的you 1.1 题目 1.2 思路 1.3 代码实现 2、腐烂的苹果 2.1 题目 2.2 思路 2.3 代码实现 3、孩子们的游戏(圆圈中最后剩下的数) 3.1 题目 3.2 思路 3.3 代码实现 3.3.1 环形链表 ​编辑3.3.2 动态规划 ​编辑 1、游游的you 1.1 题目 1.2 思路 根据题…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…

并查集算法实现

模板 模板分为三大部分 初始化查询i的祖先合并i j(使他们祖先成为一个人) // 1 初始化 void init(int n) {for (int i 1; i < n; i)fa[i] i;//将该数的父节点定义为该数 }// 2 查询i的祖先 int find(int i) {if (i fa[i])return i;else{![查](../pic/并查集.png)fa[i]…

(实战)WebApi第13讲:怎么把不同表里的东西,包括同一个表里面不同的列设置成不同的实体,所有的给整合到一起?【前端+后端】、前端中点击标签后在界面中显示

一、实现全局跨域&#xff1a;新建一个Controller&#xff0c;其它的controller都继承它 1、新建BaseController 2、在后端配置&#xff0c;此处省略【详情见第12讲四、3、】 3、其它的控制器继承BaseController&#xff0c;这个时候就能够完成全局的跨域 【向后台传cookie和…

【计算机基础——数据结构——红黑树】

1. 红黑树&#xff08;RBTree&#xff09; 为什么HashMap不直接使用AVL树&#xff0c;而是选择了红黑树呢&#xff1f; 由于AVL树必须保证左右子树平衡&#xff0c;Max(最大树高-最小树高) < 1&#xff0c;所以在插入的时候很容易出现不平衡的情况&#xff0c;一旦这样&…

【MatLab手记】 --从0到了解超超超详过程!!!

文章目录 MatLab笔记一、命令行窗口二、变量命名规则三、数据类型1. 数字2. 字符与字符串3. 矩阵3.1 矩阵创建3.2 矩阵的修改和删除3.3 矩阵的拼接与重构重排3.4 矩阵的运算方法3.5 矩阵的下标 4. 元胞数组&#xff08;类似数据容器&#xff09;5. 结构体 四、逻辑与流程控制五…

Qt_day5_常用类

常用类 目录 1. QString 字符串类&#xff08;掌握&#xff09; 2. 容器类&#xff08;掌握&#xff09; 2.1 顺序容器QList 2.2 关联容器QMap 3. 几种Qt数据类型&#xff08;熟悉&#xff09; 3.1 跨平台数据类型 3.2 QVariant 统一数据类型 3.3 QStringList 字符串列表 4. QD…

【THM】linux取证 DisGruntled

目录 0x00 房间介绍 0x01 连接并简单排查 0x02 让我们看看做没做坏事 0x03 炸弹已埋下。但何时何地&#xff1f; 0x04 收尾 0x05 结论 0x00 房间介绍 嘿&#xff0c;孩子&#xff01;太好了&#xff0c;你来了&#xff01; 不知道您是否看过这则新闻&#xff0c;我…