【C++】面向对象编程引入 ③ ( 面向过程编程的结构化程序设计方法 | 结构化程序设计方法概念 / 特点 / 优缺点 | 面向对象编程引入 )

news2024/9/24 17:16:22

文章目录

  • 一、面向过程编程的结构化程序设计方法
    • 1、结构化程序设计方法概念
    • 2、结构化程序设计方法特点
    • 3、结构化程序设计方法优缺点
  • 二、面向对象编程引入





一、面向过程编程的结构化程序设计方法



如果使用 面向过程语言 ( 如 : C 语言 ) , 开发 大型 项目 , 一般使用 结构化程序设计方法 ;


1、结构化程序设计方法概念


结构化程序设计方法 的 设计思路如下 :

  • 自顶向下 , 分而治之 ;
  • 分解功能 , 每个功能都抽象出一个功能模块 ;

如下图所示 , 结构化程序设计方法 , 就是 将一个大问题 , 分解成很多小问题 , 每个小问题都使用独立的 子模块 解决 , 多个 子模块 共同构成一个 大的软件系统 ;

在这里插入图片描述


2、结构化程序设计方法特点


使用上述思路 设计出的 程序结构 有如下特点 :

  • 是一个 树状结构 , 每个叶子节点都是一个基本功能模块 ;
  • 模块之间 功能独立 , 每个模块都相当于一个子程序 , 调用模块就是调用该子程序即可 ;
  • 模块内部只有 顺序 , 选择 , 循环 代码逻辑 ;

3、结构化程序设计方法优缺点


结构化程序设计 的 优点 就是可以 将 复杂庞大的系统 , 拆分成若干子任务 , 方便开发 , 控制 , 维护 ;


结构化程序设计 也有 很多缺点 :

  • 可重用性差 : 每个模块子程序 的 代码 基本不可重用 ;
  • 数据安全性差 : 没有 数据安全 , 开发者可以随意访问任意功能的任意变量 ;
  • 不适合开发图形界面 : 图形界面的事物 使用 过程语言 进行 描述 并 实现 很难 , 即使开发出来也不容易维护 ; 因此很多 C 语言的程序都是命令行程序 , 如 : ffmpeg 等 ;
  • 数据和处理过程分离 : 模块中 数据 ( 变量 ) 和 处理过程 ( 方法 ) 定义在不同的地方 , 给代码维护带来很多麻烦 ;
  • 可维护性差 : 一旦 数据结构发生改变 , 需要 修改大量的代码 ;




二、面向对象编程引入



鉴于 面向过程编程 有上述缺点 , 这里引入 面向对象编程 思想 ;

针对 " 数据和处理过程分离 " 问题 , 面向对象 可以 将 事物的 数据 以及 对数据的处理过程 , 都定义在一个类中 , 将它们封装在一起 ;

针对 " 可重用性差 " 问题 , 面向对象 中 , 对 相同类型的 事物 , 抽象出其共有特点 , 形成一个类 , 该类可以重复使用 , 并可以创建多个该类型事物 ;

针对 " 不适合开发图形界面 " 问题 , 面向过程 中 抽象实现 界面元素很麻烦 , 但是如果使用面向对象 , 可以直接将界面抽象成一个类 , 界面中的按钮等元素也可以抽象成一个类 , 将这些类对象组合在一起 , 就是一个图形界面程序 ;

针对 " 数据安全性差 " 问题 , 面向对象中 , 封装数据和方法时 , 会为每个成员指定可访问的范围 , 如 public , protected , private 等访问范围 , 外部无法访问 private 成员 ;

引入面向对象后 , 极大地提高了 程序的 可维护性 ;

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

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

相关文章

Apache SeaTunnel社区迎来新Committer!

采访&编辑 | Debra Chen 个人简介 姓名:马骋原公司:恒生电子 GitHub ID:rewerma个人擅长研究领域:java中间件、微服务、大数据等 您为社区提交了什么贡献?具体方案可以描述一下吗? 为SeatTunnel提交…

案例21 基于Spring Boot+Redis实现图书信息按书号存储案例

1. 案例需求 基于Spring BootRedis实现图书信息按书号存储和取出功能&#xff0c;数据存储至Redis。 2. 创建Spring Boot项目 创建Spring Boot项目&#xff0c;项目名称为springboot-redis02。 3. 选择依赖 ​ pom.xml文件内容如下所示&#xff1a; <?xml version&quo…

入门Web自动化测试之元素定位的配置管理

之前我们讲过Selenium使用教程&#xff0c;这一篇我们来学习元素定位的配置管理。 目的 Web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架构的自动化来说&#xff0c;B/S有着其无…

AI巨浪下,数据技术如何驱动智能未来?

引言 数据技术是大数据时代的核心驱动力&#xff0c;也是推动各行各业数字化转型和智能化升级的关键因素。随着云计算、人工智能、区块链等新兴技术的不断发展和融合&#xff0c;数据技术也呈现出多模态、混合处理、自动化管理等新的趋势和特点。 8 月 19 日&#xff08;周六&…

UniApp 制作高德地图插件

1、下载Uni插件项目 在Uni官网下载Uni插件项目&#xff0c;并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…

e6zzseo:跨境独立站还能做起来吗?

跨境独立站指的是在其他国家或地区创建和运营自己的电子商务网站。虽然跨境独立站在理论上是可行的&#xff0c;但成功实施和运营它可能面临一些挑战。以下是e6zzseo分析的一些考虑因素和建议&#xff0c;以帮助你更好地评估是否可以成功运营跨境独立站&#xff1a; 做跨境独立…

【0基础入门Python笔记】python 之基础语法、基础数据类型、复合数据类型及基本操作

python 基础&#xff08;一&#xff09; 基础语法规则基础数据类型数字类型&#xff08;Numbers&#xff09;字符串类型&#xff08;String&#xff09;布尔类型&#xff08;Boolean&#xff09; 复合数据类型List&#xff08;列表&#xff09;Tuple&#xff08;元组&#xff0…

excel常见的数学函数篇2

二、数学函数 1、ABS(number)&#xff1a;返回数字的绝对值 语法&#xff1a;ABS(数字)&#xff1b;返回数字的绝对值&#xff1b;若引用单元格&#xff0c;把数字换为单元格地址即可 2、INT(number)&#xff1a;向小取整 语法&#xff1a;INT(数字)&#xff1b;若引用单元格…

自夹持P型屏蔽型碳化硅沟槽型绝缘栅双极晶体管,用于低开通电压和开关损耗

目录 标题&#xff1a;Self-Clamped P-shield SiC Trench IGBT for Low On-State Voltage and Switching LossProceedings of the 35st International Symposium on Power Semiconductor Devices & ICs摘要信息解释研究了什么文章的创新点文章的研究方法文章的结论 标题&am…

为什么要报11月份的PMP考试?一篇说清楚!

各位PMP考生即将迎来8.19的考试&#xff0c;现在心里难免会有点焦虑&#xff0c;相信大家在系统的学习完PMP课程之后&#xff0c;都能顺利上岸&#xff0c;3A通过&#xff01; 另外PMP11月份的考试正在报名当中&#xff01;大家尽量提前报名&#xff0c;给自己留充足的时间备考…

夏威夷等全球多地深陷「末日狂烧」,关键时刻 AI 监测能否跑赢野火?

内容一览&#xff1a;当地时间 8 月 8 日&#xff0c;美国夏威夷州突发野火&#xff0c;当地居民和游客不得不跳入太平洋中躲避火势。截至 8 月 17 日&#xff0c;这场野火已经造成110 人死亡&#xff0c;超过 1000人失踪。与此同时&#xff0c;美国、加拿大、法国等地也正遭遇…

GPU短缺:人工智能行业的可持续发展问题

原创 | 文 BFT机器人 2023年8月&#xff0c;人工智能似乎会受到GPU供应的瓶颈。 “人工智能热潮被低估的一个原因是GPU/TPU短缺。这种短缺导致了产品推出和模型培训的各种限制&#xff0c;但这些都不明显。相反&#xff0c;我们看到的是英伟达的股价飙升。一旦供给满足需求&am…

c语言——字符转ASCLL码

//字符转ASCLL码 #include<stdio.h> #include<stdlib.h> int main() {char c;printf("输入字符&#xff1a;");scanf("%c",&c);printf(" %c 的ASCLL为: %d \n",c,c);system("pause");return 0;}

修改文件内容

修改文件内容 按照下方所述&#xff0c;创建一个名为 /home/curtis/ansible/issue.yml 的 playbook &#xff1a; 该 playbook 将在所有清单主机上运行 该 playbook 会将 /etc/issue 的内容替换为下方所示的一行文本&#xff1a; 在 dev 主机组中的主机上&#xff0c;这行文本…

通过模拟考试系统培养学生应对压力的能力

随着现代社会竞争的加剧&#xff0c;学生面临着越来越大的考试压力。为了培养学生应对压力的能力&#xff0c;许多学校开始采用模拟考试系统。模拟考试系统通过模拟真实考试环境和考试内容&#xff0c;帮助学生逐渐适应考试压力&#xff0c;并提供相应的培训和指导。 模拟考试…

pytorch2.0.1 安装部署(cpu+gpu) linux+windows

官网打开可能较慢&#xff0c;耐心等待 pytorch官网 以下操作在默认网络环境即可使用 一、说明和前期准备 1.pytorch是一个和tensorflow类似的框架 如果需要安装tensorflow&#xff0c;可以参考&#xff1a; tensorflow 1&#xff0c;2 cpugpu&#xff08;windowslinux&…

演讲与口才能力培训的实践案例分析

演讲与口才能力培训的实践案例分析 摘要&#xff1a; 演讲与口才能力是一项重要的沟通技巧&#xff0c;对于个人和职业发展都具有重要意义。本文通过案例分析的方式&#xff0c;探讨了演讲与口才能力培训的实践&#xff0c;以及培训对于个人能力提升的影响。通过对不同案例的研…

12、缓存双写一致性之更新策略探讨

缓存双写一致性之更新策略探讨 1、 面试题 只要双写&#xff0c;就一定会有数据一致性问题&#xff0c;那么如何解决一致性问题&#xff1f; 双写一致性&#xff0c;你先动缓存redis还是数据库&#xff1f;为什么&#xff1f; 延时双删做过吗&#xff1f;会有哪些问题&#xf…

《算法竞赛·快冲300题》每日一题:“立方体表面距离”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 立…

作为spring框架的另外的重点AOP的介绍(详细篇)

一.Aop介绍&#xff0c;以及作用范围&#xff0c;和其专业名词的解释 1.什么是Aop&#xff1f; Java Spring中的AOP&#xff08;面向切面编程&#xff09;是一种编程范式&#xff0c;用于通过将与核心业务逻辑无关的横切关注点&#xff08;如日志记录、性能统计、安全控制等&…