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