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

235 阅读3分钟

一、面向过程程序设计

面向过程的程序设计(Procedure-Oriented programming,简称POP)是一种以过程为中心的编程思想。这些都是以什么正在发生为目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。 特性:模块化 流程化。 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点:没有面向对象易维护、易复用、易扩展。 面向过程:根据业务逻辑从上到下写代码。面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。

二、面向对象程序设计

面向对象的程序设计(0bject oriented Programming,简称00P)是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应。 特性:抽象 封装 继承 多态。 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。 缺点:性能比面向过程低。

三、两者区别

二者都是一种思想,面向对象是相对于面向过程而言的。 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为;面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 面向过程程序的特点:强调实现功能、算法和一切细节 面向对象程序的特点:强调具备了功能的对象 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等

四、举例说明

人把大象装进冰箱:

面向过程:

函数1: 打开冰箱(){人站在冰箱前,打开冰箱,冰箱开到30度角的时候,冰箱的灯打开了....}

函数2:储存大象(){大象先迈出左腿,再迈出右腿,考虑冰箱能不能装的下...}

函数3:关闭冰箱(){人站在冰箱前,关闭冰箱,冰箱关到30度角的时候,冰箱的灯熄灭了....}

面向对象:

人{
  打开(冰箱) {
  冰箱.打开();
 }
  储存(大象){
   大象.进入(冰箱);
  }
  关闭(冰箱){
  冰箱.关闭() ;
 }
}
冰箱{
打开(){}
关闭(){} 
}
大象{
进入(冰箱){}
}

面向过程--->面向对象,其实就是执行者到指挥者的一个过渡。

二者相辅相成,并不是对立的。解决复杂的问题,通过面向对象方式方便我们从宏观上把握事物之间的复杂关系,方便我们分析整个系统,具体到微观操作,仍然使用面向过程方式来处理。

面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据。