比如我们需要用程序装配一辆车行驶,分别使用面向过程和面向对象的方式来编写:
①面向过程:
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。他的缺点在于不易维护,不易复用,不易拓展,比如我们需要换一种发动机,又或者换一种车来组装,就需要修改之前写过的源码。
②面向对象:
使用面向对象的编程思想我们将车抽象为了一个Car类,这个类中有chassis,wheel,body,engine, transmissionCase这四个属性,并且提供了这些属性的get/set方法与drive方法。看上去代码比面向过程的代码要多出不少,但是易于维护,拓展和修改。如果我们需要换一种轮胎只需要调用setmWheel()就可以了,完全不需要动Car类中的代码。如果我们需要组装特定种类的车,我们还可以创建一个Car类的子类,如果是面向过程的话就需要重新写一遍所有代码来创建新的车子,所用的代码比面向对象要多得多。
面向对象的优势:
面向对象让程序维护起来简单;由于继承、封装、多态的特性,以及高内聚、低耦合的系统结构,使得系统更加灵活、更容易扩展;在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类,比较符合人类习惯的思维哦方式,提高了软件开发的效率。
那为什么面向过程还没有被淘汰呢?
类调用时需要实例化,开销比较大,比较消耗资源,因此从效率上来说面向过程要比面向对象的性能要高。单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。