抽象过程
将问题空间中的元素及其在解空间中的表示称为“对象”
面向对象思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。
1)万物皆为对象
将对象视为奇特的变量,它可以存储数据,并在自身上执行操作。理论上,可以抽取待解决问题的任何概念化构件,将其表示为诶程序中的对象。
2)程序是对象的集合,它们通过发送消息来告知彼此所要做的
要想请求一个对象,就必须对该对象发送一条消息。更具体地说,可以把消息想象为对某个特定对象的方法的调用请求。
3)每个对象都有自己的由其他对象所构成的存储
即,可以通过创建包含现有对象的包的方式来创建新类型的对象。因此,可以再程序中构建复杂的体系,同时将其复杂性隐藏在对象的简单性背后。
4)每个对象都拥有其类型
按照通用的说法,“每个对象都是某个类(class)的一个实例(instance)”,每个类最重要的区别于其他类的特性就是“可以发送什么样的消息给它”。
5)某一特定类型的所有对象都可以接收同样的消息
可替代性(substitutability)
对象具有状态、行为和标识。
即每一个对象都可以拥有内部数据(它们给出了该对象的状态)和方法(它们产生行为),并且每一个对象都可以唯一地与其他对象区分开来,具体来说,就是每一个对象在内存中都有一个唯一的地址。