您现在的位置是:首页 >
当前栏目
面向对象和面向过程的区别理解_c是面向对象还是面向过程
区别 理解 过程 还是 面向对象 面向
2023-06-13 09:11:02 时间
大家好,又见面了,我是你们的朋友全栈君。
一、面向对象和面向过程
面向对象
- 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。
- 面向过程编程,数据和对数据的操作是分离的,函数本身只处理数据,并没有储存的功能
- 按照这样的思路设计的程序,当一个公共变量同时被多个函数操作的时候,很有可能因为一个函数的出错而导致整个程序的出错。
面向对象
- 面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
- 面向对象编程,数据和对数据的操作是绑定在一起的,数据可以存储在对象中
- 面向对象的特点是:封装、继承、多态 为了尽可能的做到代码复用,使用封装隐藏实现细节,使得代码模块化,使用继承可以扩展已存在的类; 而为了实现接口复用,使用多态来使用基类的衍生方法
二、举个例子
如果我要设计一个五子棋的小程序,面向过程的设计思路就是五子棋的下棋步骤:
1、开始游戏
2、黑子先走
3、绘制画面
4、判断输赢
5、轮到白子
6、绘制画面
7、判断输赢
8、返回步骤2
9、输出最后结果
把上面每个步骤用分别的函数来实现,问题就解决了。
而面向对象把下棋看成多个对象的共同行为:
1、玩家对象,也就是黑白双方
2、棋盘对象,负责绘制画面
3、规则对象,负责判定诸如犯规、输赢等。
玩家对象负责接受用户输入,棋盘对象棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用规则对象来对棋局进行判定。
对于面向对象,功能上的统一保证了设计的可扩展性:
- 比如要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。
- 再比如我要把这个五子棋游戏改为围棋游戏,如果是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?而下棋的大致步骤从面向对象的角度来看没有任何变化。
三、总结一下
面向过程就是把问题拆分为多个步骤,按步骤实现程序功能,而面向对象就是把问题的解决步骤描述为对象的行为;
面向过程数据是被所有函数共享的,面向对象数据可以是私有的,只被对象里的函数使用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170825.html原文链接:https://javaforall.cn
相关文章
- 301跳转与302有什么区别
- 通俗理解逻辑删除和物理删除的区别「建议收藏」
- SpringBoot和SpringCloud的区别?归纳理解
- 什么叫侧面指纹识别_屏下指纹和侧面指纹触控有什么区别
- 阻塞与非阻塞的区别verilog_如何理解阻塞和非阻塞
- Excel中的sumifs_理解和懂得的区别
- 理解的英文_iaas saas paas daas区别
- 【java并发编程】底层原理——用户态和内核态的区别
- 让你彻底理解浅拷贝和深拷贝的区别是什么_怎么让文件无法拷贝
- 网站托管和网站维护是一样的吗?两者有什么区别
- var、let和const之间的区别
- DCDC开关电源的阶跃响应和动态响应(Load Transient)的区别
- PHP Session和Cookie的区别
- 深入理解Cookie与Session的区别详解编程语言
- 比较 MySQL 与 ASP 的区别(mysql和asp)
- ABAP中RETURN与EXIT语句的区别详解编程语言
- 采购订单中带账户分配的总账科目确定(M和E的区别)详解编程语言
- MySQL中如何区分重复数据(MySQL中区别重复)
- MySQL的连接方式 理解基本连接和持久化连接的区别(mysql两种连接方式)
- 深入理解Oracle各类产品的不同之处(oracle 产品区别)
- deletefrom表名与truncatetable表名区别
- javaabstractclassinterface之间的区别介绍
- MySQL存储引擎MyISAM与InnoDB的9点区别