第1章 面向对象概念介绍 1
1.1过程式程序设计与OO程序设计 2
1.2从过程式开发转向面向对象开发 4
1.2.1过程式程序设计 5
1.2.2 OO程序设计 5
1.3对象到底是什么 5
1.3.1对象数据 5
1.3.2对象行为 6
1.4类到底是什么 9
1.4.1类是对象模板 9
1.4.2属性 11
1.4.3方法 11
1.4.4消息 11
1.5使用UML完成类图建模 12
1.6封装和数据隐藏 12
1.6.1接口 12
1.6.2实现 13
1.6.3接口/实现范型的一个实际例子 13
1.6.4接口/实现范型的模型 14
1.7继承 15
1.7.1超类和子类 16
1.7.2抽象 16
1.7.3 is-a关系 17
1.8多态 18
1.9组合 20
1.9.1抽象 21
1.9.2 has-a关系 21
1.10小结 21
1.11本章使用的示例代码 21
1.11.1 TestPerson示例:C#.NET 21
1.11.2 TestPerson示例:VB.NET 22
1.11.3 TestShape示例:C#.NET 23
1.11.4 TestShape示例:VB.NET 25
第2章 如何以对象方式思考 27
2.1了解接口与实现之间的区别 28
2.1.1接口 29
2.1.2实现 29
2.1.3接口/实现示例 29
2.2设计接口时使用抽象思维 33
2.3尽可能为用户提供最小接口 35
2.3.1确定用户 35
2.3.2对象行为 36
2.3.3环境约束 36
2.3.4明确公共接口 36
2.3.5明确实现 37
2.4小结 37
2.5参考书目 38
第3章 高级面向对象概念 39
3.1构造函数 39
3.1.1何时调用构造函数 39
3.1.2构造函数中有什么 40
3.1.3默认构造函数 40
3.1.4使用多个构造函数 41
3.1.5构造函数的设计 44
3.2错误处理 44
3.2.1忽略问题 45
3.2.2检查问题并中止应用 45
3.2.3检查问题并尝试恢复 45
3.2.4抛出异常 45
3.3作用域概念 47
3.3.1局部属性 48
3.3.2对象属性 49
3.3.3类属性 50
3.4操作符重载 51
3.5多重继承 52
3.6对象操作 53
3.7小结 54
3.8参考书目 54
3.9本章使用的示例代码 54
3.9.1 TestNumber示例:C#.NET 54
3.9.2 TestNumber示例:VB.NET 55
第4章 类剖析 57
4.1类名 57
4.2注释 58
4.3属性 59
4.4构造函数 60
4.5访问方法 62
4.6公共接口方法 63
4.7私有实现方法 64
4.8小结 64
4.9参考书目 64
4.10本章使用的示例代码 65
4.10.1 TestCab示例:C#.NET 65
4.10.2 TestCab示例:VB.NET 66
第5章 类设计指导原则 68
5.1真实世界系统建模 68
5.2明确公共接口 69
5.2.1最小公共接口 69
5.2.2隐藏实现 69
5.3设计健壮的构造函数(和析构函数) 70
5.4在类中设计错误处理 70
5.4.1对类建立文档以及使用注释 71
5.4.2构建类要以合作为出发点 71
5.5设计时充分考虑重用 72
5.6设计时充分考虑到可扩展性 72
5.6.1名字要有描述性 72
5.6.2抽出不可移植的代码 72
5.6.3提供一种复制和比较对象的方法 73
5.6.4让作用域尽可能小 73
5.6.5类应当对自己负责 74
5.7设计时充分考虑可维护性 75
5.7.1使用迭代 76
5.7.2测试接口 76
5.8使用对象持久性 78
5.9小结 79
5.10参考书目 79
5.11本章使用的示例代码 79
5.11.1 TestMath示例:C#.NET 79
5.11.2 TestMath示例:VB.NET 80
第6章 利用对象实现设计 81
6.1设计指导原则 81
6.1.1完成适当的分析 84
6.1.2建立工作陈述 84
6.1.3收集需求 84
6.1.4开发用户界面的原型 85
6.1.5明确类 85
6.1.6确定各个类的职责 85
6.1.7确定类如何相互合作 85
6.1.8创建类模型来描述系统 85
6.2案例研究:blackjack示例 86
6.2.1使用CRC卡 87
6.2.2明确blackjack类 88
6.2.3明确类的职责 90
6.2.4 UML用例:明确协作关系 95
6.2.5第一轮CRC卡 98
6.2.6 UML类图:对象模型 99
6.2.7建立用户界面原型 100
6.3小结 101
6.4参考书目 101
第7章 掌握继承和组合 102
7.1重用对象 102
7.2继承 103
7.2.1一般化和特殊化 105
7.2.2设计决策 105
7.3组合 107
7.4为什么封装在OO中如此重要 109
7.4.1继承如何削弱封装 109
7.4.2多态的一个详细例子 111
7.4.3对象职责 111
7.5小结 115
7.6参考书目 115
7.7本章使用的示例代码 115
7.7.1 TestShape示例:C#.NET 115
7.7.2 TestShape示例:VB.NET 117
第8章 框架与重用:使用接口和抽象类实现设计 119
8.1代码:重用还是不重用 119
8.2什么是框架 119
8.3什么是契约 121
8.3.1抽象类 122
8.3.2接口 124
8.3.3集成 125
8.3.4编译器的证明 127
8.3.5建立契约 128
8.3.6系统插入点 130
8.4一个电子商务例子 130
8.4.1电子商务问题 130
8.4.2非重用的方法 131
8.4.3一个电子商务解决方案 133
8.4.4 UML对象模型 133
8.5小结 137
8.6参考书目 137
8.7本章使用的示例代码 138
8.7.1 TestShape示例:C#.NET 138
8.7.2 TestShape示例:VB.NET 140
第9章 构建对象 143
9.1组合关系 143
9.2分阶段构建 144
9.3不同类型的组合 146
9.3.1聚集 146
9.3.2关联 146
9.3.3结合使用关联和聚集 148
9.4避免依赖性 148
9.5基数 149
9.5.1多个对象关联 151
9.5.2可选关联 151
9.6集成示例 152
9.7小结 152
9.8参考书目 153
第10章 用UML创建对象模型 154
10.1什么是UML 154
10.2类图的结构 155
10.3属性和方法 156
10.3.1属性 156
10.3.2方法 157
10.4访问指示 157
10.5继承 158
10.6接口 159
10.7组合 160
10.7.1聚集 160
10.7.2关联 161
10.8基数 161
10.9小结 162
10.10参考书目 163
第11章 对象和可移植数据:XML 164
11.1可移植数据 164
11.2 XML 165
11.3 XML与HTML 166
11.4 XML和面向对象语言 166
11.5两个公司间共享数据 167
11.6用DTD验证文档 168
11.7将DTD集成到XML文档 170
11.8使用层叠样式表 175
11.9小结 177
11.10参考书目 177
第12章 持久对象:串行化和关系数据库 178
12.1持久对象基础 178
12.2将对象保存到平面文件 179
12.2.1串行化文件 180
12.2.2再谈实现和接口 182
12.2.3方法如何保存 183
12.3串行化过程中使用XML 183
12.4写至关系数据库 186
12.5加载驱动程序 189
12.5.1建立连接 189
12.5.2 SQL语句 190
12.6小结 192
12.7参考书目 192
12.8本章使用的示例代码 192
12.8.1 Person类示例:C#.NET 193
12.8.2 Person类示例:VB.NET 195
第13章 对象与因特网 197
13.1分布式计算的演进 197
13.2基于对象的脚本语言 197
13.3 JavaScript验证示例 200
13.4 Web页面中的对象 202
13.4.1 JavaScript对象 202
13.4.2 Web页面控件 204
13.4.3声音播放器 205
13.4.4电影播放器 205
13.4.5 Flash 206
13.5分布式对象和企业 206
13.5.1公共对象请求代理体系结构(CORBA) 207
13.5.2 Web服务定义 210
13.5.3 Web服务代码 213
13.5.4 Invoice.cs 214
13.5.5 Invoice.vb 215
13.6小结 216
13.7参考书目 216
第14章 对象和客户/服务器应用 217
14.1客户/服务器方法 217
14.2专有方法 217
14.2.1串行化对象代码 218
14.2.2客户代码 218
14.2.3服务器代码 220
14.2.4运行专有的客户/服务器示例 222
14.3非专有方法 223
14.3.1对象定义代码 223
14.3.2客户代码 224
14.3.3服务器代码 225
14.3.4运行非专有的客户/服务器示例 227
14.4小结 228
14.5参考书目 228
14.6本章使用的示例代码 228
14.6.1客户/服务器示例——VB.NET:对象定义代码 228
14.6.2客户/服务器示例——VB.NET:客户代码 229
14.6.3客户/服务器示例——VB.NET:服务器代码 230
第15章 设计模式 232
15.1为什么研究设计模式 232
15.2 Smalltalk的模型/视图/控制器 233
15.3设计模式的不同类型 234
15.3.1创建型模式 235
15.3.2结构型模式 239
15.3.3行为型模式 241
15.4反模式 242
15.5小结 243
15.6参考书目 243
15.7本章使用的示例代码 243
15.7.1 C#.NET 244
15.7.2 VB.NET 247
索引 250