`
凌川__
  • 浏览: 82411 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

4.1 两种思维方式 4.2 对象

阅读更多

4.1  两种思维方式
人们起初使用计算机来进行科学计算,比如说:计算级数和,计算积分值。那时,程序要处理的都是带小数点的数字。后来,人们要处理文本,有点麻烦,好在文字也可以转换成数字。这两个时期,编写程序的思想是:一个步骤,一个步骤地告诉计算机如何做,做完一大段步骤,就算完成了一个功能模块。
再后来,人们希望计算机能应用在管理中。比如说:机场管理。一个大都市的民航机场,每天有上千架飞机起落,乘客上万,行李、包裹无数,乘务、地勤人员上千,安检信息上万,气象信息上万……这样百万、千万的数据要及时处理,靠旧的编程思维是无法实现的。
为了应付越来越复杂的管理应用,人们转变编写程序的思想:
(1). 将一架飞机看作飞机类事物的一个具体实例,将一座塔台看作塔台类事物的一个具体实例,将一名乘客看作乘客类事物的一个具体实例……
(2). 一个具体实例有变化的时候,就自己主动传递消息给相关联的具体实例;
(3). 相关联的具体实例收到消息后,根据之前定好的策略,作出应有的反应(回应,转发……)。
初期的编程思想是:以“如何做”为指导来编写代码。这时期的编程语言叫过程语言,提倡结构化地设计程序代码。代表语言是FORTRAN和C。
现在的编程思想是:以“谁将被影响”为指导来编写代码。叫面向对象的编程语言,以类为模块,以消息来驱动程序的执行。代表语言是C++ 和Java。
 

4.2  对象
英文Object ,计算机业界现在已经习惯翻译为“对象”;口语化一些,中文的意思就是“事物”。
“事物”这个词有点抽象,你当然可以具体到人,或是具体到交通工具。人可以再具体一些,学生?工人?如果是学生,叫什么名字?
 
每个事物都有一些特点,人有身高,体重,在程序中我们称之为属性;还可以有一些行为,人要吃饭,睡觉,在程序中我们称之为方法。
学生是人,自然有身高,体重,自然要吃饭,睡觉。如果你把人看作一类事物,把学生看作一类事物;那么,人是父类型,学生是子类型。子类型从父类型自然得到属性、方法,我们称之为继承。
学生要考试,工人不要;工人拿工资,学生不拿(一般而言)。同一个父类,不同的子类有不同的行为和状态,我们称之为多态。
人们编写程序,也就是在描述一类事物的特点(属性)、行为(方法)。有时候是模拟描述自然界中已有的一类事物,还有时候是创造地描述自然界中没有的一类事物。
当人们决定了代码世界中一类事物的属性、方法,在代码世界中,这类事物的属性、方法只有定义代码的人知道,其它的类是不知道的。这就是封装。
封装、继承、多态是面向对象编程的三个本质特征。
(人们可以决定代码世界中一类事物的属性、方法,当然可以修改代码世界中一类事物的属性、方法,而且可以委托其它的类来修改,甚至删除。这是动态语言超越静态语言之处。由于代码是一直运行着,与其它代码一直交互着,修改、删除应该慎重,避免产生副作用)。

完整阅读,请看我写的 Ruby语言中文教程all in one    
 


分享到:
评论

相关推荐

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器...

    精通QTP——自动化测试技术领航

    1.4.1 QTP的两种视图及思维转换 70 1.4.2 总结 74 1.5 QTP精华—对象库(上)之基础攻略篇 75 1.5.1 引言 76 1.5.2 对象库的出现改写了软件测试历史 76 1.5.3 一个简单的实例介绍对象库原理、机制及操作流程 ...

    编程高手箴言(推荐)

    1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086寄存器组成 25 2.2.3 ...

    编程高手箴言(中文完整版)(13M)

    1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086寄存器组成 25 2.2.3 ...

    Ruby语言入门教程

    4.1 两种思维方式..................................................................................................................31 4.2 对象..............................................................

    C++MFC教程

    这样做的目的主要是增加对语言的熟悉程度,同时也训练自己的思维和熟悉一些在编程中常犯的错误。更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助,特别是利用MFC进行开发的朋友对C++一定...

    C++标准程序库STL的架构

    1.4 三种境界 1 1.5 STL特点 1 1.6 资源 1 1.7 学习方法 1 2 语言特性 3 2.1 模板 3 2.2 typename 3 2.3 模板类的拷贝构造函数 3 2.4 基本类型数据初始化 3 2.5 异常处理 4 2.6 命名空间 4 2.7 using声明 4 2.8 ...

    计算机二级公共基础知识

    在下列两种情况下也只能采用顺序查找: ①如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找; ②即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。 1.7.2 二分法查找 二分法...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    4.1 以面向集合的思维方式来思考 95 4.1.1 从面向过程转变为基于集合的思维方式 96 4.1.2 面向过程vs.基于集合的思维方式:一个例子 100 4.2 集合运算 102 4.2.1 UNION和UNION ALL 103 4.2.2 MINUS 106 4.2.3...

    Reversing:逆向工程揭密

    这时候,我逐渐明白这是一种威力强大的技术,因为这意味着不管我有什么样的有关要处理软件的问题,我都可以非常容易地找到答案,即使我没有看过任何相关的文献资料或者正在处理的程序的源代码。本书就是要为每一个对...

Global site tag (gtag.js) - Google Analytics