目录 1
译者序 1
前言 1
致谢 1
第1章 面向对象的概念简介 1
1.1 面向过程程序设计和OO程序设计 1
1.2 从面向过程开发转向面向对象开发 4
1.2.1 面向过程的程序设计 4
1.2.2 OO程序设计 4
1.3 对象的确切定义 5
1.3.1 对象数据 5
1.3.2 对象行为 5
1.4.1 类是对象模板 8
1.4 类的确切定义 8
1.4.2 属性 9
1.4.3 方法 9
1.4.4 消息 10
1.5 使用UML构建类图 10
1.6 封装 10
1.6.1 接口 11
1.6.2 实现 11
1.6.3 接口/实现范例的现实例子 11
1.6.4 接口/实现范例的Java例子 12
1.7 继承 13
1.7.1 超类和子类 14
1.7.2 抽象 14
1.7.3 Is-a关系 15
1.8 多态 16
1.9 组合 18
1.10 小结 18
第2章 如何以对象的方式进行思考 20
2.1 了解接口和实现的区别 20
2.1.1 接口 22
2.1.2 实现 22
2.1.3 接口/实现的例子 22
2.2 在设计接口时使用抽象的思想 26
2.3 尽可能向用户提供最少的接口 27
2.3.1 确定用户 28
2.3.2 对象行为 28
2.3.3 环境限制 28
2.3.5 确定实现 29
2.3.4 确定公共接口 29
2.4 小结 30
2.5 参考文献 30
第3章 高级的面向对象概念 31
3.1 构造函数 31
3.1.1 何时调用构造函数 31
3.1.2 构造函数的内部机理 31
3.1.3 默认构造函数 32
3.1.4 使用多个构造函数 32
3.1.5 设计构造函数 36
3.2 错误处理 36
3.2.1 忽略问题 36
3.2.2 检测问题并异常终止应用程序 36
3.2.4 抛出异常 37
3.2.3 检测问题并且尝试解决问题 37
3.3 作用域的概念 39
3.3.1 局部属性 39
3.3.2 对象属性 40
3.3.3 类的属性 42
3.4 运算符重载 43
3.5 多重继承 43
3.6 对象操作 44
3.7 小结 45
3.8 参考文献 45
第4章 类的剖析 46
4.1 类的名称 46
4.2 注释 47
4.3 属性 48
4.4 构造函数 49
4.5 访问函数 50
4.6 公共接口方法 52
4.7 私有实现方法 53
4.8 小结 53
4.9 参考文献 53
第5章 类设计指导 54
5.1 标识公共接口 54
5.2 设计健壮的构造函数(或析构函数) 56
5.3 在类中设计错误处理 57
5.3.1 用文档说明类以及使用注释 57
5.3.2 带着协作的意向创建对象 57
5.5 设计时考虑扩展 58
5.4 在设计时考虑到重用 58
5.5.1 使名称形象化 59
5.5.2 提取不能移植的代码 59
5.5.3 提供复制和比较对象的方法 59
5.5.4 尽可能使作用域最小 60
5.5.5 类应该对自己负责 60
5.6 在设计时考虑可维护性 61
5.6.1 使用迭代 62
5.6.2 测试接口 62
5.7 使用对象持久性 64
5.8 小结 65
5.9 参考文献 65
6.1 设计指导 66
第6章 使用对象进行设计 66
6.1.1 进行正确的分析 69
6.1.2 制作工作陈述 69
6.1.3 收集需求 69
6.1.4 开发用户接口原型 70
6.1.5 确定类 70
6.1.6 确定每一个类的职责 70
6.1.7 确定类和类之间如何相互作用 70
6.1.8 创建类模型来描述系统 70
6.2 案例分析:Blackjack(扑克牌中的二十一点)例子 71
6.2.1 使用CRC卡片 72
6.2.2 确定Blackjack的类 73
6.2.3 确定类的职责 76
6.2.4 UML用例:确定协作 80
6.2.5 制作CRC卡片的第一步 83
6.2.6 UML类图:对象模型 85
6.2.7 为用户接口设计原型 86
6.3 小结 86
6.4 参考文献 86
第7章 掌握继承和组合 87
7.1 继承 88
7.1.1 泛化和特化 90
7.1.2 设计决策 90
7.2 组合 92
7.3 为什么封装对OO很重要 94
7.3.1 继承是如何削弱封装的 95
7.3.2 一个详细的多态例子 96
7.3.3 对象的职责 97
7.5 参考文献 100
7.4 小结 100
第8章 框架和重用:利用接口和抽象类进行设计 101
8.1 代码的重用 101
8.2 什么是框架 101
8.3 什么是契约 103
8.3.1 抽象类 104
8.3.2 接口 105
8.3.3 尝试一起使用它们 107
8.3.4 编译器证据 109
8.3.5 制定契约 109
8.3.6 系统插入点 111
8.4 一个电子商务的例子 111
8.4.1 电子商务的问题 111
8.4.2 非重用方法 112
8.4.3 电子商务解决方案 114
8.4.4 UML对象模型 114
8.5 小结 117
8.6 参考文献 117
第9章 创建对象 118
9.1 组合关系 119
9.2 协调地创建 119
9.3 组合的类型 121
9.3.1 聚合 121
9.3.2 关联 122
9.3.3 同时使用聚合和关联 123
9.4 避免依赖性 123
9.5 基数(Cardinality) 124
9.5.1 多个对象的关联 126
9.5.2 可选的关联 127
9.6 同时使用这些关系:一个例子 127
9.7 小结 128
9.8 参考文献 128
第10章 使用UML创建对象模型 129
10.1 什么是UML 129
10.2 类图的结构 130
10.3 属性和方法 131
10.3.1 属性 131
10.3.2 方法 131
10.4 访问标号 132
10.5 继承 132
10.7.1 聚合 134
10.6 接口 134
10.7 组合 134
10.7.2 关联 135
10.8 基数 137
10.9 小结 138
10.10 参考文献 138
第11章 持久对象:串行化和关系数据库 139
11.1 持久对象的基础 139
11.2 把对象保存到“扁平”文件中 140
11.2.1 串行化某个文件 141
11.2.2 回顾实现和接口 142
11.3 写入关系数据库中 143
11.4 加载驱动程序 146
11.4.2 SQL语句 147
11.4.1 建立连接 147
11.5 小结 150
11.6 参考文献 150
第12章 对象和XML:可移植的数据 151
12.1 可移植代码 151
12.2 可扩展标记语言(XML) 152
12.3 XML与HTML 153
12.4 XML和面向对象语言 153
12.5 在两个公司之间共享数据 154
12.6 用文档类型定义检验文档 155
12.7 把DTD集成到XML文档中 156
12.8 使用层叠式样式表 161
12.10 参考文献 163
12.9 小结 163
第13章 对象和Internet 164
13.1 基于对象的脚本编写语言 164
13.2 一个JavaScript验证的例子 166
13.3 Java Applets是对象 170
13.4 JavaBeans是对象 172
13.5 小结 174
13.6 参考文献 174
第14章 分布式对象和企业 175
14.1 公共对象请求代理体系结构(CORBA) 176
14.2 Java的远程方法调用(RMI) 179
14.3 Java的Enterprise JavaBeans 180
14.4 企业JavaBeans的类型 182
14.4.2 实体beans 183
14.4.1 会话beans 183
14.5 小结 184
14.6 参考文献 184
第15章 设计模式 185
15.1 为什么需要设计模式 185
15.2 Smalltalk的模型/视图/控制器 186
15.3 设计模式的类型 188
15.3.1 创建模式 188
15.3.2 结构模式 191
15.3.3 行为模式 194
15.4 反模式 195
15.5 小结 196
15.6 参考文献 196