1.1 抽象过程
对象:具有状态(内部数据)、行为(方法)和标识(在内存中有唯一的地址将其与其他对象区分开)。
Smalltalk,被公认为历史上第二个面向对象的程序设计语言,和第一个真正的集成开发环境(IDE)。Smalltalk由艾伦·凯,DanIngalls,TedKaehler,AdeleGoldberg等于70年代初在Xerox PARC开发。
Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:C++,C#,Objective-C,Actor,Java和Ruby等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。
1.2 对象包含接口
这里所说的接口,即类中的方法函数,每个对象都只能满足某些请求,这些请求由对象的接口所定义,决定接口的是类型。
1.3 每个对象提供服务
开发的目标就是创建一系列对象,来提供服务解决问题。将问题分解为对象的集合。
1.4 被隐藏的具体实现
将程序开发人员分为类创建者(创建数据类型),客户端程序媛(组合各个类使用来解决问题);这样屏蔽了内部结构,一方面防止触及不该触及的代码,另一方面底层修改对客户端程序媛也是透明的。
Java内部设定边界的三个关键字:public private protected
1.5 复用具体实现
复用,使用某个类的对象,或使用现有类构造新的类(组合,has-a),汽车和引擎。
在建立新类时,最先考虑组合,再考虑继承。
1.6 继承
覆盖(overriding)重写基类中继承过来的方法。导出类(子类)中可以添加新方法。
1.7 伴随多态的可互换对象
OOP中,后期绑定,程序直到运行时,才确定代码的地址。C++中用virtual关键字实现动态绑定,而java中默认动态绑定,通过使用一小段代码代替绝对地址调用。
Upcasting向上转型,形参为父类,传入实参为子类时,可以正确运行相应代码。
1.8 单根继承结构
Java类继承于Object类,单根继承保证所有类共同具备某些功能,使垃圾回收变得容易。
java.lang.Object
1.9 容器
List Map set 堆栈 队列 树 等,解决某个问题需要多少个对象,需要如何存储这些对象。
向下转型,具有一定危险性,
想到了参数化类型,java中称为泛型
ArrayList<Shape> shapes=new ArrayList<Shape>();
1.10对象的创建和生命期
Java采用动态分配内存的方式,每当要创建新对象时,用new关键字创建。Java的垃圾回收器被设计用来处理内存释放问题。
1.11异常处理
异常是一种对象,它从出错地点被抛出,有专门的处理器捕获,像程序执行的另一条路径。
1.12并发编程
线程通常只是一种为单一处理器分配执行时间的手段。多处理器可以实现真正的并行。存在的隐患:共享资源。
1.13Java与internet
Java客户端编程,applet并没有真正用起来。服务端编程较为成功。
OOP和java并不是适合所有的人,要选择满足自己需求的,在可预见的未来的需求。
最后一段有些意外的是,作者推荐去看python...或许不能拘泥于一种语言吧。