初学编程语言,我们知道:C语言是面向过程的,C++是一半面向过程,一半面向对象,java是面向对象的,那么”面向对象“和”面向过程“这两个概念的根本区别是啥呢?
面向过程和面向对象的枯燥定义
========================
以下定义看一遍留点印象就好:
面向过程:
面向过程注重实现这个功能的步骤,第一步干什么、第二步干什么……,也注重实现这个功能的因果关系,因为A,所以B……
面向对象:
面向对象就是将现实世界分割成不同的单元,然后每一个单元都实现成对象,再给个环境驱动一下,让各个对象之间协作起来形成一个系统。举个栗子,这里有对象”张三“、”对象香烟“、对象”打火机“、对象“吸烟的场所”,组装这四个对象,就可以模拟一个人抽烟的场景。
形象比喻案例一
========================
以蛋炒饭和盖饭为例,蛋炒饭就是面向过程,盖饭就是面向对象,且看下面的分析。
蛋炒饭,鸡蛋和米完全混在一起,若我要吃蛋炒饭,但在老板做好端上来的时候我说我只要米饭不要蛋,那么这个时候就只能把鸡蛋一粒粒挑出来。(类比客户在已交付的软件里提出新需求,此时软件的扩展就是一场噩梦)
再来看看鱼香肉丝盖饭,鱼香肉丝是一个独立的对象,饭是一个独立的对象,两个对象准备好以后,加动作”盖“(即上面面向对象概念中所说的驱动),两个对象就组合在一起了。此时客户提出要吃西红柿鸡蛋盖饭,就很好完成,将对象”鱼香肉丝“换成对象”西红柿鸡蛋“即可。对应在程序开发中即”扩展性好“。
形象比喻案例二
========================
如果我们分别采用面向过程和面向对象的思路去制造一台计算机,那会有何不同呢?
首先来看以面向过程的方式来制造这台计算机—>制造出了一台融合在一起的、没有零部件的、实心的一体机,任一”部位“出问题,整个计算机都有可能不能使用,而要修这个部位,也是不容易修(耦合性高)。
再来看以面向对象的过程制造—>内存条是一个对象、主板、CPU、硬盘分别是一个个对象,组装这些对象,形成一台计算机,若其中CPU损坏了,则直接拆下来更换一个新的即可(耦合性低)。
耦合性这块的概念,以”集成显卡“和”独立显卡“来理解可能更容易想明白。
面向过程和面向对象的优缺点
========================
看完上面两个形象的栗子,相信总结二者的优缺点已不再困难。
面向过程:
缺点是代码之间耦合度太高,扩展力差。优点是对于小型项目,采用面向过程来开发,效率较高,不需要像面向对象一样进行前期的对象提取、模型的建立等等,进工地就可以直接开始干活儿。
面向对象:
优点是代码之间耦合度低,扩展能力强,如鱼香肉丝盖饭换西红柿鸡蛋盖饭,模拟抽烟场景中,对象”打火机“换对象”钻木取火“就是模拟钻木取火抽烟的场景。额缺点自然就是上面说的面向过程的优点了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/146211.html