智能网 编程设计 java面向对象和面向过程的区别

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

java面向对象和面向过程的区别 1、按步骤来看: (1)、开始游戏,(2)、黑子先走,(3)、绘制画面,(4)、判断输赢,(5)、轮到白子,(6)、绘制画面,(7)、判断输赢,(8)、返回步骤(2),(9)…

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

1、按步骤来看:

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

2、按组成模块来看:

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

(1)、黑白双方模块,(2)、棋盘模块,(3)、规则模块

以上两种完全不同的设计思路,正好对应于编程中完全不同的两种思想:前者侧重于游戏步骤的设计,对应于编程中的面向过程思想;后者着重于分层,有模块化设计理念,对应于编程中的面向对象思想。可以很明显地看出:面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

C语言是典型的“面向过程”设计语言。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。“面向过程”是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,它们不支持丰富的“面向对象”特性(比如继承、多态)。

Java是典型的“面向对象”设计语言。“面向对象”是一种以事物为中心的编程思想。是把构成问题的事物分解成各个对象,建立对象的目的不是为了完成某一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。如下图:

面向过程适合于一个人的小量工作,而面向对象更侧重于团队合作,需要很多人完成的大量工作。面向过程思想是我们每一个人天生具备的。在编程时,我们总会不自觉的去考虑怎么来完成某一需求,分析出具体的步骤,然后按照步骤来一步步实现。但是在现实生活当中,并不是每一件事都可以自己独立来完成,我们需要团队,需要合作才可以完成某一项复杂的工作。这样来看的话,面向对象思想似乎更符合人们的做事方式,也更生活化。是的呢,不管是生活中,亦或是编程中,面向对象才是我们更应该具备的一种思想,先来看几组概念。

对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看做对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件等。

类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例化是对象,类实际上就是一种数据类型。

面向对象三大特征:封装、继承、多态。

封装:封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。封装可被理解为一种用作保护的包装器,以防止代码和数据被包装器外部所定义的其它代码任意访问。

继承:继承是指一个对象从另一个对象中获得属性和方法的过程。它支持按层次分类的概念,如果不使用层次的概念,每个对象需要明确定义各自的全部特征,通过层次分类方式,一个对象只需要在它的类中定义使它成为唯一的各个属性和方法。

多态:多态是指同一个实体同时具有多种形式。同一操作作用于不用的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的引用,来调用实现派生类中的方法。

面向过程

优点:性能比面向对象高。

缺点:没有面向对象易维护、易复用、易扩展。

面向对象

优点:易维护、易复用、易扩展。由于面向对象有封装、继承、多态性的特征,可以设计出低耦合的系统,使系统更加灵活,更加易于维护和扩展。

缺点:性能比面向过程低。

在谈论面向对象和面向过程区别之前,我们需要了解一下什么是面向对象和面向过程是什么?总的来说,面向对象和面向过程都只是一种编程思想,对问题不同角度得去分析和解决。

1、思想上的区别

面向过程:简单的来说,面向过程就是将事物分为不同的步骤,根据这些步骤去完成编程。我们可以以五子棋来理解面向过程思想。在面向对象的思路中就是先分析五子棋需要的步骤:

(1) 绘制棋盘

(2) 开始游戏

(3) 黑子下

(4) 绘制黑色棋子

(5) 判断输赢

(6) 白子下

(7) 绘制白色棋子

(8) 判断输赢

(9) 返回步骤(3)

然后,在开发过程中,将以上步骤一步一步地实现

面向对象:而面向对象的设计思路则是将问题分为不同的部分对象,并给对象赋予属性和行为。同样拿五子棋为例,在实现时,需要去分析需要那些对象。

(1) 棋子对象(负责黑白双方落子等行为,仅需要给他们一个颜色属性进行区分即可)

(2) 棋盘对象(负责绘制棋盘,包括棋子的位置绘制)

(3) 规则对象(负责对五子棋进行输赢判断,先后手顺序判断等)

从这个例子中,我们可以发现,面向过程在实现中比较抽象,考虑的方面比较多。而面向对象,用对象直接出发,更加趋向于我们人类的思想。

2、维护上的区别

不但在实现上,包括后续的功能维护上,也有很多不同。依旧以上述的五子棋为例。我们如果要在五子棋的游戏中添加一个新的操作,例如悔棋。那么他们双方需要如何去实现呢。

面向过程:如果是面向过程的话,我们不但需要在每个人操作时判断是否有悔棋操作,还可能对前期一系列的步骤进行修改,数据的存储。对棋子的落子位置进行存放等等问题,改动可以说是十分巨大的。

面向对象:而面向对象就不需要有那么大的改动,因为在面向过程的思路中,整个五子棋游戏主要分为:棋子、棋盘、规则三部分组成。进一步分析如果我们加了悔棋,变化在哪里?规则是不会变得、棋子也不会变。唯一会变得就是棋子在棋盘上的布局。我们只需要在棋盘系统中增加一个棋谱回退的功能即可。局部的变化就可实现。

3、从性能上的区别

这个就是比较明显得事情,首先,面向对象在实现中需要类得组成,而类得调用需要实例化,这样开销就比较大,会消耗很多得资源,相对于面向过程在性能上就会低一些。所以在主要考虑性能时,一般会采用面向过程而不是面向对象。

简单的总结一下:

面向过程:性能方面比较高,但在维护、复用、扩展上比较差

面向对象:由于面向对象有三大特性:封装、继承、多态。也就带来了三个特点:易维护、易复用、易扩展。但这也同时消耗了性能,所以性能方面比较低。

免责声明:智能网所有文字、图片等资料仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,如有问题,请联系我们删除。此文章链接:https://www.fcc0.com/biancheng/635.html
返回顶部