面对对象细思考

钟山漫步

李笑来一直强调概念的重要性,这两天参加培训,对“面向对象”这个概念进行了深入的思考。

几乎每一本“xx从入门到精通”编程书籍的开头都会说这个概念,基本上都是一翻而过,然后就是从入门到放弃了。

首先,编程是什么?它是在计算机中模拟外部世界的实现,需要把外部世界的逻辑、数据进行抽象。根据需要描述的外部世界的具体情况来选择适当的抽象方式。搬运货物这个事情,如果货物固定、路线固定,就可以简化为一个过程:抓取、运输和卸下。这时候,用C语言这种面向过程的语言来抽象就很合适。但如果每次货物的形状不一、重量不同,路上需要躲避各种障碍,这时候也许面向对象就是一个好选择。

其次,面向过程和面向对象只是思考问题、抽象世界的手段。它们具备不同的适用范围,面向对象更擅长于描述交互复杂、种类多样的世界,因为它具备封装性、继承性、多态性。封装性是指对外只暴露必须的接口,便于维护与调用。继承性是指可以对类似的事物抽取公共属性形成基类,然后这些事物继承于它,可以实现更好的复用。多态性是指继承者可以重写基类的接口和函数的重载,实现了适应性的变异。

最后,使用任何方法都没法避免复杂事物的复杂性。如果一个事物本身是十分复杂的,选用适当的工具可以逐步条分缕析进行描述。但不存在一个神奇的方法让它立即化繁为简,工作量不可少。正因为如此,伴随着面向对象概念,UML实践也需要跟进,各种图形也是不可跳过的步骤。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 推荐深度好文:原文链接,作者:张洋 序言 Perface “佛曰:苦海无涯,回头是岸。——佛教用语” 面向对象(O...
    不知公民阅读 4,151评论 0 4
  • 序言 “佛曰:苦海无涯,回头是岸。——佛教用语” 面向对象(Object-Oriented),这是一条令无数开发人...
    叶小健阅读 7,118评论 4 24
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,917评论 18 399
  • OOA:Object-Oriented Analysis面向对象分析方法 是在一个系统的开发过程中进行了系统业务调...
    楚易枫阅读 9,142评论 0 5
  • 哥哥是陕西人,因为同在成都上过四年学,两校离得很近,上学时觅食的范围有不少重叠处(也可能是他幅员辽阔,谁知道呢),...
    江上数青峰阅读 3,106评论 0 2