您的位置  > 互联网

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

本章目标:

理解面向对象,知道类和对象的区别,并能够定义类。

知识框架:

Java中面向对象编程和过程式编程的区别

“面向过程”(-)是一种以过程为中心的编程思想,简称OP。 “面向过程”也可以称为“面向记录”的编程思想,就是分析解决问题所需的步骤,然后用函数一步一步地实现这些步骤,使用时一一调用即可他们。 所以,面向过程编程的重点不在于“事”,而在于如何分几步去做,先做什么,后做什么。 例如:早上起床:起床、穿衣、洗漱、上班。 只要按照以下步骤操作,就可以实现“一日”的功能。 整个过程重点是如何一步步去做,并没有关注“人”的事情。 又如:打开车门,调整座椅,系好安全带,踩下离合器,启动,挂档,加油。 只要按照以下步骤操作,车子就会开走。 显然,重点还是在步骤上。 只需完成每个步骤即可。 整个过程并没有聚焦于“车”的事情。

“面向对象”(-)是一种以对象为中心的编程思想,简称OO。 随着计算机技术的不断进步,计算机被用来解决日益复杂的问题。 一切都是对象。 通过面向对象的方法,将现实世界中的事物抽象为对象。 通过面向对象的方法,更有利于以人类可理解的方式分析、设计和编程复杂的系统。 同时,面向对象可以有效提高编程效率。 通过封装技术,可以像搭积木一样快速开发出新的系统。 面向对象以对象作为程序的基本单元,封装程序和数据,提高软件的可重用性、灵活性和可扩展性。

使用面向对象的编程思想开发系统。 现代开发中,面向对象会贯穿整个流程,一般包括:OOA/OOD/OOP:

● OOA:面向对象分析(-)

● OOD:面向对象设计(-)

● OOP:面向对象编程(- )

面向过程和面向对象之间是什么关系? 面向过程其实是最实用的思维方式。 即使是面向对象的方法也包含面向过程的思想。 可以说,面向过程是一种基本方法。 它考虑实际实施。 一般的流程导向的做法是自上而下,一步一步地力求改进。 面向对象主要关注事物的对象化,对象包括属性和行为。 当程序的大小不是很大时,面向过程的方法也具有优势。 由于程序的流程非常清晰,可以很好地按照模块和功能进行组织。 但对于复杂的大型系统,面向过程就显得很弱了。

为了帮助大家理解面向过程和面向对象,我们来想象一个场景。 如果我们写一个程序来模拟一个人抽烟的场景,面向流程的做法是这样的:买香烟->买打火机->找会抽烟的人。 场合->点燃香烟->开始吸烟。 只要按照这个过程一步一步来,就可以实现吸烟的场景。 使用面向对象的方法,重点是不同的。 我们会思考这个场景涉及到哪些东西。 每个事物应该有什么行为,然后将这些事物组合在一起描述场景,例如:一个抽烟的人(物体)+香烟(物体)+打火机(物体)+一个允许吸烟的地方(物体),将以上4个对象组合在一起就可以实现吸烟场景,其中面向对象的开发方式具有很强的可扩展性。 例如:人的对象可以更换,打火机也可以更换,香烟的品牌也可以更换。 包括吸烟的场合也可以更换。 如果采用面向流程的开发方式,一步依赖于另一步,任何一步都不能改变。 如果其中一个步骤发生变化,整个软件都会受到影响。

我在网上找到一篇文章,讲了OP和OO的区别,并做了一个容易理解的比喻。 有人这样描述OP和OO的区别:使用面向过程的方法编写的程序就像一份鸡蛋炒饭,而使用面向对象的方法编写的程序就像一份炒饭。 所谓盖饭,在北京叫盖饭,在东北叫烩饭,在广东叫盘饭,就是一碗白米饭上面放上盖饭。 你可以在上面放任何你喜欢的蔬菜。 我觉得这个比喻非常恰当。 我对制作蛋炒饭的细节不太了解,因为我从来没有当过厨师,也不知道怎么做,但最后一步一定是把米饭和鸡蛋混合起来,炒均匀。 盖饭时,米饭和蔬菜是分开准备的。 如果你想要一份红烧肉盖饭,你会得到一份红烧肉; 如果你想要一份青椒和土豆盖饭,你会得到一份红烧肉。 青椒和土豆丝。 蛋炒饭的优点是味道均匀,味道鲜美。 如果你恰好不喜欢鸡蛋,只喜欢蔬菜,那么唯一的办法就是把它们全部扔掉,做一份新的蔬菜炒饭。 浇上米饭也没那么麻烦。 您只需要把饭碗拆下来,换上另一个饭碗就可以了。 盖饭的缺点是味道不均匀,可能没有蛋炒饭那么香。 蛋炒饭和盖饭哪个更好? 事实上,这类问题很难回答。 如果必须比较它们,则必须设置一个场景。 不然只能说各有所长。 如果大家都不是美食家,没有那么讲究的话,那么从餐厅的角度来看,做盖饭显然比蛋炒饭更有优势。 它可以组合成任意数量的组合而不会浪费。 盖饭的好处是“菜”和“米”分开,增加了制作盖饭的灵活性。 如果您对餐食不满意,请更换餐食; 如果您对菜品不满意,请更换菜品。 用软件工程的术语来说,“可维护性”比较好,“米”和“菜”的耦合度比较低。 蛋炒饭将“鸡蛋”和“米饭”混合在一起。 “鸡蛋”和“米”中任何一个都很难改变。 耦合度非常高,使得“可维护性”比较差。 软件工程追求的目标之一是可维护性。 可维护性主要体现在三个方面:可理解性、可测试性和可修改性。 面向对象的好处之一是它显着提高了软件系统的可维护性。

对于编程语言来说,基于C语言的编程是面向过程的。 C++只能说是一半面向过程,一半面向对象。 Java语言是一种完全面向对象的编程语言。 有C++背景的同学学Java应该很快,因为Java底层是用C++语言实现的。 当然,除了Java语言之外,还有很多完全面向对象的编程语言,例如:C#等。

现阶段理解面向过程和面向对象还是比较困难的。 毕竟大家还处于定义变量、写if语句的阶段。 慢慢来。 我们需要继续学习下面的内容,进而加深对面向对象的理解。