小弟学了面向对象也有一年了,接下来是小弟对面向对象,面向过程的一些认识。
初学面向对象的时候。每当拿到一本书老是想去看他是如何介绍面向对象和面向过程的。
但是学了一年多(当然不是说我学了很久,大神们都应该知道,这很短的。只是在这一年的学习中有了一些感悟
,你们可别往别的地方想)
后来慢慢的发现如果有人想用一两句话去划清二者的关系,说明他对这个根本不清楚。
我慢慢的发现二者的轮廓不在那么清晰,相反变得模糊起来。我认为二者本身就是血肉相连的。
比如我认为之所以有面向对象是由于现实世界中存在着分层分类的思想。当然分为三六九等并不总是坏事,这让大家各司其职,从而能够紧密协作。不在需要又一个人协调处理各种事物,否则只能像我所崇拜的偶像孔明先生一样,病死五丈原。
于是有人拿面向对象中代码的处理不需要外界知道,只需要提供外部接口。或者面向对象使得代码更为紧凑,数据封装的更为隐秘。来说明二者的区别。但是我认为这些都不是二者区别的核心体现。或者说当你试图用这些去证明你的论断时就已经陷入误区(这也只是我个人的看法,大家别骂我,你有什么好的认识也可以教我,我也只学了一年多
)。
个人认为面向过程模块化处理也使得代码很紧凑内聚性很强,耦合性很弱。其实我个人更认为面向过程过程化紧凑化思想更是一种向面向对象的逼近,是由于这种过程化的不断深入衍生出面向对象。二者本身没有什么区别,只是一个继承了另一个,然后丰富了自己。
因为作为一个程序员大家应该明白我们不会自己去做一个成品,我们需要团队合作,每人做一些,而在整合的时候无论你是用面向对象写还是面向过程写,大家都不会想去了解你代码的走向。
所以本身就为了能够顺利处理问题然后引发过程化,模块化。然后为了更能实例到现实逻辑引发了类,当然类就由于先代以及今人的努力具有了继承,多态等一系列优点。
但是我想大家都应该承认即便是利用C#什么的,我们也能写出很完美的面向过程的代码。相对于认为二者有很大的区别,我更愿意相信面向对象继承了面向过程。
面向对象使得我们能够用一种更深入人心,更贴近现实的方式去思考我们遇到的问题。让我们以人类的思维方式去思考代码的世界。所以没有理由怀疑如果有了更加先进的思考工作方式,面向对象会进一步发展,当然这就需要我们的努力了。
面向对象即便提供了外部接口,但本质上还是离不开循环,顺序,选择语句的使用。就好像大家在说明C#中指代的时候老喜欢拿函数指针类比,这不就是刺果果的进化吗。
以前我和别人就面向对象以及面向过程做一个辩论的时候(当然现在觉得以前的想法是错的,因为我也在用外部接口来说明二者的区别),我告诉他一段代码在这个函数里调用,我用类的思想,让他成为类的成员函数,然后再调用类的该方法,而你需要用if 或者switch进行判断,当时把对手给吓到了
,而我也庆幸到他没有说"你在类中也肯定是用了if 或者switch来处理,并且我也可以用模块化处理的很好",当时我并没有接着说别的,看起来我好像赢了,但是我发现我已经不能够说服我自己了。后来针对那个"你在类中也肯定是用了if 或者switch来处理,并且我也可以用模块化处理的很好",我告诉自己“既然你已经做到这一步了,那下一步为什么不具体到类呢,你已经在模块化中慢慢的使用类的思想”。那时候好像觉得是彻底的理清了这俩个概念,但是现在想来我所做的回答根本没有意义。二者只是一种更加深入,更进一步面向人类的区别
在此与各位大神们共勉,并且立志学习大神(超越大神)。