1. 万物皆对象:对象可以被认为是一个奇特的变量,它能存放数据,而且可以对它提出请求,要求它执行对它自身的运算。
理论上,我们可以在需要解决的问题中取出任意概念性的成分,把它表示为程序中的对象。
2. 程序就是一组对象,对象之间通过发送消息互相通知做什么:更具体地讲,可以将消息看作是对于调用某个特定对象所属函数的请求。
接口就是规定了对象的客户所允许发出的所有请求。
3. 每个对象都拥有由其他对象所构成的存储:通过包含已经存在的对象创造新对象,可以构造出更复杂的程序,且将程序的复杂性隐藏在对象的简明性后面。
4. 每个对象都拥有其类型:每个对象都是某个类的实例。
5. 某一特定类型的所有对象都可以接受同样的消息:一个派生的对象能接收基类对象的消息。
因此面向对象的设计本质是:在问题空间中的元素和解空间中的对象之间建立一对一的映射。