很多时候,面试第一个很基础的问题就会问关于面向对象(OO)以及面向过程(OP)的区别。个人理解:这是对现实的两种不同的思维方式。、
- 面向过程:对现实存在的现象抽象成一个个过程(方法),更加关注的是事件,而且以事件为单位,主要是分析出解决问题需要哪些步骤,然后一个一个的去实现这些步骤。
- 面向对象:以对象为中心,一切都是对象。分析问题,首先看到里面有什么对象,对象做了什么,把做了什么当成对象的行为。
举个例子:汽车发动,汽车行驶,汽车到站。
这对于面向对象来说,就是三个过程,汽车发动,汽车行驶,汽车到站分别是三个事件,在编程的过程中我们关注的不是汽车,而是事件的发生。
void 发动(汽车){}void 行驶(汽车){}void 到站(汽车){}
如果是面向对象的思维方式,关注的首先是里面有一个对象汽车,汽车做了什么呢?分别是发动,行驶,到站。
public class 汽车{ void 发动(){} void 行驶(){} void 到站(){}}
再举一个例子:我们要表达小明吃西瓜,面向过程是:吃(小明,西瓜),而面向对象则会表现为:小明.吃(西瓜)。
总结:面向过程的过程可以实现面向对象,但是我们为什么需要面向对象呢?拿小明吃西瓜来说,后续如果我需要写小李吃西瓜呢?小明吃芒果呢?面向对象在需求变化的时候则表现出更优,可拓展性,可维护性强,这样的表达方式也比较接近人的思维抽象。以面向对象为例,对应于软件开发的过程,OO衍生出3个概念:OOA、OOD和OOP。采用面向对象进行分析的方式称为OOA,采用面向对象进行设计的方式称为OOD,采用面向对象进行编码的方式称为OOP。