专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 行业应用

《松本行弘的程序全世界》之面向对象

发布时间:2010-06-06 18:57:00 文章来源:www.iduyao.cn 采编人员:星星草
《松本行弘的程序世界》之面向对象
      最近读《SICP》把脑细胞搞死大半,还没看完2章,而且看得也是一知半解,实在是受不了了,改读一本浅显点的,不然,自己就要丧失阅读的乐趣了,于是挑了这本《松本行弘的程序世界》刚看完第三章,其第二章“面向对象”写得极为精彩,不得不记录一下收获。
       在第一节里,松本就抛出了程序员的”阿尔法综合症“,作为应该主宰计算机,发掘计算机能力的程序员,正在一步步的沦为计算机的奴隶,我们总是在想如何去迎合计算机的各种限制条件。而我们的目标就是夺回主动权,把尽量多的工作交给计算机,充分发挥计算机的高速计算能力和信息处理能力,完成工作。程序员夺回主动权的武器就是编程语言,如何选择一门最合适的语言完成自己的任务是每个程序员都应该修炼的技能,

面向对象----一切都是为了开发效率。
     
       软件开发中最大的敌人就是复杂性,人脑的记忆力和理解力都是有限的,随着越来越多的数据通过计算机处理,我们面临的计算机系统越来越复杂,另外,计算机的性能提升也越来越快,可是,人脑的性能提升却没有那么快,人脑成为限制开发效率的瓶颈,因此牺牲一下电脑的性能,来换取人脑处理速度的提升,对整个软件开发效率的提升是有积极影响的。
      人们解决复杂性的第一个手段是”结构化编程“,通过把程序控制流程抽象化成顺序,分支,循环三种,从而使得程序不至于过于复杂,并且不影响程序的实现能力。这样就把汇编中的各种goto语句,替换成了switch,for....
      计算机程序=算法+数据,人们通过结构化编程部分解决了算法的复杂性问题,随着处理数据的增加,复杂性仍然不可控制,于是,面向对象承担着对抗数据复杂性的重任诞生了。面向对象通过数据抽象的方式,把数据和其处理方法结合起来成为黑盒子,把复杂性隐蔽其中。另外,通过数据抽象,程序处理的数据就不在是一些单纯的数值,而是人脑比较容易想象的事物,从而把我们的想象过程”具体“化了。
     面向对象的三原则,数据抽象、多态和集成;关于数据抽象,上面一段已经有了说明。而多态性则使程序能够把不同种类的东西当做相同的来处理。这样对程序有三个好处,一是各种数据统一处理,程序员只需关注处理什么(What),而不用关心怎么处理(How);二是程序能够根据对象的不同选择最合适的方法。三是增强了程序的扩展性。继承有2种继承,一是对规格的继承,即我需要对外部提供什行为,java中的这类继承就是指实现接口;另一个是实现的继承,即父类中都用了哪些数据结构和算法。java中的extends就是这类继承。

     关于面向对象有2大误解,一是对象是现实世界中具体物体的反应,另一个是多重继承都是不好的。面向对象的目的就是通过数据抽象以应对程序的复杂性,因此,面向对象中的每一个对象都是为了完成任务而存在的,它们的存在只是数据和算法结构化的需要,并不是现实世界具体物体的反应,即使在程序中有Cat,Dog之类看是现实世界物体的对象,其也只是这个物体一个侧面的抽象概念而已,我们不需要把现实世界物体的所有属性都考虑到程序中去,程序只处理抽象数据;多重继承给大家不好的观感主要是有2个原因,一是其使得类的继承层次复杂化,这可以通过巧妙和适当的设计避免这个问题,第二个是因为继承功能名字重复。但是在数据抽象的过程中,不可避免的存在多重继承的现象,一位父亲同时是一名程序员。因此,在各类面向对象的语言中,必需以某种形式支持多重继承,Java通过Implement,Ruby通过Mix-in。

     
1 楼 huangyunbin 昨天  
写的真好,我也看过着本书,理解就没这么深
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 《松本行弘的程序全世界》之面向对象

    《松本行弘的程序世界》之面向对象 最近读《SICP》把脑细胞搞死大半,还没看完2章,而且看得也是一知半解,实在是受不了了,...

  • GroovyHelp 3.2.7 GA公布

    GroovyHelp 3.2.7 GA发布 GroovyHelp简介   GroovyHelp是一款Javadoc及Groovydoc搜索查阅软件,它能够帮助Java开发人员以...

  • Velocity在Roller中的使用

    Velocity在Roller中的应用 Velocity是java世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。   所...

  • Rpc远程调用框架的设计与兑现(2)

    Rpc远程调用框架的设计与实现(2) 接上: 3   基于Json的前后端数据交互 3.1   轻量级的数据交换形式 3.1.1    什么是Jso...

  • excel 单元格的锁定 以及 JXL的兑现方式

    excel 单元格的锁定 以及 JXL的实现方式 在使用excel表格时,有些列是不希望用户可以修改的,诸如审计日志里面确定的部分,而审计...

  • 仓秤跟散料秤:java连接opc Server

    仓秤和散料秤:java连接opc Server 这三篇都是之前写好的,一直没发。 这次一起发出来吧。   java连接硬件很痛苦,特别是对我这...

  • Rpc远程调用框架的设计与兑现(1)

    Rpc远程调用框架的设计与实现(1) Rpc远程调用框架的设计与实现 1     Rpc远程调用框架设计概述 1.1   研究背景 1.1.1...

  • 集合中的线程安全有关问题

    集合中的线程安全问题 一、why? Java中常用的集合框架推荐使用的三个实现:HashSet\ArrayList\HashMap都是线程不安全的.如...

  • Java定时任务的兑现

    Java定时任务的实现 本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。 MyListener: ...

  • java中log日记的使用

    java中log日志的使用 一、介绍  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控...

热门推荐: