第一章:对象导论
这本书翻过不少遍,但是这是我第一次认真的把第一章看了。作者强调这章是“背景性和补充性的材料。许多人在没有了解面向对象程序设计全貌之前,感觉无法轻松自在的从事此类编程。因此,此处将引入许多概念,以期帮助读者扎实的了解OOP”。会用Java写成程序和会写OOP的程序那是两码子事.
看完就后悔以前没有仔细读过。单是这一章,就基本介绍了Java的特性和功能。
1.1 抽象过程
首先,作者先介绍了什么是对象。总结起来就是:对象具有状态(拥有内部数据)、行为(方法)和标识(对象的存储地址)。
1.2 每个对象都有一个接口
个人觉得这个小节有点多余。作者描述的和标题似乎联系不大。我怎么看也无法把内容和标题联系起来。作者似乎是想表达对象是类的一个实例这个关系,即每个对象都属于一个类型。类的行为就是对象的行为,并把这些行为称为“接口”?
1.3 每个对象都提供服务
1.4 被隐藏的具体实现
1.5 复用的具体实现
这3个小节主要是讲类的设计问题,强调了类内聚和耦合的关系。关于这几点,我在《设计模式初学者指南》上,看到了一段更好的描述,足以概括和解释以上内容:
“面向对象系统的基本指导思想如下所述:
不要等你需要做什么事情的时候才向对象要信息,而是要选择拥有这些信息的对象为你服务。”
接着又具体阐述了由以上指导思想产生的一些经验法则,这些法则可以用来判断一个系统是不是真正的面向对象系统:
1)对象是根据”合约“定义的, 对象不能违背其合约。
2)所有的数据都是私有的。(这个规则适用于所有实现细节,而不仅仅适用于数据。)
3)对象的实现方式必须可以做任何的改变,无论这些改变有多大,只要修改定义这个对象的单类就可以。
4)盲目使用“get“和”set“是有害的
首先,对于”合约“思想:对象的合约定义为从外界来看对象所表现的行为。例如对象的接口、性能及大小的限制等,这些行为都不会随着时间而变化。但对象的实现不属于合约的部分。
其次,对于”一切都是私有“, 若不是私有的,则必是合约的一部分而不能修改。
第三,我想就不必解释了。理想状况下,当然只修改变更的类。但是这样并不一定总能实现。只能尽量满足这个条件。
1.7--1.13
接下来,作者介绍面向对象语言的特征:多态和继承,并指明Java是单根继承的。还介绍了Java一些的特性:容器(Java5之后引入了泛型),对象的创建和生命期(Java采用了动态内存的分配方式和垃圾回收),异常处理,并发编程等等。
总之,在这第一章里,作者给我们做了一个关于面向对象和Java语言的相关概念的梳理。