我理解的面向对象-1

时间:2022-04-18 17:21:21

    其实我自己看完面向对象那一本书已经一段时间了,但是我看到后面感觉自己前面学得有点迷糊,而且我看到很多地方都在强调对于面向对象的理解,于是我就下载视频,决定把前面的知识重新学一遍,前两天看完的面向对象的讲解之后,觉得我以前的理解真的很浅显。

    以前自己的理解就是单纯地认为面向对象就是一个思考方式的改变,就是把一件事进行打包的处理,即面向过程的C语言运用函数处理一些事情,由解决的主函数调用一个个方法进行解决(我学C学的地步仅仅只是会做课程设计,并没有很深入的学习);而面向对象的java语言就是将这些方法打包到一个类之中,思维方式并没有改变什么。

    而在前两天看完视频之后,我觉得应该这样理解面向对象:1.面向对象相比于面向过程,面向对象更加符合人们的思考方式;2.面向对象是一个复杂的问题变得更加地直观更加地简单;3.面向对象的思考方式使在面向过程中的执行者变成了面向对象中的指挥者。

    第一点,我觉得面向过程到面向对象的思维转换很像我们人的思维转换。假想一下,在100年之前,假使我们家里面一个水管坏了,我们想到的就是自己去维修,这就是一个面向过程的思考方式,因为我们自己去实现这个过程;再往前推,假使在人们部落刚刚形成之前,假使人想要吃肉,他要先考虑怎样抓捕动物,然后再思考该怎样处理肉,这也是一个面向过程,因为我们本身在实现这个过程。再把这两个问题看到如今在看待,第一个水管坏了,你直接找物业,你本身并没有参与水管维修这个过程,你只是提供了问题,发出了指令,但是解决问题与你并没有任何联系。再看看吃肉的问题,你实现的方法是直接点餐,你要的只是问题的结果,没有参与问题的过程,即制作菜的过程。

    第二点,这一点在第一点的基础上是非常好理解的,以维修水管为例,你要做的只是提供一个问题,之后的一系列动作全与你无关,你只要等待结果即可。这点和面向过程中自己去实现具体操作无疑使问题简单了很多。况且,面向过程也需要提出问题,提出问题的工作量比解决问题的工作量少的并不是一点两点。

    第三点,其实这一点是前面两点详细说明,因为前面两点已经说明了,面向对象的思考方式是你在指挥具体的人做事情。例如维修水管你指挥物业去修水管,吃肉你指挥服务员点餐,服务员指挥厨师做饭。

    上面的理解很大的一部分是基于现实的理解,但是基于代码的世界中的理解我发现他们好像很大的相同之处,下面来写一下自己基于代码世界中的理解。

    (刚刚初学java没多久)

    在代码中,基于过程与基于对象一个很大的区别我觉得是基于对象比基于过程的思想更加具有封装性。因为基于对象的思想要求所写出来的对象都是以一个对象为基准,一个对象解决一个问题,所有的解决方式的过程都是封装在这个对象的内部,在外或者在外的程序是难以引用或者知晓实现的过程的,而面向过程由于是基于方法的实现,很多的方法与主函数之间的关系仅仅是引用于被引用,但是并没有实现捆绑,即他们之间的实现过程是无法被隐藏的。

    还有一点,基于对象的源代码更加适合于阅读,也更加明了,因为一个区域内存在的所有源代码基本上都是解决同一个问题的,但是基于过程的源代码就有比较散乱,这点不适合阅读源代码。

    以上就是现在的理解,感觉自己在面对与源代码这一点认识的还是处于最原始的状态。

    万物皆对象,我感觉这句话好像很容易相同,但是我感觉这句话同样也很矛盾。

    希望以后可以理解这句话!