请不要误会,这个不是在将面向对象发展史。只是说说我和几位同事在聊各自学习面向对象的过程。感觉很有意思。特意拿出来与大家分享。
我最近在思考写一个系列的面向对象的文章。找不到思路,于是请了几位同事,请教他们在学习面向对象过程中的想法。下面是他们的说法。
J君:
-
在大学里学的C语言,C++和java是自学的。
-
开始是理论派,视面向对象为神圣不可侵犯。
-
进入公司后学习Delphi,有些地方不是很习惯,比如接口
-
主要工作是做业务模块,经过大量开发过程后,开始感悟面向对象不是一切。
-
接触动态语言(python,ruby)和函数式语言(lisp,haskell),开始批判的眼光看面向对象。
-
不能为了对象而对象,不是所有原则都是对的,关键在于你能得到什么?
H君:
-
动态:先从继承的概念理解
-
静态:慢慢开始用类来组织代码,可以认为是封装的概念
-
关系:和数据库中的表的关系一样,慢慢理解系统是有对象及之间的关系组成的。
-
变化:从设计模式学习开始,慢慢理解系统是变化的,而对象的设计也是针对变化的。
-
思想:面向对象的根本思想,是使用对象这种思维模式去理解整个系统。面向对象,其实是对象面向系统,从而设计对象的独立接口。
S君:
-
大二开始学习面向对象语言C++,对于概念死记硬背
-
理解封装的概念
-
认为对象是IT行业中,用来描述系统的元素,就像几何中的点线面一样。都是一些概念。
-
深入Delphi的VCL,对对象的理解深入
-
感觉对象关系比较简单,程序员看的世界都这么简单,其实有坏处。最好从其他系统中介入。
L君:
-
大学时候没有学习面向对象语言
-
所有思想都是从Delphi开始接受,其实就是进入公司后开始学习的。
-
由于没有面向过程语言的困扰,所有的面向对象思想,都顺其自然地接受,认为天然如此而已。
一开始的时候,我还给我的系列,命名为《Inside Object》,我发现,其实大家很多时候都是从一个Outer到另一个Outer。开玩笑地讲,说不定以后又会想写《Out Of Object》系列了。不过,那是后话了。
观察上面的,有一个共同的情况,那就是面向对象并不是一开始就能接受的。往往需要通过好几年的反复才能深入理解。在S君刚上面向对象课程的时候,他的老师就非常明智地指出,你们一开始不可能理解得了面向对象,现在你们所需要着的是,记住他们!
另外,我们也应该关注到,我们在和人沟通面向对象思想的时候,需要注意到理解的层次。而如果我们愿意帮助别人在这方面成长,是否也要关注学习的阶梯呢?
说是学习史,其实更是想和大家一起讨论一下如何来学习面向对象思想。欢迎大家反馈,说说你们的学习心得。