面向过程和面向对象

百度百科对“面向过程”的解释是这样的:

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

百度百科对“面向对象”的解释是这样的:

“面向对象”(Object Oriented)是一种以事物为中心的编程思想。
内心OS:其实百度的解释还有很多很多,这是简单的一句话,细看的话请点击链接自行观看。

从知乎了解的到的两者是这样的:

面向对象是纪传体,面向过程是编年体。
详见:“面向对象和面向过程分别是什么?”



当然这里面有一些趣味性,但也不失为其个人理解的回答,那么我的理解是什么呢?

一开始我的理解是这样的:

比如说,我们有一个这样的需求,要坐火车去西藏,这个时候面向对象和面向过程都可以实现这个需求。但是当我们突然改变了需求,我们想自驾游去西藏了,这个时候面向对象写一个交通工具的类,把汽车对象放进去就ok,但是面向过程是需要重新写吗?当需求越复杂的时候,面向过程去改动的时候会越麻烦,面向对象的封装,继承,多态的优势也就越体现出来了。

然后询问大佬后得出的结论是这样的:

就比如我去修路,修路需要3大步:
先用挖掘机挖坑,然后用卡车把料运过来,最后用压路机压平。
面向过程:
就我一个人(一整块逻辑,在C语言中表现为一个 修路.c + 修路.h 文件),首先我需要开挖掘机挖坑(调用函数 开挖机()),然后开卡车 (调用 开卡车()),最后开压路机(xxx),如果一不小心把挖掘机开翻了,我就得去修挖掘机(直接修改函数逻辑),或者开卡车开炸了,得去买一个,至始至终都得是我在干这些事(对整体逻辑的一部分进行修改),但是因为比较直接,所以效率高。如果需要增加修路步骤,需要我去学习新技能,买新的工程车。(对整体逻辑的一部分进行修改)。
面向对象:
我是包工头,手下有好多蓝翔请来的精英,让他们去开各种机器,完成修路,(就类似 android 里一个 activity 是修路用的,里面有好多工程师对象,有开挖机的,开卡车的等等,他们都有自己的挖掘机),然后修路过程变成了,挖机哥.开挖机(),卡车哥.开卡车,如果挖掘机开翻了,可以直接换一个挖机哥继续开(直接修改实现类,增加了可维护性,降低了耦合性),每个工程师就代表一个类型,没有面向过程速度开,因为需要创建类(需要招人),但是逻辑清晰,可维护性高。如果需要增加修路步骤,需要我去直接招人(activity 中加入新类型的对象)。

 那么最后的定义是什么呢?此时我的理解是面向过程是一步步执行,虽然效率会高,但是随着需求的增加,一旦有问题,去亡羊补牢的话不是不可以,只是会耗费太多的人力物力。相对来说,面向对象,一开始要声明对象,去封装一些类,但是它的优势在于大大的降低的代码的耦合度,继承和多态也大大有利于代码的复用。当增加新的需求,修改会更加容易,不是会没有问题,只是相对面向过程来说更加容易些。
 暂时的理解是这样,以后有了更深的、更好的理解再更新

你可能感兴趣的:(面向过程和面向对象)