在编程语言中,面向过程与面向对象的区别在哪?优缺点在哪?

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

在编程语言中,面向过程与面向对象的区别在哪?优缺点在哪?  第1张

好了,作为一个老码农加吃货,用做菜类比,打架了看明白了吗。

在编程语言中,面向过程与面向对象的区别在哪?优缺点在哪?  第2张

转载请说明出处
网资源分享 » 在编程语言中,面向过程与面向对象的区别在哪?优缺点在哪?

发表评论

欢迎 访客 发表评论