`

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

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

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

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

     
0
0
分享到:
评论
1 楼 huangyunbin 2012-06-25  
写的真好,我也看过着本书,理解就没这么深

相关推荐

    Ruby教程面向对象脚本语言

    Ruby语言的发明人是日本人松本行弘(Matsumoto Yukihiro),大家亲切的称呼他"Matz"。 可能会出乎大家的意料,Ruby并不是一种近年来才诞生的语言,它的历史可以追溯到1993年,Ruby之父Matz开始对脚本语言感兴趣。在...

    Ruby 语法. Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。Ruby 可运行于多种...

    Ruby 面向对象程序设计脚本语言 v3.0.0 preview1

    为您提供Ruby 面向对象程序设计脚本语言下载,Ruby是一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议...

    Ruby是一种强大而优雅的编程语言,以其简洁的语法、动态性、面向对象编程和丰富的类库而著称 以下是对Ruby的500字资源介绍:

    Ruby由日本人松本行弘(Yukihiro Matsumoto)于1990年代末期开发,它的设计灵感来源于Perl、Smalltalk、Eiffel、Ada以及Lisp等多种编程语言。Ruby的语法简洁而富有表现力,类似于英语的自然语言风格,使得代码可读性...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、...

    Ruby中文文档.zip

    Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp ...

    Ruby v2.6.0 preview2

    Ruby是一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。Ruby的作者认为Ruby > ...

    Ruby程序设计(简洁清新的教程)

    “Ruby语言的发明人是日本人松本行弘(Matsumoto Yukihiro),大家亲切的称呼他"Matz"。可能会出乎大家的意料,Ruby 并不是一种近年来才诞生的语言,它的历史可以追溯到 1993 年,Ruby之父Matz开始对脚本语言感兴趣。...

    Ruby入门到精通

    Ruby入门到精通,Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel...

    ruby安装包,window安装包

    Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp ...

    ruby-2.6.6.1.rar

    一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。...

    Ruby的概要介绍与分析

    Ruby是一种开源的、面向对象的服务器端脚本语言,于20世纪90年代中期由日本的松本行弘设计并开发。在Ruby社区中,松本也被称为马茨(Matz)。Ruby以其简洁优雅、动态性、面向对象和内置的丰富类库等特点而广受欢迎。 ...

    ruby 2.4.4 X64

    Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp ...

    ruby最新版稳定版

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、...

    ruby-1.9.3-p0-doc-chm

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、...

    Ruby语言教程.docx

    Ruby 是一种面向对象的、解释型的脚本语言,由日本的 Yukihiro Matsumoto(松本行弘)于 1995 年设计并开发。Ruby 的设计哲学强调编程的快乐和简单性,它有着清晰易读的语法,使得编写代码成为一件愉悦的事情。Ruby ...

    Ruby 面向对象编程语言 v2.7.0 rc1

    Ruby是一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。R

    Ruby 面向对象编程语言 v2.7.0 preview3

    Ruby是一种为简单快捷面向对象编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。R

    sjqzhang#webtech#Ruby 教程1

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(/Yukihiro Matsumoto)设计并开发。阅

Global site tag (gtag.js) - Google Analytics