C++ 类和对象篇(零) 面向过程 和 面向对象

news2024/9/24 1:17:13

目录

一、面向过程

二、面向对象

三、两种编程思想的比较

四、C和C++ 


一、面向过程

1.是什么?

        是一种以解决问题的过程为中心的编程思想。即先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。


2.为什么?

        面向过程就纯粹是分析问题,提出解决方案,实现方案的思想,是人面对问题时自然而然的一种思想。


3.怎么用?

        即先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,再用主函数调用这些步骤。


二、面向对象

1.是什么?

        是一种以类和对象为核心,来抽象和描述事物的软件开方法。


2.为什么?

        面向对象的三大特性:封装、继承、多态,提高了代码的安全性、可维护性、可复用性、可扩展性,有利于我们设计出低耦合的系统。


3.怎么用?

        将软件开发过程中涉及的相同事物,通过提取它们相同的属性和行为(函数),将其抽象为;在要描述某个具体的事物时,通过填入具体的数值给类中属性,来定义出具体的对象,然后通过对象的行动来解决问题,对象涉及的行动通过调用类内的函数来完成。

面向对象的三大特性:


三、两种编程思想的比较

1.面向过程

        分析问题得出解决步骤 --> 用函数实现步骤 --> 调用函数解决问题

        分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。


2.面向对象

        分析问题中涉及的事务 --> 根据属性和行为将相同的事务抽象为类 --> 填入具体事务的属性得到对象 --> 通过对象行动(调用类内方法)解决问题

        把问题中涉及的各个对象构建出来,建立对象的目的不是为了完成一个步骤,而是为了描述该对象在整个解决问题的步骤中的行为。对象之间的行为,自然而然的就包括了解决问题的所有过程。

eg. 使用面向过程和面向对象来设计外卖系统:

面向过程:
       关注 点餐、接单、送餐的过程。关注函数的实现。

面向对象:
       关注 用户、商家、骑手。 关注对象的行为,如用户有点餐的行为,商家有接单的行为,骑手有送餐的行为(对象之间的行为,自然而然的就包括了解决问题的所有过程。)


四、C和C++ 

        1. C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

        2. C++是基于面向对象的(它支持面向对象和面向过程混编),关注的是对象,构建出问题中涉及的对象,描述对象在整个解决问题的步骤中的行为。 

 

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

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

相关文章

基于x-scan扫描线的3D模型渲染算法

基于x-scan算法实现的z-buffer染色。c#语言&#xff0c;.net core framework 3.1运行。 模型是读取3D Max的obj模型。 x-scan算法实现&#xff1a; public List<Vertex3> xscan() {List<Vertex3> results new List<Vertex3>();SurfaceFormula formula g…

SAP 自定义BADI增强点

应用场景 标准化代码中预留客制化部分&#xff0c;保证代码主体完整性&#xff0c;可以在预留增强位置预留两种类型的增强处理&#xff0c;其一为标准增强类型的&#xff0c;增强部分代码属于增加的逻辑&#xff0c;其二对于部分多样化的逻辑&#xff0c;使用优先执行默认逻辑&…

Java常用API:Object、Objects、包装类

Object类API toString 返回字符串类型 equals 默认比较的是地址 此时返回的是 false 可以在类中重写equals 方法 比较内容 如果内容一样就返回true clone 不能在测试类中用&#xff0c;必须在创建的类中重写克隆方法 还必须要有接口&#xff0c;说明这个对象有这个能力克隆 …

增量预训练baichuan-13b-chat遇到的那些坑

文章目录 前言资源deepspeed一、训练的坑二、推理的坑三、继续训练的坑总结前言 资源 单机两4090,如图 单卡24G,baichuan-13b-chat单卡推理需要至少26G,因此仅用一张卡,我们是无法加载百川13B的模型,所以,无论是推理还是训练,我们都必须并行! deepspeed 核心思想…

主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》

论文地址:https://arxiv.org/pdf/2305.12972.pdf 代码地址:https://github.com/huawei-noah/VanillaNet 在基础模型的核心是“多样性即不同”,这一哲学在计算机视觉和自然语言处理方面取得了惊人的成功。然而,优化和Transformer模型固有的复杂性带来了挑战,需要转向简洁性…

Python-Python基础综合案例--数据可视化 - 地图可视化

版本说明 当前版本号[20230729]。 版本修改说明20230729初版 目录 文章目录 版本说明目录知识总览图Python基础综合案例--数据可视化 - 地图可视化基础地图使用案例效果视觉映射器 疫情地图-国内疫情地图案例效果实操设置全局配置选项 疫情地图-省级疫情地图案例效果实操 知…

spring拦截器 与统一格式

目录 前言模拟拦截器拦截器的实现原理什么是动态代理? 什么是静态代理静态代理与动态代理的区别两种常用的动态代理方式基于接口的动态代理基于类的动态代理 JDK Proxy 与 CGlib的区别 其他 统⼀访问前缀添加统⼀异常处理统⼀数据返回格式 前言 之前博客讲述了 , 关于SpringA…

Kotlin~Memento备忘录模式

概念 备忘录模式是一种行为型设计模式&#xff0c;用于捕获和存储对象的内部状态&#xff0c;并在需要时将对象恢复到之前的状态。 备忘录模式允许在不暴露对象内部实现细节的情况下&#xff0c;对对象进行状态的保存和恢复。 角色介绍 Originator&#xff1a;原发器&#x…

7.事件类型

7.1鼠标事件 案例-轮播图点击切换 需求&#xff1a;当点击左右的按钮&#xff0c;可以切换轮播图 分析: ①右侧按钮点击&#xff0c;变量&#xff0c;如果大于等于8&#xff0c;则复原0 ②左侧按钮点击&#xff0c;变量–&#xff0c;如果小于0&#xff0c;则复原最后一张 ③鼠…

Zotero ubuntu2023安装 关联 ubuntu文献翻译

一、准备下载的软件&#xff1a; Zotero | Downloads 1. Zotero-6.0.26_linux-x86_64.tar.bz2 下面是插件 zotfile-5.1.2-fx.xpi zotero-pdf-translate.xpi jasminum-v0.2.6.xpi 2.2.5 Tampermonkey 4.11.crx 所准备的文件&#xff0c;都已经在这个链接的压缩包下面 …

【机器学习】Multiple Variable Linear Regression

Multiple Variable Linear Regression 1、问题描述1.1 包含样例的X矩阵1.2 参数向量 w, b 2、多变量的模型预测2.1 逐元素进行预测2.2 向量点积进行预测 3、多变量线性回归模型计算损失4、多变量线性回归模型梯度下降4.1 计算梯度4.2梯度下降 首先&#xff0c;导入所需的库 im…

【Maven】让maven更高效,优化maven构建项目速度

打开idea的setting&#xff0c;找到maven&#xff0c;设置它多线程数&#xff0c;重启后即可&#xff01; 我这里是8&#xff0c;你们可以随便设置。 如下图&#xff1a;

Android 之 使用 Camera 拍照

本节引言 本节给大家带来的是Android中Camera的使用&#xff0c;简单点说就是拍照咯&#xff0c;无非两种&#xff1a; 1.调用系统自带相机拍照&#xff0c;然后获取拍照后的图片 2.要么自己写个拍照页面 本节我们来写两个简单的例子体验下上面的这两种情况~ 1.调用系统自带…

《向量数据库指南》:向量数据库Pinecone如何集成LangChain(二)

目录 创建嵌入 向量数据库 索引 创建向量存储并查询 生成式问答 创建嵌入 使用LangChain的OpenAI嵌入功能构建嵌入非常简单。我们首先需要运行下一个单元格,以添加我们的OpenAI API密钥: Python from getpass import getpassOPENAI_API_KEY = getpass("OpenAI…

CleanMyMac X4.14.1中文版如何清理 Mac系统?CleanMyMac 真的能断网激活吗?

CleanMyMac X4.14.1中文版如何清理 Mac系统&#xff1f;Mac系统在使用过程中都会产生大量系统垃圾&#xff0c;如不需要的系统语言安装包&#xff0c;视频网站缓存文件&#xff0c;mac软件卸载残留的注册表等。 随着时间推移&#xff0c;mac系统垃圾就会越来越多&#xff0c;电…

Spring事务创建与使用

目录 前言Spring中事务的实现声明式事务Transactional 作⽤范围Transactional 参数说明对于事务不回滚的解决方案 前言 在数据库中我们提到了 事务, 事务的定义为, 将一系列操作封装成一个整体去调用 , 要么一起成功, 要么一起失败 Spring中事务的实现 在Spring中事务的操作…

LLaMA:开放和高效的基础语言模型

Part1前言 我们介绍了LLaMA&#xff0c;这是一个参数范围从7B到65B的基础语言模型集合。我们在数以万亿计的标记上训练我们的模型&#xff0c;并表明有可能完全使用公开可用的数据集来训练最先进的模型&#xff0c;而不必求助于专有的和不可获取的数据集。特别是&#xff0c;L…

快解析内网穿透和nginx端口映射的比较

众所周知&#xff0c;Nginx是一个高性能的Web服务器和反向代理服务器&#xff0c;快解析是一种内网穿透工具&#xff0c;使内部设备可以通过互联网进行访问。虽然它们都涉及到网络连接和端口使用&#xff0c;但在功能和用途上有一些区别。下面就来具体分析一下。 1.Nginx端口映…

Java中的锁分类

Java中有很多的锁&#xff0c;但是并不全指锁&#xff0c;有些指锁的特性&#xff0c;设计&#xff0c;状态。 1.乐观锁 乐观锁认为在更新数据时&#xff0c;乐观的认为并发时并不会出现问题&#xff0c;即不加锁。 2.悲观锁 悲观锁认为多线程对同一个数据进行操作时&#…

数据结构——复杂度

总有一天你要一个人&#xff0c;再暗夜中&#xff0c;向那座桥走过去 文章目录 一、算法的复杂度 考察形式范例 二、算法的时间复杂度 大O的渐进表示法 常见的复杂度对比 例题&#xff1a;消失的数字 题目的三种思路 1.排序遍历 2.减法 3.单身狗思想 三、空间复杂度…