今天我决定总结一下面向过程编程和面向对象编程的区别。
大学时学的是C语言,没有对象的概念,拿到功能设计图就直接写步骤将功能实现,一体化。而现在工作用的是php语言,拿到需求,会归类、拆解模块、封装类,再通过类调用函数实现。其实在早期,我受C语言影响,很难转变自己的面向过程思维,实现功能的逻辑虽然用的是php但是写出来的还是C逻辑,能减少用类定义就减少,甚至觉得类定义麻烦,没必要。当然,在我慢慢的接触类、对象这些的各种属性各种便利后,真香。
现在网络上有很多关于面向过程和面向对象区别的文档,都总结的很好,总结如下
1、面向过程在解决问题的时候,会分析出解决问题的步骤,然后用函数一步步的将这些步骤实现,依次调用函数。而面向对象在解决问题的时候,会将问题拆散成一个个对象,建立对象的目的不是为了完成某个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。这来自于思考问题方式的不同。
2、从结构上说,面向过程的特点是过程化和模块化,而面向对象的特点则是类封装、继承和多态(多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法)。
3、执行效率不同,面向过程不需要封装类再实例化对象调用,只定义了函数和调用,所以执行效率会更高一些。
总的来说,面向过程执行效率更高也更直接,面向过程更灵活也更丰满。