一、区别简述
面向过程(Procedure Oriented):以过程为核心,强调**事件的流程、顺序,**如:C语言。
面向对象(Object Oriented):以对象为核心,强调**事件的角色、主体,**如:C++、Java。
二、案例
小明起床上班这件事;
从面向过程的角度看就是:1、起床;2、刷牙洗脸;3、开车上班。
从面向对象的角度看就是:主人公:小明;拥有的财产:床、牙刷、车;小明可以做什么:从床上站起来、刷牙、开车。
代码讲解面向过程:
第一步:getUp(){dosomething};
第二步:wash(){dosomething};
第三步:drive(){dosomething};
代码讲解面向对象:
1
2
3
4
5
6
7
8
9
10
11
12 1function Person(bed,toothbruth,car){
2this.bed=bed;
3this.toothbruth=toothbruth;
4this.car=car;
5this.work=function(){
6 getUp();
7 wash();
8 drive();
9 }
10};
11var xiaoMing=new Person('席梦思','黑人','宝马');xiaoming.work();
12
三、通过分析以上案例来具体看两者区别
面向过程:通过分别调用getUp()、wash()、drive()来完成一件事,每一步都是一个过程,整个过程循环渐进。
优点:根据事情的目的分解出过程,然后一步步实施;
对于不复杂的事件执行效率快。
缺点:
只关注眼前事件的实现。
面向对象:先定义一个类别Person,列出属于该类别的属性及功能,new出一个实例xiaoMing,调用实例的方法work,在调用实例的方法中大家可以看到其内部也是一种面向过程的实现,所以面向对象与面向过程并不是互斥的,面向对象内可以有面向过程的设计。
优点:不仅关注眼前的事件实现,也关注未来可能发生的事件,比如要实现‘小明开发送朋友’。只需要在Person类里面加入sendFriend方法就可以。具有
高度的拓展性(体现出对象的多态性)和
复用性(对于类似的人,动作,直接new一个对象传入不同的参数即可),特点是
继承、封装、多肽。
缺点:跟面向过程正好相反,如果只是
单一的功能实现,面向对象的设计思路就显得过于繁琐。