第一部分 面向对象基础
第1章 对象和类
1.1 对象和类
1.2 创建对象
1.3 调用方法
1.4 参数
1.5 数据类型
1.6 多个实例
1.7 状态
1.8 对象中的字段和方法
1.9 对象交互
1.10 源代码
1.11 另一个例子
1.12 返回值
1.13 对象作为参数进行传递
小结
关键术语
第2章 理解类的定义
2.1 售票机
2.2 检查类的定义
2.3 字段、构造器和方法
2.3.1 字段
2.3.2 构造器
2.4 通过参数传递数据
2.5 赋值
2.6 访问器方法
2.7 修改器方法
2.8 在方法中打印
2.9 简易型售票机的总结
2.10 对售票机设计的探讨
2.11 做选择:条件语句
2.12 高级条件语句的例子
2.13 局部变量
2.14 字段、参数和局部变量
2.15 改进型售票机的总结
2.16 自我复习练习题
2.17 回顾一个熟悉的例子
小结
关键术语
第3章 对象交互
3.1 时钟的例子
3.2 抽象与模块化
3.3 软件中的抽象
3.4 在时钟例子里的模块化
3.5 实现时钟显示器
3.6 类图与对象图
3.7 基本类型和对象类型
3.8 ClockDisplay的源代码
3.8.1 NumberDisplay类
3.8.2 字符串拼接
3.8.3 取模运算符
3.8.4 ClockDisplay类
3.9 对象创建对象
3.10 多个构造器
3.11 方法调用
3.11.1 内部方法调用
3.11.2 外部方法调用
3.11.3 时钟显示器的总结
3.12 另一个对象交互的例子
3.12.1 邮件系统的例子
3.12.2 this关键字
3.13 使用调试器
3.13.1 设置断点
3.13.2 单步执行
3.13.3 单步进入方法
3.14 方法调用回顾
小结
关键术语
第4章 对象集合
4.1 在可变容量的容器中存放对象
4.2 个人记事本
4.3 初涉类库
4.4 容器的对象结构
4.5 泛型类
4.6 容器内的编号
4.7 从容器中删除对象
4.8 处理整个容器
4.8.1 for-each循环
4.8.2 while循环
4.8.3 遍历容器
4.8.4 索引存取与迭代器的比较
4.9 记事本例子的总结
4.10 另一个例子:拍卖系统
4.10.1 Lot类
4.10.2 Auction类
4.10.3 匿名对象
4.10.4 使用容器
4.11 可变容量容器的总结
4.12 固定容量的容器
4.12.1 日志文件分析器
4.12.2 声明数组变量
4.12.3 创建数组对象
4.12.4 使用数组对象
4.12.5 分析日志文件
4.12.6 for循环
小结
关键术语
第5章 高级行为
5.1 类库的文档
5.2 TechSupport系统
5.2.1 研究TechSupport系统
5.2.2 阅读代码
5.3 阅读类文档
5.3.1 接口与实现
5.3.2 使用类库中的类的方法
5.3.3 检查字符串是否相等
5.4 增加随机行为
5.4.1 Random类
5.4.2 在有限范围内产生随机数
5.4.3 产生随机的回答
5.4.4 阅读参数化的类的文档
5.5 包和导入
5.6 使用映射表示关联
5.6.1 映射的概念
5.6.2 使用HashMap
5.6.3 在TechSupport系统中使用映射
5.7 使用集合
5.8 分割字符串
5.9 完成TechSupport系统
5.10 编写类文档
5.10.1 在BlueJ中使用javadoc
5.10.2 类文档的组成
5.11 公共与私有
5.11.1 信息隐藏
5.11.2 私有方法和公共字段
5.12 通过接口研究类
5.13 类变量和常量
5.13.1 static关键字
5.13.2 常量
小结
关键术语
第6章 使对象正常运行
6.1 引言
6.2 测试和调试
6.3 用BlueJ进行单元测试
6.3.1 使用检查器
6.3.2 正向测试和反向测试
6.4 测试自动化
6.4.1 回归测试
6.4.2 自动检查测试结果
6.4.3 记录测试
6.4.4 夹具
6.5 模块化和接口
6.6 调试场景
6.7 注释与风格
6.8 人工走查
6.8.1 高层次的走查
6.8.2 用走查来检查状态
6.8.3 口头走查
6.9 打印语句
6.10 选择测试策略
6.11 调试
6.12 在实战中使用这些技术
小结
关键术语
第7章 类的设计
7.1 引言
7.2 world-of-zuul游戏的例子
7.3 耦合和内聚的介绍
7.4 代码重复
7.5 扩展
7.5.1 任务
7.5.2 找到相关的源代码
7.6 耦合
7.7 责任驱动的设计
7.8 改动局部化
7.9 隐性耦合
7.10 预见性
7.11 内聚
7.11.1 方法的内聚
7.11.2 类的内聚
7.11.3 内聚对于可读性的好处
7.11.4 内聚对于重用的好处
7.12 重构
7.12.1 重构与测试
7.12.2 重构的例子
7.13 语言无关的重构
7.13.1 枚举类型
7.13.2 命令界面的进一步解耦
7.14 设计原则
7.15 脱离BlueJ执行程序
7.15.1 类方法
7.15.2 main方法
7.15.3 类方法的限制
小结
关键术语
第二部分 应用程序结构
第8章 通过继承改进结构
8.1 DoME例子
8.1.1 DoME的类与对象
8.1.2 DoME源代码
8.1.3 DoME程序的讨论
8.2 使用继承
8.3 继承层次
8.4 Java的继承
8.4.1 继承与访问权限
8.4.2 继承与初始化
8.5 DoME:增加另一种媒体类型
8.6 (迄今为止)继承的优点
8.7 子类型
8.7.1 子类与子类型
8.7.2 子类型与赋值
8.7.3 子类型与参数传递
8.7.4 多态变量
8.7.5 换型
8.8 Object类
8.9 自动包装与包裹类
8.10 容器层次
小结
关键术语
第9章 继承深入
第10章 高级抽象技术
第11章 构造图形用户界面程序
第12章 错误处理
第13章 应用程序设计
第14章 案例研究
附录A 使用BlueJ
附录B Java数据类型
附录C Java控制结构
附录D 运算符
附录E 脱离BlueJ运行Java程序
附录F 配置BlueJ
附录G 使用调试器
附录H JUnit单元测试工具
附录I javadoc
附录J 程序风格指南
附录K 重要的类库类
索引