最近才读师兄推荐的面向对象的入门书籍——《beginning C# Obeject》,可以说对面向对象还是一知半解。但是我应该勇于把我不成熟的观点呈现出来,以便更好地解决心中疑问。

  我的OO观是什么?换句话说我认为什么是面向对象?“据说”面向对象是一种程序员的世界观。面向对象就是我们通过联系认识事物的一种观点。我们的大脑有时候只记住一个框架,然后自己将细节部分用原有的模型填充(重用..or模板?)。*(想一想,我们记单词的时候,记住它大概模样我们就能够认识这个单词了,但是要我们拼写出来就没那么容易了)*。面向对象的三个必要特征是:1.用户自定义类型;2.继承;3.多态(个人认为多态跟现实生活真的很贴切)

我发现面向对象语言的一些优点,它尽量减少代码数量,尽量减少连锁反应,尽量保护数据。面向对象是联系的世界观,我们中国人是以联系的方式看问题的,比如一个学生student,一个教授professor,出于简化代码的目的,我们抽象出他们的共同特征来形成一个新类person。这就是OO里面的继承,可以帮助程序员省却很多“代码”。

  真实的世界是怎么样的,我们就必须建立合乎情况的模型,然而建模真的不容易。想想以前用C语言编写一个简单的程序,根本不需要画什么流程图,只要顺着思路来就可以了。然而会写C程序并不一定会写好C++这样的面向对象程序(前提是已经学了CC++)。这时候要面对的是现实模型中各种千丝万缕的“联系”,怎样设置域类会比较好?这都需要我们精心设计我们的模型,就是要把其中的东西抽象出来,表现在最需要的方面(抽象是有所侧重的简化,就像我们用名字代替一个人一样)。虽然不需要向书中说的需求说明书“名词排查法”,但还是要有章可循,不能随便建立自己的模型。

  应该说任何在现实世界中有自己对世界认识的模型的人都是值得请教的,有句话叫做“仁者见仁,智者见智”。应该集中其他用户的观点,添加到模型上来,这样显得比较客观。什么时候机器都能建立自己的模型,并转化为代码的时候(智能),我们人类的席位就要让一半给机器了。

  抛的是砖,引的是玉。欢迎赐教!:)

                                        By bibodeng

                                         2011-02-20