• Java工程师
  • Python工程师
  • 大数据开发工程师
  • 软件测试工程师
  • Web前端工程师
  • 安卓工程师

编程开发中面向对象和面向过程有什么区别?

2018年01月05日 11:34供稿中心:兆隆教育

摘要: 对于零基础的初学者而言,想要学习Java软件开发,那么势必会接触到面向对象编程,那么新手应该如何理解面向对象编程呢?

先说区别。面向过程,强调解决问题的方法和步骤,但仅仅依靠“方法和步骤”很难去描述这个多彩的世界。而面向对象,把这个世界看成是由不同分类下的一个个对象及它们之间的关系组成的。至于优缺点,一个强于描述过程,一个强于描述不同事物的特征。不过,这两者通常是相互依存的关系,因为他们二者都无法单独去描述这个世界。

面相过程是变量与方法的分离,面相对象是变量与方法的结合。例如,一个厨师炒菜,油盐酱醋,时间,食材,火候之类的都是变量,煎炸炒蒸之类的烹饪都是方法。那我们分别用二者来描述厨师做到的过程。
首先是面相过程,它十分详细地描述一个厨师怎样食材变成菜的过程,比如先切菜,这样调用了切菜函数,有参数切菜数量,切菜大小,形状等,然后煎,又有各种参数,比如时间,火候,以后炸,放调料,一个完整的做菜过程,十分符合思维逻辑,但是问题了来了,每道菜的过程都不一样,那么每道菜都对应了这样的过程,每个厨师的手法和爱好不一样,那么每个厨师每道菜都有这样一个过程,瞬间多了好多代码是不是,然后可能顾客口味不一样,菜品风格变了,比如有些人不吃油炸的,那么每道菜的过程又要改变了,一旦厨师多了,菜的种类多了,顾客要求多了,写代码就变成了一件非常麻烦的事情。
这个时候,出现了面相对象。我们不妨这么想,我们把每个厨师看成一个独立的对象,那么我们把这个厨师数字化,用一堆数据,也就是变量是描述他,身高,体重,年龄等等,把油盐酱醋之类的变量也和这个人绑定。然后我们把厨师做的事情都写成方法,吃饭睡觉,包括他做饭的方法,这样一来方法也和这人绑定了,所以此时我们做到了变量与方法的结合。
我们知道,每个厨师都可以用类似方法描述,这样一来我们可以把厨师这一类人都用相同的变量和方法进行描述,这些被我们抽象出来的变量与方法的集合就叫做一个类,当我们初始化一个类之后,比如,定义了身高体重,兴趣爱好,油盐酱醋用量,加上一堆生活和做饭的方法,这个过程就叫做实例化。实例化一个厨师类之后我们就拥有了一个厨师实例,然后就可以开始调用这个厨师的方法了,比如青椒肉丝,切菜,炒菜,放调料,出锅,都只需要调用类中的方法,只是根据菜品不同调用的方法和参数不一样,而且菜谱变了我换一下方法就行,拿到任何地方都可以用,而且可以随时实例化一个新厨师应对不同的顾客。现在我总结一下,面相对象只是一个将变量和方法抽象到一起,形成统一描述的类的方法,具体过程还是面相过程的,不过它可以提高代码的可重用性,例如,中餐菜谱换到西方就不行了,就要都改进,也就是改代码,很麻烦,但是面相对象很简单,换个厨师就行,也就是怎么还的问题你都不需要考虑,设计这个类的人都帮你想好了,这就是面相对象的一大特征,封装。然后这个厨师退休了,年轻厨师学会他的所有技术,还自创了很多技术,这样一来,不需要年轻厨师重新研究之前的做菜技术,直接拿老厨师的来用就可以了,这叫做继承,也是面向对象三大特征之一。最后,对同一道菜,有不同的做法,年轻厨师虽然继承了老厨师,但是某些菜他有自己的做法,于是他看客人的喜好,客人喜欢哪种他用哪种,这叫多态,也是面向对象三大特征之一。

陕ICP备11012603号 Copyright  ©  2001-2018隶属于西安兆隆计算机培训学校版权所有