面向对象和面向过程的区别及优劣对比详解
以前上面向对象这门课的时候,我是没有特别注意这些。
但现在发现面向对象和面向过程的设计思想是很重要的
1.面向对象和面向过程有什么区别?
面向对象程序设计和面向过程程序设计的区别实际就是解决问题的方式不同。
先解释面向过程,你得先分析出解决问题的步骤,然后用函数把这些步骤一步一步地实现,解决的时候就是一个一个函数地调用。
面向对象,首先你需要知道对象的概念。
对象,就是类中某个具体的实例,比如人类张三,李四就是类的某个对象,他们有自己独特的个性。
面向对象,看名字它是注重对象的。当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。
不懂别急,举个例子你就明白了,不懂都难^_^
面临的问题: 洗衣机里面放有脏衣服,怎么洗干净?
面向过程:
1 执行加洗衣粉方法;
2.执行放洗涤剂方法
3执行加水方法;
5 执行放衣服,洗衣服方法;
6执行清洗方法;
7. 执行烘干方法;
———-解决问题 拆成一个个方法,是没有对象去调用的。 通过一个个方法的执行解决问题。
面向对象: 我先搞个洗衣机对象和人对象
洗衣机: 加入一些属性和方法 洗衣服方法 清洗方法 烘干方法 人:加洗衣粉方法 加水方法
然后 人.加洗衣粉 人.加水 洗衣机.洗衣服 洗衣机.清洗 洗衣机.烘干
———-同样解决问题 先抽象出对象,然后用对象执行方法的方式解决问题。
关于两者的优缺点,根据你的需要来判断。并不能一概而论
网上很多关于二者优缺点,我认为最形象的解释是蛋炒饭和盖浇饭的比较
蛋炒饭:
盖浇饭:
蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。
到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。
盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
需要解释一下耦合度,以我的理解可能不是那么准确
说人话:其实就是事物的相关性
低耦合,就是说事物相关性低,其中某一个的改变,并不会使另外的有很大的改变,独立性高