The First Chapter
An introduction to the object
语言信息的组织和分类的协定
编程语言的产生始于对机器的模仿
面向对象程序设计(Object-oriented Programming,OOP)
语言信息的组织和分类的协定
“我们之所以将自然界分解,组织成各种概念,并按照其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下......除非赞成这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交流。”---Benjamin Lee Whorf(1897-1941)
编程语言的产生
编程语言的产生始于对机器的模仿。
-
计算机是头脑的延伸工具
-
还是一种不同类型的表达媒体
面向对象程序设计(Object-Oriented Programming,OOP)
是这种以计算机为表达媒体的大趋势中的组成部分
抽象过程
本节要点:
所有编程语言都提供抽象机制
另一种对机器建模的方式
面向对象方式像程序员提供的解决问题的方式
一个成功的面向对象语言所拥有的特点
更简洁的描述
所有编程语言都提供抽象机制
-
人们所能够解决的问题的复杂性直接取决于抽象的类型和质量
-
类型是指:所抽象的是什么?
-
汇编语言:对底层机器的轻微抽象
-
“命令式”语言(C语言就是其中之一):对汇编语言的抽象
-
特点:
要求再解决问题时要基于计算机的结构,而不是基于所要解决 的问题的结构来考虑
举例:
问题所在的空间:问题空间-业务
机器所在的空间:解空间-计算机
这些语言的特点就是:建立实际待解决问题再这两个空间的映射
另一种对机器建模的方式
-
只针对待解决问题建模。
代表性语言:
-
LISP
-
APL
-
PROLOG
解决方式:
-
所有问题最终都是列表
-
所有问题都是算法形式的
-
所有问题都可以转换成决策链
缺点:
限制性强
面向对象方式像程序员提供的解决问题的方式
特点:
-
不会受限于任何特定类型的问题
-
可通过添加新类型的对象使自身适用于某个特定问题
重点:
-
将问题空间中的元素和其在解空间中的表示称为"对象"
归纳:
每个对象有具体的状态,具有操作,用户可以要求对象执行这些操作
Alan Kay提出的成功面向对象语言的五个基本特点:
-
万物皆为对象
-
将对象视为奇特的变量,可以存储数据
-
可以要求它在自身上执行操作
-
抽取任何待求解问题的任何概念化构件
-
-
程序是对象的集合,它们通过发送消息来告知彼此所要做的
-
消息是对某个特定对象的方法的调用请求
-
-
每个对象都有自己的由其他对象所构成的存储
-
可以通过创建包含现有对象的包的方式来创建新类型的对象
-
将程序复杂性隐藏在对象的简单性背后
-
-
每个对象都拥有其类型
-
每个对象都是某个类(class)的一个实例(instance)
-
类之间的区别特性是:
-
"可以发送什么消息给它(给这个类)"
-
-
-
某一特定类型的所有对象都可以接收同样的消息
-
可替代性(substitutability)---类之间的继承
-
继承之后创建子类对象可以使用父类的方法
-
-
对象的特点
-
具有状态、行为和标识,每一个对象都可以拥有内部数据
-
定义了该对象的状态
-
定义了该对象的方法
-
-