Java编程思想第四版读书笔记——第一章 对象导论
1.抽象过程
万物皆对象;
程序是对象的集合,它们通过发送消息来告知彼此所要做的;
每个对象都有自己的由其它对象构成的存储。
每个对象都有其类型,每个对象都是某个类的一个实例(instance);
某一特定类型的所有对象都可以接受同样的消息。
2.每个对象都有一个接口
每个对象都只能满足某些请求,这些请求是由接口(interface)所定义的,决定接口的便是类型。
3.每个对象都提供一个服务
将对象看做服务者可以提高对象的内聚性。高内聚性是软件设计的基本质量要求之一。
可以将一个拥有很多功能的对象拆分成多个各司其职的对象。
4.被隐藏的具体实现
客户端程序员的目标是收集各种用来快速应用开发的类。
为什么要进行访问控制?
(1)让客户端程序员无法触及他们不该触及的部分——这些部分对于内部操作是必须的,但不是用户解决特定问题所需要的接口的一部分。减少客户端程序员需要考虑的东西,忽略不重要的东西。
(2)允许库设计者可以改变内部的工作方式而不用担心会影响到客户端程序员。
5.复用的具体实现
复用对象:
(1)直接使用该类的对象;
(2)创建一个成员对象;
使用现有的类合成新的类,称为“组合”,如果组合是动态发生的,则称为“聚合”。
在创建新类时,优先考虑组合,再考虑继承。
6.聚合
基类和导出类产生差异:
直接在导出类添加新方法;
覆盖(overriding)原方法
7.伴随多态的可互换对象
将导出类看做它的基类的过程称为向上转型。
方法可以在不知道对象的实际类型时,做出正确的行为。
8.单根继承结构
除了C++以外的所有OOP语言,所有类最终都继承自单一的基类。这个终极基类即Object;
单根继承使所有对象都具有统一的接口,给编程带来了更大的灵活性。
垃圾回收器的实现变的容易许多。
C++如果这样,优点:额外的灵活性; 缺点:需要构建自己的继承体系,不兼容
9.容器
不同的容器提供了不同类型的接口和外部行;
不同的容器对于某些操作具有不同的效率
为了避免向下转型为错误的类型,因此有了参数化类型机制,参数化类型就是一个编译器可以自动定制用于特定类型上的类。
10.对象的创建和生命周期
对象的创建
C++认为效率控制是最重要的议题,在堆栈或者静态存储区域创建对象。
Java在创建对象的时候可以不用知道对象的确切数量,生命周期和类型。
Java完全采用了动态内存分配的方式。它认为对象变得复杂后,查找和释放存储空间的开销就不那么那么重要了。提高灵活性,牺牲了时间。
对象的生命周期
Java提供了“垃圾回收器”机制,可以自动发现对象何时不再被使用,继而销毁它。
垃圾回收器可以避免内存溢出的问题。
11.异常处理:处理错误
异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。
异常不能忽略,所以它保证一定会在某处得到处理。它提供了一种从错误状况进行可靠恢复的路径。异常处理不是面向对象的特征。
12.并发编程
使用线程,但是可能遇到一个隐患,就是共享资源的问题。
某个任务锁定某项资源,完成其任务,然后释放资源锁,使其它任务可以使用这项资源。
13.Java与Internet
客户/服务器系统的核心思想是:系统具有一个中央信息存储池,用来存储某种数据,它通常位于数据库中,你可以根据需要将它分发给某些人员或机器集群。
信息存储池、用于分发信息的软件以及消息与软件所驻留的机器或机群被称为服务器;
客户端编程:
(1)插件(plug-in)
(2)脚本语言(scripting language)
(3)Java
(4)NET和C#
(5)企业内部网Inttanet
网友评论