第一章 对象导论
编程语言的产生始于对机器的模仿。
第一个成功的面向对象语言:smalltalk。基本特性:
(1) 万物皆为对象。
(2) 程序是对象的集合,它们通过发送消息来告知彼此所要做的。
(3) 每个对象都有自己的由其他对象所构成的存储。
(4) 每个对象都拥有其类型。
(5) 某一个特定类型的对象可以接收同样的消息。
创建抽象数据类型(类)是面向对象程序设计的基本概念之一。类是描述具有相同特性(数据元素)和行为(功能)的对象的集合,它实际上是一个数据类型。面向对象程序设计的一个挑战之一就是在问题空间的元素和解空间的对象之间创建一对一的映射。每个对象都有一个接口,接口定义了对某一特定对象所能发出的请求。
每个对象都提供服务。将对象想象成为“服务提供者”。高内聚是软件设计的基本质量要求之一。在良好的面向对象设计中,每个对象都可以很好的完成一项任务,但是它并不试图做更多的事情。
被隐藏的具体实现。因此就有了访问控制的概念,三个关键字:public,private,protected。还有一个“包访问权限”。
代码复用是面向对象程序设计提供的一个很好的功能。可以创建一个基类型来表示系统中某些对象的核心概念,从基类型中导出其他类型,来表示此核心可以被实现的各种不同的方式。
前期绑定:编译器将产生对一个具体函数名字的调用,而链接器将这个调用解析到将要被执行的代码的绝对地址。面向对象程序设计语言使用了“后期绑定”的概念。当向对象发送消息时,被调用的代码知道运行时才能确定。为了执行后期绑定,Java使用一小段特殊的代码来替代绝对地址调用。这段代码使用在对象中存储的信息来计算方法体的地址。这样,根据这一小段代码的内容,每一个对象都可以具有不同的行为表现。当向一个对象发送消息时,该对象就能够知道对这条消息该做什么。
Java采用在堆的内存池中动态的创建对象,并且采用垃圾回收器来销毁不再使用的对象。
迭代器是一个用来选取容器中的元素,并把它呈现给迭代器用户的对象。对容器有所选择的原因:(1)不同容器提供了不同类型的接口和外部行为。(2)不同的容器对于某些操作具有不同的效率。
单根继承类型带来很多好处。
异常处理:处理错误。