面向对象:以对象为核心,强调事件的角色、主体。面向对象是把构成问题的事务分解成各个对象,通过事件或者消息来驱动对象来执行事物的处理。
优点:解决了程序的扩展性、维护性、复用性。使软件工程更加的模块化,实现更低的耦合和更高的内聚。
缺点:对开发人员的抽象能力要有一定的要求,对初学者来说不易接受、难学,且可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果。
例子:我们去饭店点菜就行了,根本不需要知道厨师怎么做菜。
面向过程:以过程为核心,强调事件的流程、顺序。面向过程通常是要分析出解决问题所需要的步骤,以及完成步骤的流程,然后用函数方法把这些个步骤一个个实现,使用的时候一个一个调用,是一种结构化的自上而下的程序设计方法。
优点:极大的降低了写程序代码的复杂度,只要任务明确,顺着一个清晰的流程,就能高效率的堆叠代码实现功能。
缺点:往往一套流程就是用来解决个别问题,代码实在不好用来扩展,功能进行扩展的话非常麻烦,牵一发而动全身,不好进行代码的复用。
例子:比如我们今天想吃一个菜,用面向过程来解释一下,我们要去菜市场挑选菜、然后买菜、到后面炒菜,再吃上菜。这都是一套一套的流程,按照这一套流程下来,我们就能吃上自己想吃的菜。
总结:面向对象是高度抽象事物,面向过程则为自顶向下的结构化编程。