面向对象编程与面向过程编程的区别(翻译版)

应对复杂性的能力不同。??

我们知道现在存在着两种不同的编程方式-1) 面向过程编程(POP)以及2)面向对象编程。我们可以任意选择一种方式来编写程序,但是我们得知道这两种编程方式的区别。这两种编程方式是软件开发历经几十年发展的结果。从计算机被发明起,人们尝试了很多方法来编写程序,例如a)自顶向下编程;b)自底向上编程;c)模块化编程;d)结构化编程等等。这些方法的根本目的只有一个-“使编程更加高效”-即让编写一个复杂的程序变得简单、自由、bug少、易于理解、易于扩展、易于修改等等。

??简单来说,POP与OOP之间的区别可以这样解释:-一个程序员可以用POP编写一个困难程度一般的复杂程序,但是当程序变得更加复杂的时候,此时用POP将比较低效率,整个编程过程将更加艰难,花费更多时间,有更多的bug,花更多的时间debug等等。而在同样复杂度下,OOP比POP高效得多。在软件开发中,业界都遵循OOP原则,因为OOP使团队协作编程变得简单。同时,OOP具有较高的代码重用性。

面向过程编程 
??这里“过程”一次值得特别注意。过程可以理解为子程序的集合或者函数的集合。我们都知道C语言中的函数。C是一个典型的面向过程语言。在面向过程编程中,强调的是函数或者子程序。函数是指令的集合,用于执行某个特定的任务。在程序中,函数被重复调用来执行任务。例如,一个程序可能包括收集用户数据(读),对用户数据进行计算(计算),呈现计算结果(打印)。这三个读、计算、打印能通过3个不同的函数来实现。

面向过程编程示意图

??面向过程编程最大的问题在于数据处理。面向过程完全不重视数据。这里的数据指从用户收集到的信息、程序的计算结果等等。如果你熟悉C语言,你可能会想起C语言中的存储类别。在C语言中,为了一个或者多个函数可以访问变量, 这个变量必须被声明为全局变量。如果这个程序有10个函数,每个函数都可以访问这个变量,那么其中一个函数就有可能不小心修改了这个变量,如果这个变量是程序的一个重要变量,那么任意一个不小心的操作就有可能毁了整个程雪。而且,当程序很庞大时,这种bug很难定位到是哪个函数出了问题。

面向过程编程中的数据以及函数示意

?? 结构体是C语言的一个重要特性。结构体提供了一种把不同数据类型打包成一个新类型的方式。程序员可以用结构体把整数、浮点数、数组等类型打包成一个新的类型。结构体一引入C语言就收到了广泛的好评和认可。这是因为结构体很好地把现实世界的需求映射到程序当中。结构体的问题在于它只处理数据。 结构体不允许打包与数据相关联的函数,所有相关联的函数必须写在结构体之外。因此,C程序过度依赖于函数。

?? 总的来说,在面向过程编程中,问题被看成过程的有序组合,例如读、计算、展示结果等等过程。以面向过程来思考为时,首先把问题分解成一系列过程,每个过程可以对应一个或者多个函数,实现所有的函数,问题就被解决了。

面向对象编程

?? 面向对象编程与面向过程编程有本质的不同。面向对象编程保留每结构化编程的所有优点,并且引入了许多促提高编程效率的新特性。这些新特性使我们可以以一种全新的方式去编程。下面介绍这些新特性。

?? 1) 面向对象编程的第一个特性是数据隐藏。面向对象编程很重视数据。采用面向对象编程,程序员可以避免核心数据暴露在外。类(class)是面向对象编程的基本概念,类类似于面向过程编程中的结构体。类用于打包不同的数据类型以及对这些数据的操作函数。类中的数据成员可以是私有的(private)或者公有的(public)。为了避免数据暴露在外,程序员可以把数据声明为私有的。类与C语言中的结构体很相似,都是打包不同的数据类型。它们之间的主要区别在于函数。结构体不允许一起打包数据以及相应的处理函数而类允许。并且结构体并不支持数据隐藏,结构体中的数据成员可以任意访问。面向对象编程中的数据隐藏称为数据封装。面向过程编程的主要缺陷(忽视数据)在面向对象编程中得到了解决。面向对象编程把数据绑定到类以及类的对象上去,因此也就不再需要全局数据类型,因此避免了全局变量的偶然修改导致的严重错误。

面向对象编程中的对象示意图

?? 2)面向对象编程的另一个特点是代码重用。面向对象编程的继承特性使代码重用变得可能。通过继承,一个类能够获得另一个类的特性。除此以外,面向对象编程的新特性还有多态,动态绑定等等,这些都提高了代码的重用性。

?? 以上翻译自http://www.circuitstoday.com/difference-between-procedure-oriented-and-object-oriented-programming

面向过程编程与面向对象编程的区别(个人理解)

1)从思维方式上来讲,是对现实问题的建模方式不同。面向过程编程把问题分解成一个个过程,一步步实现这些过程,问题就得到了解决。而面向对象编程把问题看成一系列对象之间的交互,设计出这些对象以及对象之间的交互,问题就得到了解决。

2)从程序的本质上来讲,是对算法以及数据的重视程度的不同。程序的本质是算法和数据。面向过程编程重视算法,忽视数据。面向对象编程侧重点在数据,对算法的重视程度不如面向过程编程。对数据的重视,使面向对象编程具有继承,封装,多态等特性,在各方面提高了编程的效率。

http://blog.csdn.net/u012069890/article/details/56497186

原文地址:https://www.cnblogs.com/feng9exe/p/8277511.html

时间: 2024-10-09 23:07:47

面向对象编程与面向过程编程的区别(翻译版)的相关文章

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

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

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

面向对象和面向过程的区别,实在是难用一两句话说明白. 面向过程是一种直接的编程方法,它是按照编程语言的思路考虑问题.尤其是想C语言这种过程式语言,它就是通过顺序执行一组语句来实现一个功能,这些语句的执行过程就是整个程序.不同的语言解决同一个问题的过程是不一样的. 面向对象是一种抽象度更高的编程方法.它把眼光集中在了要解决问题本身而不是语言上.它的目标是使模块的抽象度更高,可复用性更好.面向对象的目的就是可复用. 举个例子,比如我们要写一个计算器程序.这个计算机目前只要求有加减乘除四种运算. 用面

Day6 - Python基础6 面向对象编程

Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 2 3 4 5 6 7 8 9 10 11

Python基础6 面向对象编程

本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def per

Java面向对象编程导论

面向对象编程简介 JAVA是一门面向对象的编程语言.面向对象编程范式与面向过程编程范式同属于命令式编程范式,与函数式编程范式相区别.在面向对象编程范式中,我们将我们要处理的系统的业务逻辑表现为对象之间的互相关联.对象实体本身是一组数据和动作的封装.封装可以简单的理解为一种打包,它使得外部可以使用某个单一对象或模块提供的服务而不去理会具体的细节.在这个意义上我们发现,面向对象本身就是计算机科学抽象思维的一种体现.在面向对象编程范式所面对的世界中,一切皆是对象. 面向对象编程与面向过程编程一般来说,

面向对象编程(OOP)

什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编程时考虑的都是如何针对抽象或者是接口编程而不是针对细节编程,即程序中所有的依赖关系都是终止与抽象或者接口那就是面向对象编程,否则就是面向过程编程. 软件开发或者说是编程的发展逐渐从面相过程开发向面向对象开发发展,从早期的编程语言,是对机器的抽象对方法的抽象,直接操作计算机指令,逐渐发展开始编写函数,

进击的Python【第六章】:Python的高级应用(三)面向对象编程

Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的实例. 已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用. 此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它

Python基础----面向对象编程介绍、类和对象

面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux内核.git.apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程:不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象就是把计算

python基础之面向对象编程介绍、类和对象

面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux内核.git.apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程:不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象就是把计算