作为一个使用java编程了三四年的职业程序员,我到目前为止,对于面向对象这四个字的理解,似乎还只停留在毕业那一刻。面向对象,区别面向过程,是把世界抽象成一个个对象。它的特点是继承,多态。我想,很多同行,应该都和我一样只有这点看法。毕竟这些浅薄的看法并不影响我们编写商业软件,不影响我们赚钱养家。是嘛?从一时看,确实可以勉强蒙混过去。但是随着时间的延伸,不能发挥出面向对象特性的软件,大多甚至可以说全部,都会被抛在历史的长流中。考虑至此,我,作为一个以面向对象语言为生的java程序员,不由得自怨自艾,也自我反省。如果想把java这个面向对象的语言真正用好,真正的对的起自己专业程序员的头衔,怎么不能对面向对象有更深的理解呢?你说呢?同行。
“面向对象的精髓在抽象,面向对象的困难在抽象,面向对象的成功在于成功的抽象,面向对象的失败在于失败的抽象。正所谓成也抽象,败也抽象。”-----来自《大象:Thinking in UML》
程序员工作的本质是什么?我现在认为是要建立计算机和现实世界的联系,是应该从二进制出发,构建出一个可运行的程序,满足现实世界的真实需求。那么面向对象就是比面向过程更进一步实现这一目标的方法论。老生常谈,面向对象,需要把世界万物抽象成一个个对象,进行继承,封装,然后实现多态,组合。再把这些设计好的对象以一定流程和关系串联起来,从而在计算空间映射一个真实的世界。面向对象编程,有个众所周知的目标,高内聚,低耦合。这个目标的前提就是,你要把世界看成一个个小对象组成,这个目标的实现途径,是你要识别出相近的对象,和离得比较远的对象,然后把他们排列组合成一个自成体系的小系统,多个小系统最终成为我们要实现的大系统。理想的状态下,这个大系统应该是高内聚和低耦合的。所以它才有弹性和较高的容错率。用一个更时髦的话,它是领域建模的体现。
网友评论