1.1抽象
所有的编程语言都是提供抽象机制的,汇编语言是对底层机器的轻微抽象,接着许多面向过程的语言是对汇编语言的抽象,这些语言要求在解决问题时基于计算机的结构,不害死以问题的结构来考虑。
面向对象编程允许根据问题来表述问题,而不是根据运行解决方案的计算机来描述问题。每个对象都有状态和操作,用户可以根据状态执行这些行为。Alan Kay总结了第一个面向对象语言Smalltalk的5个基本特性。
a.万物皆对象
将对象视为奇特的变量,他可以存储数据,除此之外,你还可以要求它在自身上执行操作。理论上讲,可以抽取待解决问题的任何概念化构建,将其表示为程序中的对象。这里给出一个交换两数值的例子,也是面试常见的题目。
上述例子说明了对象是奇特的变量,可以存储数据。
b.程序是对象的集合
对象之间通过发送消息也就是调用方法来告知彼此索要做的
c.每个对象都有自己的由其他对象所构成的存储
对这句话的理解,百度到的解释是,一座房子,有砖、玻璃、木头……房子即是一个对象,而砖、玻璃、木头……分别又都是一个对象。
一个人,主要部分是细胞没错吧?每个对象(如:房子)都有自己的由其他对象(砖、玻璃、木头……)所构成的储存。
每个对象(如:你)都有自己的由其他对象(细胞、毛发、指甲……)所构成的储存
d.每个对象都拥有其类型
每个对象都是某个类的实例,因此每个对象都属于某个类。
e.某一特定类型的多有对象都可以接收同样的消息
每个对象都是相同类型的实例,都有相同的一面