第1章 绪论 1
1.1 面向对象方法与技术的由来及发展 1
1.1.1 传统软件方法的缺陷 1
1.1.2 面向对象方法与技术的产生和发展 4
1.2 面向对象的基本思想 9
1.2.1 面向对象方法与技术 9
1.2.2 面向对象的基本思想 10
1.2.3 行为共享与进化 11
1.2.4 面向对象方法和技术的主要优点 12
1.3 面向对象技术的新进展 13
1.3.1 将面向对象技术和数据库技术结合产生面向对象数据库 13
1.3.2 分布组件技术 13
1.3.3 网上对象(Objects on Web) 15
1.3.4 面向对象操作系统 16
1.3.5 面向对象软件工程 17
1.3.6 Java技术 19
1.3.7 并行面向对象技术 19
1.4 小结 20
习题与思考题 22
第2章 面向对象方法与技术基础 23
2.1 面向对象设计范型 23
2.1.1 范型 23
2.1.2 过程性范型与面向对象范型的比较 24
2.1.3 语言对面向对象范型的支持 25
2.2 面向对象的基本概念 26
2.2.1 对象和类 26
2.2.2 消息和消息响应 28
2.2.3 继承和类层次 29
2.2.4 封装和接口 30
2.2.5 继承和多态(Polymorphism) 31
2.2.6 动态联编(Dynamic Binding) 31
2.2.7 重载(Overloading) 32
2.3 面向对象系统的形式化描述 33
2.3.1 对象 33
2.3.2 类 34
2.3.3 消息 35
2.3.4 对象间关系 37
2.4 面向对象系统的图模型 38
2.4.1 面向对象系统的基本图模型 38
2.4.2 面向对象Petri网(Object_Oriented Petri Nets,OOPNs) 40
2.5.2 数据抽象 44
2.5 抽象数据类型(Abstract Data Type) 44
2.5.1 抽象 44
2.5.3 抽象数据类型 46
2.5.4 抽象数据类型的代数规范 49
2.6 面向对象涉及的其他概念 51
2.6.1 深拷贝与浅拷贝 51
2.6.2 作用域与语境 52
2.6.3 强类型与弱类型 53
2.6.4 对象的生命周期与持久对象 56
2.6.5 可扩充性 57
2.6.6 端对象与非端对象 59
2.6.7 主动对象 60
2.7 小结 61
习题与思考题 62
第3章 C++程序设计基础 64
3.1 类与对象 64
3.1.1 面向对象编程(COP)的基本特性 64
3.1.2 类的引入 67
3.1.3 类的定义 69
3.1.4 构造函数和析构函数 73
3.1.5 聚集的概念(对象成员) 78
3.2 继承 83
3.2.1 继承引入 83
3.2.2 继承表示语法 86
3.2.3 protected访问指明符 86
3.2.4 派生类构造函数及析构函数的构造规则 87
3.2.5 继承指定 89
3.2.6 继承关系中的成员可见性 90
3.3 多态性与虚函数 90
3.3.1 多态性 90
3.3.2 虚函数 92
3.3.3 抽象类 97
3.3.4 多继承与命名冲突 98
3.3.5 重复继承(共享继承) 100
3.4 C++其他成分 101
3.4.1 友元 101
3.4.2 常类型 103
3.4.3 引用 105
3.4.4 异常处理 105
3.4.5 函数重载与运算符重载 107
3.4.6 模板 110
3.5 小结 115
习题与思考题 117
第4章 MFC面向对象设计 119
4.1 WIN32 API概述 119
4.2 WIN32 API基本概念 122
4.2.1 句柄 122
4.2.2 常用数据类型 122
4.2.3 消息机制与事件驱动 123
4.3 WIN32 API应用程序框架 124
4.3.1 应用程序入口 124
4.3.2 消息循环 124
4.3.3 窗口函数 126
4.3.4 窗口类 126
4.3.6 WIN32 API程序执行流程 127
4.3.5 窗口的创建与显示 127
4.4 WIN32 API程序示例 128
4.5 MFC应用程序框架 130
4.5.1 MFC概述 130
4.5.2 MFC类库 131
4.5.3 MFC基础类 134
4.5.4 MFC程序示例 142
4.6 MFC对WIN32 API的封装 143
4.6.1 MFC对消息循环机制的封装 143
4.6.2 MFC对窗口创建流程的封装 146
4.6.3 MFC对消息处理的封装 147
4.7 文档/视图 151
4.7.1 文档/视图概述 151
4.7.2 文档/视图架构分析 152
4.8 小结 155
习题与思考题 156
第5章 面向对象软件工程 157
5.1 概述 157
5.1.1 传统软件工程的缺陷 157
5.1.2 面向对象软件工程 160
5.2 面向对象软件的开发过程 161
5.2.1 面向对象的应用生存期模型 161
5.2.2 面向对象分析的基本任务与过程 164
5.2.3 面向对象设计的任务 170
5.3 经典面向对象方法 172
5.3.1 Booch方法 172
5.3.2 Rumbaugh的OMT方法 176
5.3.3 Coad/Yourdon方法 179
5.3.4 Jacobson方法 182
5.4 标准的面向对象建模语言——UML 183
5.4.1 UML简史 183
5.4.2 UML语义 185
5.4.3 UML表示法 189
5.4.4 UML静态建模 190
5.3.5 UML动态建模 193
5.4 Rational统一开发过程——RUP 196
5.4.1 概述 196
5.4.2 RUP的基本思想 197
5.4.3 迭代式开发 199
5.4.4 以构架为中心的过程 199
5.4.5 用例驱动的过程 200
5.6 小结 201
习题与思考题 202
第6章 分布组件技术 203
6.1 基于组件的软件复用是解决软件质量问题的有效手段 203
6.1.1 软件复用技术 203
6.1.2 组件技术 205
6.1.3 流行的组件技术 207
6.2 分布组件技术初探 207
6.2.1 网络Socket编程 207
6.2.2 分布组件技术的概念 209
6.3 COM/DCOM模型 214
6.3.1 ActiveX、OLE和COM 214
6.3.2 基本概念 215
6.3.3 实例分析 215
6.3.4 DCOM 222
6.3.5 接口 223
6.3.6 IDL语言 224
6.4 CORBA技术 226
6.4.1 CORBA的产生与发展 226
6.4.2 CORBA体系结构概述 227
6.4.3 CORBA开发 232
6.5 Web Service技术 238
6.6 代理(Agent)技术 246
6.6.1 概述 246
6.6.2 一个基于Java的流动代理模型 248
6.7 小结 251
习题与思考题 252
7.1.2 Java技术的组成 253
7.1.1 Java的内涵 253
第7章 Java语言与Java技术 253
7.1 Java简介 253
7.1.3 Java语言的特点 256
7.1.4 Java语言与C/C++ 257
7.1.5 Java开发环境 259
7.1.6 Java语言的跨平台 259
7.1.7 Java语言面向对象特性的语法体现 260
7.1.8 Java本机方法 268
7.2 JDBC 273
7.2.1 JDBC的出现 273
7.2.2 JDBC的组成 274
7.2.3 JDBC编程的基本概念 275
7.2.4 JDBC的常用接口和类 276
7.2.5 使用JDBC进行数据库编程 277
7.3 远程方法调用RMI 278
7.3.1 RMI的体系结构 278
7.3.2 RMI工作机制 280
7.3.3 RMI应用程序的开发 280
7.4 J2EE 284
7.4.1 Java Servlet 286
7.4.2 JSP 287
7.4.3 EJB 289
7.5 Tspaces,JavaSpaces,Linda 298
7.5.1 TupleSpace 298
7.5.2 Tspaces 300
7.5.3 JavaSpaces 302
7.6 小结 303
习题与思考题 304
第8章 设计模式 306
8.1 概述 306
8.2 设计模式的概念 307
8.3 设计模式的原则 309
8.4 GoF设计模式的分类 311
8.4.1 创建模式 311
8.4.2 结构模式 312
8.4.3 行为模式 313
8.5 创建模式 314
8.5.1 工厂模式 314
8.5.2 生成器模式 322
8.5.3 原型模式 325
8.5.4 单例模式 327
8.6 结构模式 328
8.6.1 适配器模式 328
8.6.2 外观模式 330
8.7 行为模式 332
8.7.1 状态模式 332
8.7.2 观察者模式 334
8.8 其他设计模式 336
8.8.1 J2EE设计模式 336
8.8.2 J2EE设计模式的特点 337
8.8.3 J2EE设计模式的分类 337
8.9 小结 340
习题与思考题 340
参考文献 341