`

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

 
阅读更多
      最近读《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脚本语言介绍及基础语法.zip

    Ruby 是一种面向对象的脚本语言,由松本行弘(Yukihiro Matsumoto,通常被称为Matz)于1995年开发。Ruby 以简洁明了的语法和强大的功能而闻名,它被设计为易于编程和易于阅读。 Ruby 是一种面向对象的脚本语言,由...

    Ruby教程面向对象脚本语言

    Ruby教程面向对象脚本语言,是由日本的松本行弘(Matsumoto Yukihiro,又称Matz)在1993年创建的一种高级程序设计语言。Matz出于对脚本语言的兴趣,尤其是面向对象编程的追求,决定设计一种新的语言,因为他发现Perl...

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

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

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

    它最初由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto,社区中常被称为 Matz)在 20 世纪 90 年代中期设计并开发。 - **特点**: - **面向对象**:Ruby 是一种纯粹的面向对象语言,几乎所有的数据类型都...

    Ruby教程.docRuby语言概述pdf

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

    ruby-1.8.7-p302.tar.gz

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

    Ruby语言介绍及其特点

    Ruby是一种为简单快捷面向对象编程而创建的脚本语言,由日本人松本行弘(Yukihiro Matsumoto,外号matz)开发。Ruby语言的创建背景体现了松本行弘对于编程语言设计理念的独特见解。他认为以往编程语言的开发者过于...

    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入门到精通,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是一种为简单快捷面向对象编程而创建的脚本语言,由日本人松本行弘(まつもとゆきひろ,英译:Yukihiro Matsumoto,外号matz)开发,遵守GPL协议和Ruby License。Ruby的作者认为Ruby > (Smalltalk + Perl) / 2,...

    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、...

    Q690452提到的3本书

    这三本书分别是《松本行弘的程序世界》、《七周七语言:理解多种编程范型》以及《深入理解C#(第三版)》。接下来,我们将对这三本书的内容进行详细的解读和探讨。 首先,《松本行弘的程序世界》是由日本著名程序员...

    ruby-1.9.3-p0-doc-chm

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

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

    松本行弘在设计Ruby时融合了多种语言的优点,如**Perl**的实用性、**Smalltalk**的对象模型、**Eiffel**的语言结构、**Ada**的严谨性和**Lisp**的函数式编程特性。这种多元化的灵感来源赋予了Ruby独特的魅力,使其...

    Ruby程序设计(中文教程)

    Ruby语言起源于20世纪90年代末,由日本人松本行弘(Yukihiro Matsumoto)设计并开发。它的历史可以追溯到1995年,作为一种动态类型的脚本语言,Ruby旨在提高开发者的生产力和代码的可读性。Ruby的名字来源于一种红...

    探索Ruby中的块(Block):掌握流控制的瑞士军刀

    它由日本的开发者松本行弘(Yukihiro "Matz" Matsumoto)在1995年创建。Ruby语言的设计目标是简单、自然,同时具有强大的功能。Ruby语言受到了Perl、Smalltalk、Eiffel、Ada以及Lisp等语言的启发。 Ruby的一些特点...

Global site tag (gtag.js) - Google Analytics