`
凌川__
  • 浏览: 83834 次
  • 性别: 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建模语言、持久存储、分布式计算和客户/服务器...

    Javascript提高

    通过这种方式,程序员能够以更简洁的思维方式去解决问题,从而更好地理解和设计程序逻辑。 #### 四、JavaScript中的数据与代码 ##### 4.1 数据类型 JavaScript是一种弱类型语言,它的数据类型被简化到了最基本的...

    第4章_串.ppt

    常见的串表示方式有定长数组和链式存储两种。定长数组适合于存储长度固定的串,操作效率高,但不灵活;链式存储则允许动态增长,适应性更强,但会增加额外的存储开销。这两种方法各有优缺点,应根据实际需求选择合适...

    From C++ to Objective-C version 1.9

    本书不仅适合C++程序员学习Objective-C,也适用于任何想要了解这两种语言差异及其共通之处的学习者。 #### 二、Objective-C概述 Objective-C是一种面向对象的编程语言,它是在C语言的基础上发展起来的,旨在解决...

    五子棋-课设报告.doc

    五子棋游戏在计算机科学教育中被广泛用作课程设计项目,因为它能够让学生实践面向对象编程的概念,如类的设计、对象的创建和交互,同时也能锻炼其逻辑思维和算法设计能力。通过这个项目,学生可以深入理解C++编程中...

    Ruby实战教程从基础到项目开发.docx

    可以通过以下两种方式之一来完成安装: 1. **官网下载安装**:访问[Ruby官方网站](https://www.ruby-lang.org/),下载适合您操作系统的Ruby安装包并按照指示进行安装。 2. **使用版本管理工具**:推荐使用`rbenv`或...

    2012微策略笔试题

    这不仅测试了应聘者对于这两种语言的掌握程度,还考察了他们解决问题的能力。 ### 3. 字符串处理算法 #### 3.1 题目概述 题目要求判断两个字符串 S1 和 S2 是否为旋转关系。也就是说,是否存在一种方式,通过旋转...

    java课程设计报告-单机版五子棋.doc

    五子棋是一种策略性两人棋类游戏,简单易学,但蕴含丰富的策略空间,适合作为编程练习项目。通过实现五子棋游戏,可以检验学生对游戏逻辑、人机交互、图形用户界面(GUI)设计等方面的掌握程度。 2.1 功能需求 该...

    struts+hibernate分页 模糊查询

    本文将详细介绍如何利用Struts框架结合Hibernate实现这两种功能。 #### 二、Struts与Hibernate概述 - **Struts**:是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架,主要用于构建动态的Web应用...

    Rust学习思维导图.pdf

    - **浮点类型** (`f32, f64`): 提供两种精度的浮点数。 - **字符类型** (`char`): Rust 的字符类型用于存储 Unicode Scalar Value。 - **布尔类型** (`bool`): 布尔类型有两个可能的值 `true` 和 `false`。 - **...

    中国互联网少儿编程教育市场分析2019-易观-201902.pdf

    - **逻辑思维**:指的是能够通过合理、有序的方式来思考问题和解决问题的能力。 - **计算思维**:是指利用计算机科学的基本概念来解决问题、设计系统以及理解人类行为的能力。 互联网少儿编程教育主要是指针对3-18...

    BusinessObjects Designer指南

    - **模式定义**:在数据库中,模式是一种组织表和视图的方式。在Universe中,模式帮助组织和管理表之间的关系。 **3.3 插入表** - **插入方法**:通过拖拽的方式将表添加到Universe中。 **3.4 使用派生表** - **...

    北大青鸟S1阶段项目骑士飞行棋

    其课程体系分为不同的阶段,S1阶段通常指的是初级阶段,面向零基础的学习者,旨在通过项目实践等方式培养学生的编程基础能力和逻辑思维能力。 ### 2. 骑士飞行棋项目概述 #### 2.1 项目目标 该项目是北大青鸟S1...

    scheme and the art of programming

    本节比较了这两种方法的特点,并探讨了它们在数值计算中的应用。 **4.6 分析斐波那契算法** 斐波那契数列是一个经典的递归问题。本节通过分析斐波那契数列的递归实现,展示了递归算法的时间复杂度分析方法。 ####...

Global site tag (gtag.js) - Google Analytics