什么是面向过程,什么是面向对象?

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 

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

例如五子棋面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。 

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

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。 

功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。 

再比如我要把这个五子棋游戏改为围棋游戏,如果你是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?(当然棋盘大小好像也不一样,但是你会觉得这是一个难题吗?直接在棋盘对象中进行一番小改动就可以了。)而下棋的大致步骤从面向对象的角度来看没有任何变化。 

当然,要达到改动只是局部的需要设计的人有足够的经验,使用对象不能保证你的程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓面向对象的程序很难有良好的可移植性可扩展性
时间: 2024-11-03 21:05:41

什么是面向过程,什么是面向对象?的相关文章

心得 : 面向对象和面向过程的区别

面向对象:用线性的思维.与面向过程相辅相成.在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统.微观上,仍然使用面向过程. "面向过程"是一种是事件为中心的编程思想.就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用. "面向对象"是以"对象"为中心的编程思想. 简单的举个例子:汽车发动.汽车到站.汽车启动是一个事件,汽车到站是另一个事件,面向过程编程的过程中我们关心的是事件,而不是汽车本身.针对上述两个事件,

.NET 高级架构师0002 架构师之路(1)---面向过程和面向对象

1.引言     机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到.但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c.ctrl-v用得更加纯熟了.在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO:二是继续深入,它的终点是首席架构师,成为CEO的人毕

o'c基础第一天面向过程与面向对象

1. OC将C的复杂的东西简单 a. #import 指令. b. NSLog函数. c. NSString d. BOOL 2. OC在C的基础之上增加了一些面向对象的语法. 面向过程 面向对象. 是解决问题的不同的思路. 1). 将大象放进冰箱. a. 打开冰箱门. b. 把大象放进冰箱 c. 把冰箱门关上. 面向对象. 找到1个冰箱. 只要这个冰箱有自动开门 自动拉近大象 自动关门. 2). 买电脑的需求 a. 根据自己的预算和需求确定型号. 查找资料. b, rMBP 9288 c, 到

再次理解面向对象和面向过程

什么是面向对象,什么是面向过程,已经是一个老生常谈的问题,我在这里不想大篇幅说一大推什么东西,结果其实懂还是没懂,都很难说.我从自己编程的经验来看. 面向对象的精髓有3个:面向接口编程(接口这里指的是抽象)解耦,还有一个忘了 面向对象的特征有四个:封装,继承,抽象,多态,这些特征绝对不是从语言上来去描述,而是什么,而是是从面向对象的思想角度去想得. 前几天看了个KNN算法,用Java语言编写程序是:直接写个Main函数,然后写几个函数实现下,虽然什么也实现了,虽是面向对象语言,但还是面向过程思维

面向对象和面向过程的区别

面向对象和面向过程 1.面向过程程序设计方法的实质上是从计算机处理问题的观点来进行程序设计工作:输入——运算——输出.面向过程程序设计者需要变更习惯的思维方法以贴近 计算机的内部工作机理.面向过程程序设计所具有的流的工作性质,试图通过信息流及其转换来认识系统,不仅加大了程序设计的难度,同时亦使得程序的可理解性 比较差. 面向对象程序设计方法中,一种普遍采用的优化方法是使用结构化的程序设计方法. 面向过程程序设计方法一般适宜采用自上而下的设计方法. 面向过程程序设计方法需要在一开始就全面的,自上而

面向对象-面向对象和面向过程的区别

两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 区别 1. 编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类.属性及其方法,然后通过实例化类.执行方法来完成功能. 2. 封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能. 3. 面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显.

面向对象和面向过程 不同之处

对于不同的语言来说: C是面向过程 C++ JAVA是面向对象 C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制) C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制. 面向对象和面向过程的区别 面向对象简单,面向过程对人员要求素质过高 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,最重

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 打个比方 蒋介石和毛主席分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性. 面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,

PHPmysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理

相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析 介绍 mysqli是PHP程序与mysql数据库进行数据交互的桥梁,它支持面向过程和面向对象两种方式 面向过程方式 现在面向对象编程已经成为了主流,mysqli面向过程化的编程方式可能已经没有太多实用价值,但是通过面向对象的和面向过程两种方式实现同一段代码,对体会对象和过程两种编程思想还是很有意义,个人觉得这个比较十分有趣! 流程图: 实例: <?php header("content-type:text/html;chars

如何从普通程序员晋升为架构师 面向过程编程OP和面向编程OO

引言 计算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到.但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c.ctrl-v用得更加纯熟了.在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO:二是继续深入,它的终点是首席架构师,成为CEO的人毕竟是少数.如