面向对象和面向过程的区别理解_c是面向对象还是面向过程

面向对象和面向过程的区别理解_c是面向对象还是面向过程一、面向对象和面向过程面向对象面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操作是分离的,函数本身只

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、面向对象和面向过程

面向对象

  • 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现

  • 面向过程编程,数据和对数据的操作是分离的函数本身只处理数据,并没有储存的功能

  • 按照这样的思路设计的程序,当一个公共变量同时被多个函数操作的时候,很有可能因为一个函数的出错而导致整个程序的出错。

面向对象和面向过程的区别理解_c是面向对象还是面向过程

面向对象

  • 面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为

  • 面向对象编程,数据和对数据的操作是绑定在一起的数据可以存储在对象中

  • 面向对象的特点是:封装、继承、多态

    为了尽可能的做到代码复用,使用封装隐藏实现细节,使得代码模块化,使用继承可以扩展已存在的类;

    而为了实现接口复用,使用多态来使用基类的衍生方法

面向对象和面向过程的区别理解_c是面向对象还是面向过程

二、举个例子

如果我要设计一个五子棋的小程序,面向过程的设计思路就是五子棋的下棋步骤:

1、开始游戏
2、黑子先走
3、绘制画面
4、判断输赢
5、轮到白子
6、绘制画面
7、判断输赢
8、返回步骤2
9、输出最后结果

把上面每个步骤用分别的函数来实现,问题就解决了。

面向对象把下棋看成多个对象的共同行为:

1、玩家对象,也就是黑白双方
2、棋盘对象,负责绘制画面
3、规则对象,负责判定诸如犯规、输赢等。

玩家对象负责接受用户输入,棋盘对象棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用规则对象来对棋局进行判定。

对于面向对象,功能上的统一保证了设计的可扩展性:

  • 比如要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。
  • 再比如我要把这个五子棋游戏改为围棋游戏,如果是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?而下棋的大致步骤从面向对象的角度来看没有任何变化。

三、总结一下

面向过程就是把问题拆分为多个步骤,按步骤实现程序功能,而面向对象就是把问题的解决步骤描述为对象的行为;

面向过程数据是被所有函数共享的,面向对象数据可以是私有的,只被对象里的函数使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170825.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月16日 下午8:46
下一篇 2022年8月16日 下午8:46


相关推荐

  • wd移动硬盘测试软件,西数硬盘修复工具(WD HDD Repair Tools)「建议收藏」

    WDHDDRepairTools是西部数据(WD)官方发布的一款西数硬盘检测修复工具,它可显示寄存器状态,支持WD-L/WD-ROYL板,能进行硬盘软复位,可识别硬盘,查看或清除SMART,起转电机及直接复位,加载瞬时及永久覆盖,操作磁道、FLASH及模块。改变内存中的磁头位置,编辑列表,设置最高容量及目标容量。格式化硬盘/保留区,校验伺服系统及磁头。清除异常中断代码及软件错误数。重新构…

    2022年4月16日
    897
  • Java学习之Thymeleaf使用

    Java学习之Thymeleaf使用0x00前言为了后续的代码审计一些常用的框架和技术都是有必要了解一下,在此重拾SpringBoot等开发知识内容。0x01Thymeleaf简介Thy

    2021年12月12日
    63
  • msfconsole攻击工具_服务器console接口是干嘛的

    msfconsole攻击工具_服务器console接口是干嘛的?Msfconsole工具概括:???Msfconsole简称(msf)是一款常用的渗透测试工具,包含了常见的漏洞利用模块和生成各种木马,方便于安全测试人员的使用.(1)进行端口扫描.(2)进行服务的扫描.(3)扫描3306(Mysql)端口的弱口令.(4)在msf模块里也可以使用nmap进行扫描.(5)扫描了服务器是用WinXP,然后对服务器进行渗透测试.

    2025年9月28日
    5
  • 倘若对一个人好是一种错误_gta5出现了一个错误

    倘若对一个人好是一种错误_gta5出现了一个错误在一个项目中,我把167行的写成了,竟然报了如下错误:Parseerror:syntaxerror,unexpected$endinE:\wamp\www\tmlog\index.phponline186感觉好恶心,以后注意点。

    2022年10月19日
    5
  • 【矩阵学习】Jacobian矩阵和Hessian矩阵

    【矩阵学习】Jacobian矩阵和Hessian矩阵矩阵学习 Jacobian 矩阵和 Hessian 矩阵 Jacobian 矩阵 Jacobian 行列式功能快捷键合理的创建标题 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右 SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的 KaTeX 数学公式新的甘特图功能 丰富你的文章 UML 图表 FLowchar

    2026年3月18日
    2
  • maskrcnn训练步骤_神经网络如何预测

    maskrcnn训练步骤_神经网络如何预测今天我们来说一下,如何使用自己训练出来的Mask_RCNN模型,或是官方自己的模型权重来进行预测:该Mask_RCNN版本基于:Python3,Keras,TensorFlow,我使用的具体版本为:Python3.6.3TensorFlow1.7Keras2.1.5tensorflow安装:https://blog.csdn.net/qq_15969343/article/details/7………

    2026年4月15日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号