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

如果你总是对面向对象和面向过程傻傻分不清,这篇博客尽量会用通俗的方式来讲解。

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

面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了;而面向对象是将构成问题的事物,分解成若干个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为。

面向过程思想偏向于我们做一件事的流程,首先做什么,其次做什么,最后做什么。

面向对象思想偏向于了解一个人,这个人的性格、特长是怎么样的,有没有遗传到什么能力,有没有家族病史。

打个比方,分别求出长方形、圆形的周长和面积。

面向过程会以,求解数学题的思路去思考:

设定长方形的长和宽分别为x和y,圆的半径为r

确定长方形、圆形的周长和面积的算法

编写出两个计算周长和面积的函数

将x、y和r传入相对应的函数,求解长方形、圆形的周长和面积

面向对象会以,描述对象的思路去思考:

对规则图形的一般属性和性质进行定义,如周长和面积

在规则图形的基础上,创建长方形,描述长方形的属性和性质

在规则图形的基础上,创建圆形,描述圆的属性和性质

分别创建长方形和圆形的对象,调用它们的周长和面积函数,以求解长方形、圆形的周长和面积

面向过程是从细节出发,将问题细化为先后步骤;

面向对象从宏观出发,重在模拟整个情境中各个要素之间的交互。

面向过程和面向对象的优缺点

下边面向过程和面向对象的概念,想先看概念的小伙伴可以先往下翻。小编在找资料的时候翻到这么一篇文章,写得真的不错:面向对象与面向过程的本质的区别。但是小编想改个比较宜家宜室一点。

面向过程——蛋炒饭

在制作蛋炒饭之前,我们需要知道制作蛋炒饭的步骤:①将饭煮熟②将油倒进锅中预热③饭倒进锅里炒③将鸡蛋打入锅中持续翻炒1~2分钟④出锅。

大家可以看出,制作蛋炒饭是有步骤需要一步步进行的,而且制作出来后,想换成玉米炒饭,就只能把蛋炒饭倒掉,重新做一份玉米炒饭了。

面向对象——快餐盒饭

我们打开快餐盒,可以看到固定的搭配:一菜一肉一饭。这一菜一肉我们可以根据快餐店给出的菜单来选择。

快餐盒饭可以在固定的搭配模型下,自由组合多种套饭,如果想吃玉米不想吃生菜,换就行了。

从这里可以看出,蛋炒饭是蛋和饭均匀混合,你中有我,我中有你,难舍难分,换个术语来说,就是耦合度高。而快餐盒饭胜在菜、肉、饭分离,想换就换,耦合度低

(耦合度:各模块间相互联系程度的度量)

可维护性表现在3个方面:可理解性、可测试性和可修改性

在蛋炒饭中,需要了解食材的属性和性质,后续才有保证,需要在食材没被炒熟之前就去了解它们的味道,而且炒出来之后,蛋炒饭就是蛋炒饭,没办法将蛋炒饭,重新换成玉米炒饭。但是蛋炒饭入味均匀,很香很好吃。

而快餐盒饭的单菜单肉,(理想状态下)是可以挨个品尝的,而且我们可以不需要知道这个菜是怎么炒出来的,直接吃就行。虽然可以换菜色,但是没那么入味。

所以面向过程相对于面向对象,可维护性没那么好,但是面向过程在性能方面是优越于面向对象的。

面向过程 概念

面向过程是一种以过程为中心的编程思想,面向过程编程是基于“冯·诺依曼”模型的。在这种模型中,程序与变量一起存储,程序中包含一系列指令,并把这些指令以函数的方式组织起来。

特性

自顶向下、逐步求精、模块化

优点

性能比面向对象高,因为类调用需要实例化,开销比较大,比较消耗资源。

如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,因为在它们看来性能是最重要的因素。

缺点

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwygdz.html