浅谈编程中的面向对象和面向过程

简介: 浅谈编程中的面向对象和面向过程

浅谈编程中的面向对象和面向过程

面向过程就是分析出解决问题所需要的步骤,就像我们做数学题一样,分析出解题的步骤,然后把这些步骤一步一步的去实现;面向对象是把大的问题分解成多个模块,每个模块就是一个对象,每个对象负责一部分功能,通过对这些模块的组合达到解决问题的结果。


       做数学题时,我们需要知道第一步的结果,才能进行第二步操作,然后一步一步的走下去,直到最后解决问题,得出答案,这是典型的面向过程的思想。在借用博客中的一个例子:我们要设计一个五子棋的游戏,面向过程的设计思路如下所示:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。


       如果用面向对象的思想来设计这个游戏,那么设计可以分为三部分:1、黑白双方,这两方的行为是一模一样的;2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。



优点与缺点

接着做题的例子,讲述一下面向过程的思想,例如高考中的物理大题,一版情况是第二问使用第一问的答案,第三问使用第二问的答案。那么解决一个大题的步骤如下所示:先解决第一个小问题,接着解决第二小问,然后解决第三小问,最后这个大题解决。不幸的是第一问写错了,然后第二问和第三问都错了,这时候要改错的话,需要把整个答题重新写一遍。这也就是面向过程的弊端,步骤相互之间的关联性太强(耦合度太高),牵一发而动全身。

还是做高考题的例子介绍面向对象的思想,物理的解答题有三道大题,解答题就像一个问题,每道大题就像一个对象,哪道题做错了,只修改哪一道题就好了,和其他题的关联性不强,不会产生致命性的影响。

       这只是面向对象相对于面向过程的优点,面向过程也不是没有优点,面向对象编程有三大特点,封装、继承和多态。经过这一顿骚操作的包装,性能难免有所损失。



面向对象

  • 优点:代码灵活,容易理解、代码复用性、扩展性好,由于面向对象有封装、可以设计出低耦合的系统,
  • 缺点:性能比面向过程低
  • 高级语言基本上都是面向对象的编程语言,如Java

面向过程

  • 优点:性能比面向对象好,内存开销少,单片机用的比较多
  • 缺点:耦合性高,不利于维护,扩展性,复用性没有面向对象好
  • C语言就是典型的面向过程的语言
目录
相关文章
|
测试技术 数据安全/隐私保护
软件测试制度-新手小白如何制定测试管理工作规范?
软件测试制度-新手小白如何制定测试管理工作规范?
554 1
|
11月前
|
机器学习/深度学习 存储 算法
强化学习:蒙特卡罗求解最优状态价值函数——手把手教你入门强化学习(五)
本文介绍了强化学习中的蒙特卡罗算法,包括其基本概念、两种估值方法(首次访问蒙特卡罗与每次访问蒙特卡罗)及增量平均优化方式。蒙特卡罗法是一种基于完整回合采样的无模型学习方法,通过统计经验回报的平均值估计状态或动作价值函数。文章详细讲解了算法流程,并指出其初期方差较大、估值不稳定等缺点。最后对比动态规划,说明了蒙特卡罗法在强化学习中的应用价值。适合初学者理解蒙特卡罗算法的核心思想与实现步骤。
700 4
|
监控 安全 网络协议
|
机器学习/深度学习 人工智能 开发框架
解锁AI新纪元:LangChain保姆级RAG实战,助你抢占大模型发展趋势红利,共赴智能未来之旅!
【10月更文挑战第4天】本文详细介绍检索增强生成(RAG)技术的发展趋势及其在大型语言模型(LLM)中的应用优势,如知识丰富性、上下文理解和可解释性。通过LangChain框架进行实战演练,演示从知识库加载、文档分割、向量化到构建检索器的全过程,并提供示例代码。掌握RAG技术有助于企业在问答系统、文本生成等领域把握大模型的红利期,应对检索效率和模型融合等挑战。
828 14
|
Java Nacos 数据库
nacos源码打包及相关配置
nacos源码打包及相关配置
735 4
|
弹性计算
新手必看,阿里云国际购买服务器带宽如何选择
新手必看,阿里云国际购买服务器带宽如何选择
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应神经网络
【6月更文挑战第24天】在深度学习的浪潮中,自适应神经网络以其独特的灵活性和高效性引起了研究者的广泛关注。本文将深入探讨自适应神经网络的设计原理、优化算法以及在不同领域的应用案例,揭示其在处理复杂数据模式时的优势与挑战。
|
JavaScript 前端开发
Vue,如何引入样式文件
Vue,如何引入样式文件
halcon联合c#、WPF学习笔记三(dispatcherTimer实时相机显示)
halcon联合c#、WPF学习笔记三(dispatcherTimer实时相机显示)
865 2
halcon联合c#、WPF学习笔记三(dispatcherTimer实时相机显示)

热门文章

最新文章