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

面向对象和面向过程的区别,实在是难用一两句话说明白。

面向过程是一种直接的编程方法,它是按照编程语言的思路考虑问题。尤其是想C语言这种过程式语言,它就是通过顺序执行一组语句来实现一个功能,这些语句的执行过程就是整个程序。不同的语言解决同一个问题的过程是不一样的。

面向对象是一种抽象度更高的编程方法。它把眼光集中在了要解决问题本身而不是语言上。它的目标是使模块的抽象度更高,可复用性更好。面向对象的目的就是可复用。

举个例子,比如我们要写一个计算器程序。这个计算机目前只要求有加减乘除四种运算。

用面向过程的方法,我们可能直接就写一个main函数。然后就开始定义一些数据结构,然后就开始写add,sub,multi,div等函数,去实现功能。

用面向对象的方法,我们会先定义一个Calculator类。然后定义一些必要的数据成员,然后在定义add,sub,multi,div这四个成员函数(这四个函数的功能实现和上面四个应该是基本一样的)。

从上面的实现来看,这两种实现方法的差别不是很大,甚至第二种看上去还有些多此一举。

接下来,我们要扩展这个计算器,让它能计算指数。

用面向过程的方法,我们会将上面实现的代码全部copy过来,然后再增加一个power函数。

用面向对象的方法,我们会定义一个CalculatorEx类公有继承自Calculator,再在CalculatorEx中实现Power函数。

上面只是一个简单的扩展,二者的区别就明显起来。面向过程是纯代码级的复用。面向对象的复用方式更为优雅,它可以是代码级的,也可以是类级的,也可以是接口级的,也可以是组件级的,甚至是服务级的。抛下这些复用概念不说。我们假设第一次实现的并不是简单的四个功能,而是一个复杂的库,第二次增加的也不是一个功能而是一个扩展库。这时候面向对象的优势就会比较明显的体现出来。面向过程是松散部件,而面向对象是一个体系。

我说的这些都是自己的理解,可能并不完全正确。对于面向对象有一个官方的定义,但是不同人有不同的理解。所以里面的很多东西都需要在学习的过程中去理解体会。但是,如果不动手做点东西,对这些概念很难理解到位。

还有就是,C,C++,Java这些都是语言,他们之间并没有是不是面向对象的区别。用C同样可以写面向对象的程序,看看Linux的内核代码就知道了。C++,Java一样可以写面向过程的程序,他们之所以叫面向对象的编程语言是因为他们提供的语言特性更易于实现面向对象的编程方法,并不是说他们只能做面向对象编程。

还有就是并不是说面向对象一定优于面向过程。在很多领域是无法实施面向对象的方法,如硬件编程和嵌入式编程这种实时性和效率要求高的领域就无法用到面向对象。面向对象的主要领域还是用在大型,复杂型的软件系统中。

时间: 2024-10-10 01:14:01

面向对象编程和面向过程的区别的相关文章

面向对象编程与面向过程变成之间的比较

参考地址:http://mp.weixin.qq.com/s/ZZMA8mBoMvq8IRiX7deQbA 以一个例子(如打扫房间)来说明面向过程和面向对象在程序流程上的不同之处. 面向过程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程.比如某个人要打扫房间这件事,需要先取扫帚,然后仔仔细细打扫每一处,最后将扫帚放回原地. 代码实现过程: 输出结果: 面向对象就是将编程当成是一个事物(相当于一个整体的东西),对外界来说,事物是直接使用的,不用去管他内部的情况.而编程就是设置事物能够做

面向对象和面向过程的区别及优劣对比详解

以前上面向对象这门课的时候,我是没有特别注意这些. 但现在发现面向对象和面向过程的设计思想是很重要的 1.面向对象和面向过程有什么区别? 面向对象程序设计和面向过程程序设计的区别实际就是解决问题的方式不同. 先解释面向过程,你得先分析出解决问题的步骤,然后用函数把这些步骤一步一步地实现,解决的时候就是一个一个函数地调用. 面向对象,首先你需要知道对象的概念. 对象,就是类中某个具体的实例,比如人类张三,李四就是类的某个对象,他们有自己独特的个性.  面向对象,看名字它是注重对象的.当解决一个问题

面向对象编程与面向过程编程的区别与联系

LinuxC编程的学习已经告一段落,这段开始学C++.C++是面向对象编程,C语言是面向过程编程.因此学习C++的第一件事就是要弄明白什么是面向过程编程,什么是面向对象编程. 之前学习的C语言是面向过程编程,回想一下C语言编程的过程.主函数,定义变量,调用函数然后实现.面向过程编程是一种非常具体,要面面俱到的的编程方式.而面向对象是以对象为单位来进行编程,比较像正常人的思维. 下面我们举个例子,比如开车.加速.减速.刹车. 用面向过程来说就是你要先有一个车,然后这四个分别是4件事,也就是说你要写

面向对象的编程和面向过程的编程有什么区别

C语言是面向过程的编程,它的最重要特点是函数,通过主函数来调用一个个子函数.程序运行的顺序都是程序员决定好了的.它是我学的第一种程序语言. C++是面向对象的编程,类是它的主要特点,程序执行过程中,先由主函数进入,定义一些类,根据需要,执行类的成员函数,过程的概念被淡化了(实际上过程还是有的,就是主函数的那些语句),类就是对象,所以我们称之为面向对象程序设计. 不同点:1.编程模型 所有计算机均由两种元素组成:代码和数据.精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕&

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

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

C语言和OC的区别? 面向对象和面向过程的区别?

C语言: 1.C是结构化语言,层次清晰,调试和维护比较容易; 2.效率高,可移植性强. Object-C语言: 1.扩展了C语言,使它具备面向对象设计的能力,例如类.消息.继承: 2.可实现底层系统编程: 3.支持利用动态架构进行开发. C和OC的区别:OC中兼容C的语法 ,两者可以混合编码,OC是面向对象的,有类和对象的概念,C是面向过程的语言. 重点: 面向过程编程和面向对象编程有何区别? http://blog.sina.com.cn/s/blog_4dd5955301000a2m.htm

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

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

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

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

[python]两种编程思维--面向过程和面向对象

例如:eg:炒一份西红柿鸡蛋 一.面向过程 面向过程的编程思维,如下 二.面向对象 制作一台炒菜机器人,然后告诉机器人做一道西红柿炒鸡蛋.在这里,我们直接面对的是机器人,而非炒菜的过程,所以这里机器人就是我们面对的对象,这种解决问题的方法就叫做[面向对象]编程 三.总结 [面向过程]编程主要用到的是“函数”知识,将每个过程步骤打包成函数,再依次调用,看重的是解决问题的过程 [面向对象]编程主要用到的是“类和对象”知识,看重的是解决问题的方法 原文地址:https://www.cnblogs.co