对象导论
抽象过程
所有语言都提供抽象机制。汇编语言是对底层机器的轻微抽象,命令式语言是对汇编语言的抽象。程序员要使用这些语言解决问题必须建立起机器模型(解空间)和实际待解决问题(问题空间)的关联,这使得程序难以编写,且维护代价高昂,同时这也产生了“编程方法”行业。
面向对象
面向对象编程方式通过向程序员提供表示问题空间元素的工具从而更近了一步,程序可以通过添加新类型的对象来使自身适应问题,所以面向对象允许根据问题来描述问题。
面向对象基本特征
Alan Key
- 万物皆对象
- 程序是对象的集合
- 每个对象都有自己的由其他对象构成的存储,它们通过发送消息来告知彼此的所要做的
- 每个对象都有类型
- 某一特定类型的所有对象都可以接收同样的消息
Booch
- 对象有状态、行为和标识
抽象数据类型
面向对象程序设计的基本概念之一,类型描述具有相同特性和行为的对象集合。程序员创建某一新类型,然后创建该类型的变量(对象、实例),最后向这些对象发送消息或请求(接口传递/方法调用)实现对其的操控。
$$ Programmer \xRightarrow{declare} Type \xRightarrow{instantiate} Instance \xleftrightarrow{interface} OtherInstance $$
几种OOP语言对该过程的实现
smalltalk
MyClass
Object subclass: #MyClass
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Eric'
Alan Key
Alan Key
每个对象都有一个接口
每个对象昂都只能满足某些在其类型中定义的请求(行为),这写请求由对象的接口(interface)定义。