什么是面向对象?为什么要用面向对象编程?

      第一次看到这个标题,我迷茫了。大多数人追溯学习编程的经历,试图查找为什么要用面向对象编程?最后答案也只能是“因为大学老师教的...”、“因为工作上遇到...”等等之类的。

 

       在机缘巧合的情况下,我发现了一本书《大话设计模式》。作者应用极其通俗易懂案例解答了上面的问题。

 

       话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片。眼看就要灭了东吴,统一天下,曹操大悦,于是大宴众文武。在酒席间,曹操诗性大发,不觉吟道:"喝酒唱歌,人生真爽..."。众文武齐呼:”丞相好诗!“于是命印刷工匠刻版印刷,以便流传天下。

 

        版样给曹操一看,曹操感觉不妥,说道”喝与唱,此话过俗,应改为‘对酒当歌’较好!“,于是命工匠重新雕刻。那时候,还没发明活字印刷术,如果样板要改,只能重头雕刻。工匠眼看连夜刻版之工,彻底白费,心中叫苦不迭。只得照办。

 

        版样再次出来请曹操过目,曹操细细一品,觉得还是不好,说”人生真爽太过直接,应该改问语才够意境,因此应改为‘对酒当歌,人生几何?’“,于是....

 

        在活字印刷术还没出现之前,如果版样有改动,只能重新雕刻。而且在印刷完成后,这个样板就失去了它的价值,如果需要其他样板只能重新雕刻。而活字印刷术的出现就大大改善了印刷技术。如上例”喝酒唱歌,人生真爽“,如果用活字印刷,只需要改四个字就可,其余工作都未白做。岂不快哉!!

 

        活字印刷也反应了OOP。当要改动时,只需要改要改的地方,此为 可维护;当这些字用完后,并非就完全没有价值了,它完全可以在后来的印刷中重复使用,此乃 可复用;次诗若要加字,只需另刻字加入即可,这就是  可扩展;字的排列可以横排,也可以竖排,此是   灵活性好。

你可能感兴趣的:(读书笔记)