C++ 类和对象篇(零) 面向过程 和 面向对象
目录
一、面向过程
二、面向对象
三、两种编程思想的比较
四、C和C++
一、面向过程
1.是什么?
是一种以解决问题的过程为中心的编程思想。即先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。
2.为什么?
面向过程就纯粹是分析问题,提出解决方案,实现方案的思想,是人面对问题时自然而然的一种思想。
3.怎么用?
即先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,再用主函数调用这些步骤。
二、面向对象
1.是什么?
是一种以类和对象为核心,来抽象和描述事物的软件开方法。
2.为什么?
面向对象的三大特性:封装、继承、多态,提高了代码的安全性、可维护性、可复用性、可扩展性,有利于我们设计出低耦合的系统。
3.怎么用?
将软件开发过程中涉及的相同事物,通过提取它们相同的属性和行为(函数),将其抽象为类;在要描述某个具体的事物时,通过填入具体的数值给类中属性,来定义出具体的对象,然后通过对象的行动来解决问题,对象涉及的行动通过调用类内的函数来完成。
面向对象的三大特性:
三、两种编程思想的比较
1.面向过程
分析问题得出解决步骤 --> 用函数实现步骤 --> 调用函数解决问题
分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
2.面向对象
分析问题中涉及的事务 --> 根据属性和行为将相同的事务抽象为类 --> 填入具体事务的属性得到对象 --> 通过对象行动(调用类内方法)解决问题
把问题中涉及的各个对象构建出来,建立对象的目的不是为了完成一个步骤,而是为了描述该对象在整个解决问题的步骤中的行为。对象之间的行为,自然而然的就包括了解决问题的所有过程。
eg. 使用面向过程和面向对象来设计外卖系统:
面向过程:
关注 点餐、接单、送餐的过程。关注函数的实现。面向对象:
关注 用户、商家、骑手。 关注对象的行为,如用户有点餐的行为,商家有接单的行为,骑手有送餐的行为(对象之间的行为,自然而然的就包括了解决问题的所有过程。)
四、C和C++
1. C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
2. C++是基于面向对象的(它支持面向对象和面向过程混编),关注的是对象,构建出问题中涉及的对象,描述对象在整个解决问题的步骤中的行为。
相关文章:
C++ 类和对象篇(零) 面向过程 和 面向对象
目录 一、面向过程 二、面向对象 三、两种编程思想的比较 四、C和C 一、面向过程 1.是什么? 是一种以解决问题的过程为中心的编程思想。即先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。 2.为什么? 面向过程就纯粹是分析…...
列表list
列表 列表是将数据组织在一个一维集合中,从这个组织方式来看,它与c()函数是相似的。但是,列表并不是将具体的值组织起来,而是组织R对象,如列表、数据框、矩阵、函数、向量等等。 列表非常好用,因为列表可…...
gcc编译出现bar causes a section type conflict with foo问题解决
这里bar是变量名,foo是函数名。 如下是charGPT给出的答复,结论是:bar和foo放在同一个section内,但是它们的类型不同,函数应该放置在一个可执行(executable)类型的section,而变量应该…...
12. Mybatis 多表查询 动态 SQL
目录 1. 数据库字段和 Java 对象不一致 2. 多表查询 3. 动态 SQL 使用 4. if 标签 5. trim 标签 6. where 标签 7. set 标签 8. foreach 标签 9. 通过注解实现 9.1 查找所有数据 9.2 通过 id 查找 1. 数据库字段和 Java 对象不一致 我们先来看一下数据库中的数…...
操作系统专栏1-内存管理from 小林coding
操作系统专栏1-内存管理 虚拟地址内存管理方案分段分页页表单级页表多级页表TLB 段页式内存管理Linux内存管理 malloc工作方式操作系统内存回收回收的内存种类 预读失败和缓存污染问题预读机制预读机制失效解决方案缓存污染 内核对虚拟内存的表示内核对内核空间的表示直接映射区…...
SpringCloud远程服务调用
下面介绍在SpringCloud中如何使用openfeign实现远程服务调用 1.在字典服务中有这么2个接口 Api(tags "数据字典接口") RestController RequestMapping("/admin/cmn/dict/") CrossOrigin public class DictController {Autowiredprivate DictService dic…...
Arcgis通过模型构建器计算几何坐标
模型 模型中,先添加字段,再计算字段 计算字段 模型的计算字段中,表达式是类似这样写的,其中Xmin表示X坐标,Ymin表示Y坐标 !Shape.extent.Xmin!...
java设计模式-工厂模式(下)
接java设计模式-工厂模式(上) 抽象工厂模式 针对耳机的生产需求,我们可以知道,刚才的工厂已经不满足了,因为只是生产一类产品-手机,但是现在我们需要的工厂类是要生产一个产品族(手机和耳机&a…...
深蓝学院C++基础与深度解析笔记 第13章 模板
1. 函数模板 ● 使用 template 关键字引入模板: template<typename T> //声明:T模板形参void fun(T); // T 函数形参template<typename T> //定义void fun(T) {...}– 函数模板不是函数 –…...
装饰器模式——扩展系统功能
1、简介 1.1、概述 对新房进行装修并没有改变房屋用于居住的本质,但它可以让房子变得更漂亮、更温馨、更实用、更能满足居家的需求。在软件设计中,也有一种类似新房装修的技术可以对已有对象(新房)的功能进行扩展(装…...
无涯教程-jQuery - jQuery.get( url, data, callback, type )方法函数
jQuery.get(url,[data],[callback],[type])方法使用GET HTTP请求从服务器加载数据。 该方法返回XMLHttpRequest对象。 jQuery.get( url, [data], [callback], [type] ) - 语法 $.get( url, [data], [callback], [type] ) 这是此方法使用的…...
【Vue3】递归组件
1. 递归组件mock数据 App.vue <template><div><Tree :data"data"></Tree></div> </template><script setup lang"ts"> import { reactive } from vue; import Tree from ./components/Tree.vue; interface Tr…...
【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织
前言 在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们…...
matlab进阶:求解在约束条件下的多元目标函数最值(fmincon函数详解)
🌅*🔹** φ(゜▽゜*)♪ **🔹*🌅 欢迎来到馒头侠的博客,该类目主要讲数学建模的知识,大家一起学习,联系最后的横幅! 喜欢的朋友可以关注下,私信下次更新不迷路࿰…...
Kotlin知识点
Kotlin 是 Google 推荐的用于创建新 Android 应用的语言。使用 Kotlin,可以花更短的时间编写出更好的 Android 应用。 基础 Kotlin 程序必须具有主函数,这是 Kotlin 编译器在代码中开始编译的特定位置。主函数是程序的入口点,或者说是起点。…...
亚马逊云科技联合霞光社发布《2013~2023中国企业全球化发展报告》
中国企业正处于全球聚光灯下。当企业全球化成为时代发展下的必然趋势,出海也从“可选项”变为“必选项”。中国急速扩大的经济规模,不断升级的研发和制造能力,都在推动中国企业不断拓宽在全球各行业的疆域。 过去十年,是中国企业…...
【解析excel】利用easyexcel解析excel
【解析excel】利用easyexcel解析excel POM监听类工具类测试类部分测试结果备注其他 EasyExcel Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&…...
JQuery操作单选按钮Radio和复选框checkbox
获取选中值: $(input:radio:checked).val();$("input[typeradio]:checked").val();$("input[namerd]:checked").val();$("input[idrand_question]:checked").val();设置第一个Radio为选中值: $(input:radio:…...
7.28 作业 QT
手动完成服务器的实现,并具体程序要注释清楚: widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类 #include <QMessageBox> //对话框类 #include …...
HTML <pre> 标签
定义和用法 pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。 <pre> 标签的一个常见应用就是用来表示计算机的源代码。 可以导致段落断开的标签(例如标题、"><p> 和 标签"><a…...
Blender 3MF插件:实现CAD到3D打印的无缝转换完整指南
Blender 3MF插件:实现CAD到3D打印的无缝转换完整指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在3D打印和数字制造领域,3D Manufacturing F…...
3步搞定显卡风扇异常:用FanControl彻底解决NVIDIA风扇噪音和转速问题
3步搞定显卡风扇异常:用FanControl彻底解决NVIDIA风扇噪音和转速问题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitH…...
DeepSeek LeetCode 2488. 统计中位数为 K 的子数组 public int countSubarrays(int[] nums, int k)
这道题要求统计所有子数组中,中位数等于 k 的子数组个数。 核心思路: 先找到 k 在数组中的位置 pos中位数定义(对于奇数长度):排序后中间的数 k等价转换:对于子数组,比 k 小的数个数 比 k 大的…...
Translumo:实时屏幕翻译工具的完整实战指南
Translumo:实时屏幕翻译工具的完整实战指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否在玩外语游戏…...
夏天来了TEMU爆单指南:我用凌风工具箱“标签模板“搞定夏季爆款
嘿,我是小彭,一个在跨境电商圈摸爬滚打的老玩家🙋♂️。这周在朋友圈晒出单周GMV破300万的成绩单,评论区直接炸了:"你这波操作可以啊""啥时候开个课教教我们"。说实话,真没什么高深技巧…...
DeepSeek V2安全对齐能力深度拆解(含对抗攻击测试报告+合规审计清单)
更多请点击: https://codechina.net 第一章:DeepSeek V2安全对齐能力深度拆解(含对抗攻击测试报告合规审计清单) DeepSeek V2 在设计阶段即嵌入多层安全对齐机制,涵盖输入过滤、策略蒸馏、响应重加权与后验校验四大核…...
终极iOS位置模拟解决方案:iFakeLocation跨平台免费使用指南
终极iOS位置模拟解决方案:iFakeLocation跨平台免费使用指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation 你是否曾想过将iPhone定位到世界任…...
DownGit终极指南:3分钟掌握GitHub精准下载技巧
DownGit终极指南:3分钟掌握GitHub精准下载技巧 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 你是否曾经在GitHub上找到心仪的代码片段,却不得不下载整个庞大的项目仓库?或…...
如何让老款Mac焕发新生:终极硬件限制破解与macOS兼容工具指南
如何让老款Mac焕发新生:终极硬件限制破解与macOS兼容工具指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为苹果官方停止支持的老款Mac无…...
G-Helper完整指南:轻量级华硕笔记本控制工具终极教程
G-Helper完整指南:轻量级华硕笔记本控制工具终极教程 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exp…...
