一、基本定义

(一)、面向过程(procedure oriented programming POP)

  面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可。

(二)、面向对象(object oriented programming OOP)

  面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为

二、通俗理解面向过程和面向对象区别

知乎上面经典的答案(一):

  • 面向过程是编年史
  • 面向对象是纪传史

经典答案(二)如何大象装进冰箱?

 

面向过程:

  为了把大象装进冰箱,需要3个过程。
    1) 把冰箱门打开(得到打开门的冰箱)
    2) 把大象装进去(打开门后,得到里面装着大象的冰箱)
    3) 把冰箱门关上(打开门、装好大象后,获得关好门的冰箱)
  每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱。

面向对象:  

  为了把大象装进冰箱,需要做三个动作(或者叫行为)。
  每个动作有一个执行者,它就是对象。
    1) 冰箱,你给我把门打开
    2) 冰箱,你给我把大象装进去(或者说,大象,你给我钻到冰箱里去)
    3) 冰箱,你给我把门关上
  依次做这些动作,就能把大象装进冰箱。

三、应试答案

前面的经典答案都是供我们去理解这个区别,可到了应试环节(面试、笔试、考试),这些东西肯定上不了台面,就需要我们系统全面的回答。

(一)、思想上的区别

面向过程:

是一种以过程为中心的编程思想。强调流程化、线性化、步骤化的思考方式

面向对象:

是软件开发方法和编程思想。首先强调整体性和差异性,即可将任何事物看作一个有机统一整体来研究,然后通过派生的方式实现差异性来降低高耦合和可能性;其次强调行为的多样性和多态性,然后强调高度可拓展性,由此也说明了面向对象的四个基本特征:抽象、封装、继承、多态。

(二)、各自的优缺点

面向过程

  1. 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素;
  2. 缺点:没有面向对象易维护、易复用、易拓展。

面向对象

  1. 优点:易维护、易复用、易拓展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护;
  2. 缺点:性能比面向过程低。

        if ( U.read(me.Blog) ) $("#推荐").click();
        if ( U.copy(me.Blog) ) $("#u Blog").console("原文链接:http://www.cnblogs.com/Grand-Jon/p/7404917.html ");
        else me.Fuck(U);