接触最早的程序设计语言无疑献给了谭浩强版的C语言,绿色封皮,纸质稍薄,柔柔软软,价格也不贵,在国内销量超过1500万册,每一位学习过计算机程序设计过的学生都应该知道这本书,毫无疑问我也是如此。可惜的是当我匆忙的掠过C语言,还没来得及将我那个基于结构化的C语言版的猜数字,24点,扑克牌游戏写完的时候,C++接踵而至。稀里糊涂的学习了一个学期的C++程序设计之后,我只明白的一个知识点——复数的虚部和实部。至今我还不明白为什么电子工业出版社出的那本《面向对象C++程序设计》会用这个用例来贯穿全书,听说能用一个用例能够贯穿全书的书籍要么是百年难遇的经典,要么是“国家十一五规划高等教育指定教材”。

       微笑大学的八分之一的时间让我没能明白面向对象到底是什么东西的时候,我的一句愤慨之词却惊醒了梦中的赴宴。“物以类聚,人以群分”就这样突然的不能自我的理解了面向对象中的类的知识。在联系到一个东西就是印刷。由于家庭的因素,对印刷的工艺比较了解,而且接触的比较多,从“物以类聚,人以群分” 开始,开始从印刷的角度思考类到底是怎么回事?

       回想一下当初,铅字印刷的时候,父亲用一堆铅字在挑选者需要的文字,然后用这些字组成一段话,然后反反复复就有了一篇文字。那时候还很小,当然不能明白怎么回事,这是在一旁帮父亲挑选字,不知道为什么父亲总能是很快的将一篇问题拼成,而我却要忙碌一阵子。

      记忆随着时间的流淌,沉淀下来的是一生都无法名状的默契。现在当然知道怎么回事了。

     铅字印刷:

  • 一篇文字,通过统计获得相同字的个数,不同的字
  • 通过确定的文字,然后从已经刻制好的铅字中挑选字,放在一个板子上通过一定的排版固定起来
  • 有了排好的版就可以通过铅字印刷机进行批量印刷。

     我那时候不明白的其中的道理是应为:铅字是反的,没用发现同样的字已经被父亲分类放在一起。

     现在这种铅字印刷已经很难在见到了。胶印技术的发展,我们很难从中看到一“类”“字”的情况了。

上面的文字就相当于已经刻制好的铅字,下面就是要拼的文字,通过铅字来进行排列。图片中上面的字可以看成是已经在下面文字中提取的文字总类的抽象,通过刻制不同的字不同的个数来拼下面的文字。

无标题

     在《大话设计模式》一书中有这么一句话:“中国四大发明:火药,指南针,造纸术都属于科学技术的进步,而伟大的活着印刷术的发现,却属于思想的成功,面向对象的胜利”。想想看,就算造纸术发明了,我们告别的甲骨文的时代,每一个人都用上了纸,可是如果没用活字印刷术的诞生,书籍对于我们每一个人来讲可能都是稀世珍宝啊,现在想起不免有种不寒而栗的感觉。

     类呢!就是每一个汉字,汉字是形象的,那是对于每一个写出来的汉字讲的,《说文解字》对我们可能遇到的汉字有着特定的注解。当然我们也知道,我们祖先人创造的这些字确实意义非凡,但是对于一个非汉语为母语的人来讲,它就是抽象的。

     类就是一组具有特定属性和功能的事物的抽象,具有该特定属性和功能的事物就是该类的一个对象,该对象是这个类的一个实例化。

     例如:动物,人,茶,咖啡,汽车,食物等等,我们很难对这些事物进行一个形象的描述,但是我们可以讲出一大堆可以阐释这些名词的的具体的东西。

    Java是这样来对这些我们很难描述的事物进行抽象:

    面向对象程序设计基于一种不同的设计哲学,它将重点放在程序中要用到的实体(名称),而不是动作(动词)。采用面向对象设计程序时,会将状态和行为放在一起组成对象。

    类是定义一种新的对象类型的蓝图,描述了对象中数据和行为。可以根据类来创建多个对象(也称实例)。

                    类中用于表示数据的变量称为字段 
                    对象的行为通过类的实例方法来体现。实例方法属于某个对象,可以访问或修改对象内部状态
   
    类中可以定义一个特殊方法:构造函数。构造函数用于创建一个新的对象,并负责初始化新对象的状态。当客户代码使用关键字new来创建对象实例时,会自动调用构造函数。一个类可以有多个 构造函数,如果没有构造函数,Java会提供一个默认构造函数    通常,一个对象可以在不知道其他对象内部工作原理的情况下,与那些对象进行正常的交互。这种特性称为抽象。大多数对象都有保护自己的内部状态不会被外界随便修改,这种特性被称为 封装。要提供封装性,可以将字段定义为private,这样就可以防止其它类直接修改这些属性值。 
    
  1. 对象用两类常用方法:访问器和修改器。访问器可以返回一些对象的信息。例如:String对象 的length方法和Point对象的getX方法和getY方法。修改器,可以修改对象的状态。例如:Pint对象的translate方法。

  2.如果需要更好的打印对象,必须提供该对象自己的toString方法。要让对象可以比较相等性可以提供equals方法。

  3. 关键字this可以表示对象自己的引用。如果一个类有多个构造函数,而且其中一个需要调用 另一个,也需要使用关键子this。

  4.不可变对象的状体在创建之后就不能再被修改。 
  5.一个类应该只表示一种抽象,也只包括这种抽象所必须的数据和行为,并且应该与使用对象
的客户无关。