第1章 编程语言的发展与程序结构 1
1.1 编程语言发展简史 1
1.1.1 机械计算机时代的“编程” 1
1.1.2 编程语言的发展历程 2
1.2 非结构化编程简介 5
1.3 结构化系统分析与设计方法简史 6
1.3.1 结构化分析 6
1.3.2 结构化设计 8
1.3.3 结构化编程 9
1.4 非结构化程序设计与结构化程序设计的区别 11
1.4.1 非结构化程序的特点 11
1.4.2 结构化程序的特点 12
1.5 面向对象编程中对象与类的初步概念 13
1.6 面向对象程序与结构化程序的区别 15
1.7 本章总结 16
1.8 练习题 16
第2章 对象模型的基本概念 17
2.1 对象模型基础 17
2.1.1 面向对象系统的基本概念 18
2.1.2 面向对象分析的基本概念 19
2.1.3 面向对象设计的基本概念 19
2.1.4 面向对象编程 21
2.1.5 面向对象分析、设计与编程之间的关系 22
2.2 对象模型元素 22
2.2.1 抽象的概念 23
2.2.2 抽象的例子 25
2.2.3 封装的概念 26
2.2.4 封装的例子 27
2.2.5 模块化的概念 28
2.2.6 Java语言对模块化的支持 32
2.2.7 抽象的层次化 33
2.2.8 由“is-a”关系所产生的抽象层次的例子 36
2.2.9 由“part of”关系所产生的抽象层次的例子 37
2.3 本章总结 39
2.4 练习题 39
2.5 课下设计——编程作业 41
第3章 对象 42
3.1 对象的基本知识 42
3.1.1 对象的概念 42
3.1.2 对象的状态 43
3.1.3 对象的行为 45
3.1.4 对象操作的类型 46
3.1.5 对象的角色与职责 46
3.1.6 对象就像机器一样 47
3.1.7 对象的标识 50
3.2 对象之间的关系与协作 51
3.2.1 对象之间的链接 51
3.2.2 对象之间职责的分配 53
3.2.3 聚合关系 56
3.3 本章总结 56
3.4 练习题 57
3.5 课下设计——编程作业 59
第4章 类的基本概念 60
4.1 类的基本知识 60
4.1.1 类的定义 60
4.1.2 类的接口与实现 61
4.2 类之间的关系 63
4.2.1 关联关系 64
4.2.2 类的继承关系 66
4.2.3 多态的概念与例子 72
4.2.4 类的聚合关系 75
4.2.5 类的依赖关系 76
4.2.6 关联的表达形式 76
4.2.7 关联的实现方法 78
4.3 类与对象之间的关系 89
4.4 本章总结 91
4.5 练习题 92
4.6 课下设计——编程作业 95
第5章 面向对象设计原则 99
5.1 类的设计应遵循的基本原则 99
5.1.1 面向对象设计中类与模块设计质量的度量 99
5.1.2 操作设计的基本原则 104
5.1.3 类之间关系确定的基本原则 107
5.1.4 类的内部视图 112
5.2 面向对象设计的SOLID原则 113
5.2.1 单一职责原则 113
5.2.2 开闭原则 115
5.2.3 里氏代换原则 117
5.2.4 接口隔离原则 118
5.2.5 依赖倒转原则 120
5.3 本章总结 126
5.4 练习题 127
5.5 课下设计——编程作业 129
第6章 统一建模语言UML 133
6.1 结构图 135
6.1.1 类图 135
6.1.2 对象图 143
6.1.3 包图 144
6.1.4 组件图 151
6.1.5 部署图 155
6.2 行为图 159
6.2.1 用例图 159
6.2.2 活动图 163
6.2.3 时序图 167
6.2.4 通信图 170
6.2.5 状态机图 172
6.3 本章总结 180
6.4 练习题 180
6.5 课下设计——编程作业 185
第7章 需求分析、领域建模与对象设计 186
7.1 统一过程模型 186
7.1.1 统一过程模型的概念 186
7.1.2 统一过程模型的迭代性质 189
7.2 需求分析的概念与方法 190
7.2.1 软件需求的三个不同层次的含义 190
7.2.2 需求的获取与分析 191
7.2.3 需求获取方法 192
7.3 用例图与用例建模 194
7.3.1 用例图 194
7.3.2 用例建模 195
7.4 用例建模实例 198
7.5 领域模型的概念与创建方法 211
7.6 领域模型实例 213
7.7 对象设计与职责分配模式 216
7.7.1 信息专家模式 217
7.7.2 创造者模式 218
7.7.3 低耦合模式 221
7.7.4 高内聚模式 224
7.7.5 控制器模式 225
7.7.6 多态模式 227
7.7.7 纯虚构模式 229
7.7.8 间接模式 232
7.7.9 受保护变化模式 233
7.8 本章总结 235
7.9 练习题 235
第8章 面向对象分析与设计案例——宾馆预订与入住系统 239
8.1 宾馆预订与入住系统需求描述 239
8.1.1 中文描述 239
8.1.2 英语描述 240
8.2 宾馆预订与入住系统的领域模型 241
8.3 宾馆预订与入住软件系统分析 243
8.3.1 宾馆预订与入住软件系统用例建模 243
8.3.2 系统分析的目的 250
8.3.3 系统分析中对象的设计 252
8.3.4 软件体系结构的选择 253
8.3.5 宾馆预订与入住系统的用例分析与实现 256
8.4 宾馆预订与入住系统的设计 268
8.4.1 用户输入/输出设计 269
8.4.2 宾馆预订与入住系统数据库设计 275
8.5 类的详细设计 284
8.5.1 控制类Controller的详细设计 284
8.5.2 宾馆类Hotel的详细设计 286
8.5.3 订单类Booking的详细设计 287
8.5.4 客户类Customer的详细设计 288
8.5.5 房间类Room的详细设计 289
8.5.6 服务类Service的详细设计 289
8.5.7 费用类Fee的详细设计 289
8.6 宾馆预订与入住系统的实现 290
8.6.1 实现图 290
8.6.2 实现策略 291
8.6.3 类的实现 291
8.6.4 关联的实现 296
8.6.5 操作的实现 299
8.7 本章总结 308
8.8 练习题 309
8.9 课下设计——编程作业 310
8.10 课程项目:一个面向对象分析与设计的软件项目 311
参考文献 314