在写Lab2实验的过程中,思考了以下一些问题:
1.面向对象编程(OOP)和面向过程编程(POP)有什么区别?
2.面向对象编程(OOP)和面向过程编程(POP)有什么需要注意的?
3.这两种编程方式分别有什么优势?
首先,我查找了以下相关的概念:
面向过程编程(procedure oriented Programming)(POP):
面向过程编程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
它的最重要特点是函数,即把执行一件事的过程拆分成一个一个步骤,然后将这些步骤变为一个一个的子函数,然后通过主函数按照顺序调用这些子函数来完成整个事件。
这些子函数需要按照事件的发展顺序,或者程序中代码的编写顺序一步一步的进行执行。
面向对象编程(object oriented programming)(OOP):
面向对象编程是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
面向对象的编程,它的主要特点是类,类是独立个体。即先将所有需要执行的功能或者函数拆分,然后进行分类,封装到不同的类中。程序执行的过程中,通过不同的类或类的对象来调用不同的方法来完成程序的运行和执行。
把一个事件执行的执行过程变为了类和类中功能的交互,也就是不同的对象之间的交互,因此我们也把这种称为面向对象程序设计。
举一个例子,可以更好的理解这两种编程方式:
编程实现“将大象放进冰箱”:
面向过程编程:
1.打开冰箱门
2.放入大象
3.关上冰箱门
面向过程编程需要一步一步实现“将大象放进冰箱”这个过程,每一步利用一个函数来完成,这就是面向过程编程。
面向对象编程:
1.对象:大象 动作:被装
2.对象:冰箱 动作:开门,关门
利用面向对象编程,需要利用不同对象之间的方法的交互,对于冰箱这个对象,他并不知道装入的是什么,只知道自己现在需要开门或者关门;而对于大象这个对象,也不知道自己被装入了哪里。
那么这两种编程方式分别有什么优缺点呢?
面向过程编程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展的功能。
面向对象编程:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 。
缺点:性能比面向过程低。