An introduction to the object

Thinking of Java

The First Chapter

An introduction to the object

  • 语言信息的组织和分类的协定

  • 编程语言的产生始于对机器的模仿

  • 面向对象程序设计(Object-oriented Programming,OOP)


语言信息的组织和分类的协定

“我们之所以将自然界分解,组织成各种概念,并按照其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下......除非赞成这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交流。”---Benjamin Lee Whorf(1897-1941)

编程语言的产生

编程语言的产生始于对机器的模仿。

  • 计算机是头脑的延伸工具

  • 还是一种不同类型的表达媒体

面向对象程序设计(Object-Oriented Programming,OOP)

是这种以计算机为表达媒体的大趋势中的组成部分


抽象过程

本节要点:

  1. 所有编程语言都提供抽象机制

  2. 另一种对机器建模的方式

  3. 面向对象方式像程序员提供的解决问题的方式

  4. 一个成功的面向对象语言所拥有的特点

  5. 更简洁的描述


所有编程语言都提供抽象机制
  • 人们所能够解决的问题的复杂性直接取决于抽象的类型和质量

  1. 类型是指:所抽象的是什么?

    1. 汇编语言:对底层机器的轻微抽象

    2. “命令式”语言(C语言就是其中之一):对汇编语言的抽象

特点:

要求再解决问题时要基于计算机的结构,而不是基于所要解决 的问题的结构来考虑

举例:

问题所在的空间:问题空间-业务

机器所在的空间:解空间-计算机

这些语言的特点就是:建立实际待解决问题再这两个空间的映射


另一种对机器建模的方式
  • 只针对待解决问题建模。

代表性语言:

  1. LISP

  2. APL

  3. PROLOG

解决方式:

  1. 所有问题最终都是列表

  2. 所有问题都是算法形式的

  3. 所有问题都可以转换成决策链

缺点:

限制性强

面向对象方式像程序员提供的解决问题的方式

特点:

  • 不会受限于任何特定类型的问题

  • 可通过添加新类型的对象使自身适用于某个特定问题

重点:

  • 将问题空间中的元素和其在解空间中的表示称为"对象"

归纳:

每个对象有具体的状态,具有操作,用户可以要求对象执行这些操作

Alan Kay提出的成功面向对象语言的五个基本特点:
  • 万物皆为对象

    • 将对象视为奇特的变量,可以存储数据

    • 可以要求它在自身上执行操作

    • 抽取任何待求解问题的任何概念化构件

  • 程序是对象的集合,它们通过发送消息来告知彼此所要做的

    • 消息是对某个特定对象的方法的调用请求

  • 每个对象都有自己的由其他对象所构成的存储

    • 可以通过创建包含现有对象的包的方式来创建新类型的对象

    • 将程序复杂性隐藏在对象的简单性背后

  • 每个对象都拥有其类型

    • 每个对象都是某个类(class)的一个实例(instance)

    • 类之间的区别特性是:

      • "可以发送什么消息给它(给这个类)"

  • 某一特定类型的所有对象都可以接收同样的消息

    • 可替代性(substitutability)---类之间的继承

      • 继承之后创建子类对象可以使用父类的方法

对象的特点
  • 具有状态、行为和标识,每一个对象都可以拥有内部数据

    • 定义了该对象的状态

    • 定义了该对象的方法

  • 每一个对象在内存中都有一个唯一的地址

posted @ 2021-04-17 17:20  俊king  阅读(56)  评论(0)    收藏  举报