面向过程与面向对象的区别及优势和弊端

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

面向过程:(Procedure-Oriented Programming(面向过程程序设计),简记为POP),一种以过程为中心的编程思想。

面向对象:(Object Oriented Programming(面向对象程序设计),简记为OOP),将相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,是一种更贴近事物的自然运行模式。

思考:把大象装进冰箱需要几步?

面向过程与面向对象的区别及优势和弊端_第1张图片

面向过程:

步骤是:打开冰箱、把大象装进冰箱、关闭冰箱

编码实现:open()、put()、close()

面向对象:

对象:大象、冰箱

编码实现:elephant、fridge

对象的行为:大象进冰箱、冰箱打开、冰箱关闭

再以实际情况调整对象行为的顺序:冰箱打开、大象进冰箱、冰箱关闭

编码实现:fridge.open()、elephant.put()、fridge.close()

总结:

面向过程:把问题分解为若干个步骤,每个步骤实现为一个函数,按照顺序实现并在调用时传递数据给函数解答问题。

面向对象: 抽象出问题的各种对象,把对象的属性和解决问题的方法封装在对象中,而后各个对象之间通过行为实现解答问题。

概念补充:

对象:现实世界中存在的任意一个可以被明确标识的实体。例如上述例子中所讲述的:一个冰箱,一只大象等。

类:具有同种属性的对象称为类,是个抽象的概念。比如“人”就是一类,其中包括小明、小红、小玲等等这些都是对象,类就相当于一个模具,他定义了它所包含的全体对象的公共特征和功能,对象就是类的一个实例化,小明就是人的一个实例化!我们在做程序的时候,经常要将一个变量实例化,就是这个原理!我们一般在做程序的时候一般都不用类名的,比如我们在叫小明的时候,不会喊“人,你干嘛呢!”而是说的是“小明,你在干嘛呢!”

类的成员主要包括:属性、方法和构造方法

属性:对象静态的一面,如:大象的重量,形状等都是描述大象的属性

方法:对象动态的一面,如:大象进冰箱,冰箱的关闭和打开

构造方法:构造方法是一种特殊的方法,专用于构造该类的实例(如实例的初始化、分配实例内存空间等),Java语言通过new关键字来调用构造方法,从而返回该类的实例。构造方法的格式:
    权限修饰符 函数名(参数列表){
        函数体;
    }

面向过程与面向对象的优势与弊端

看了很多文章,发现了一篇将面向过程和面向对象比喻的十分淋漓尽致地文章,分享给大家~

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。

蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

接下来,我将进行相应的总结,希望对你们有帮助。

面向过程

优势:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 

弊端:没有面向对象易维护、易复用、易扩展

面向对象

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

弊端:性能比面向过程低

 

 

你可能感兴趣的:(面向过程与面向对象的区别及优势和弊端)