第1部分 面向对象基础 1
第1章 面向对象概述 3
1.1 程序设计思想的发展 3
1.2 面向对象语言的发展历史 6
1.3 面向过程 8
1.4 面向对象 9
1.5 为什么要面向对象 11
1.6 面向对象的应用范围 12
1.7 面向对象的迷思 13
1.7.1 面向对象会导致性能降低? 13
1.7.2 面向对象语言=面向对象编程? 14
1.8 小结 16
第2章 面向对象理论 17
2.1 类 17
2.2 对象 23
2.3 接口 26
2.4 抽象类 31
2.5 抽象 32
2.6 三大核心特征 34
2.6.1 封装 34
2.6.2 继承 44
2.6.3 多态 46
2.7 小结 50
第2部分 面向对象实战 53
第3章 面向对象分析和设计全流程概述 55
第4章 需求模型 57
4.1 需求详解 57
4.2 需求的重要性 59
4.3 需求分析 60
4.3.1 需求分析的目的 60
4.3.2 需求分析的方法 63
4.4 用例方法 69
4.4.1 用例的具体写法 70
4.4.2 要画图吗 74
4.5 功能 75
4.6 用例图的陷阱 78
4.7 SSD 79
4.8 FAQ 81
4.9 小结 82
第5章 领域模型 84
5.1 领域建模三字经 84
5.2 找名词 85
5.3 加属性 87
5.4 连关系 88
5.5 FAQ 89
5.6 小结 90
第6章 设计模型 91
6.1 设计模型总览 91
6.2 类模型 92
6.2.1 第一步(照猫画虎):领域类映射 93
6.2.2 第二步(精雕细琢):应用设计原则和设计模式 101
6.2.3 第三步(照本宣科):拆分辅助类 105
6.3 动态模型 106
6.3.1 模型分类 106
6.3.2 建模实践 108
6.3.3 建模技巧 110
6.4 小结 111
第7章 实现模型 112
7.1 编程语言的差异性 112
7.2 C++ 113
7.2.1 类 113
7.2.2 访问控制 114
7.2.3 继承 117
7.2.4 多态 126
7.2.5 抽象类 130
7.2.6 接口 135
7.3 Java 136
7.3.1 类 137
7.3.2 访问控制 138
7.3.3 继承 142
7.3.4 多态 144
7.3.5 抽象类 146
7.3.6 接口 150
7.4 小结 152
第3部分 面向对象技巧 153
第8章 设计原则 155
8.1 内聚 155
8.1.1 内聚究竟是什么 155
8.1.2 内聚的分类 157
8.2 耦合 168
8.2.1 耦合究竟是什么 168
8.2.2 耦合的分类 169
8.3 高内聚低耦合 180
8.4 类设计原则 188
8.4.1 SRP 188
8.4.2 OCP 191
8.4.3 LSP 193
8.4.4 ISP 197
8.4.5 DIP 202
8.4.6 如何应用设计原则 209
8.4.7 NOP 210
8.5 小结 211
第9章 设计模式 212
9.1 设计模式简介 212
9.2 设计模式只是一把锤子 213
9.3 设计模式之道 214
9.3.1 知易行难——设计模式应用的问题 214
9.3.2 拨云见日——寻找设计模式之道 215
9.3.3 庖丁解牛——解析设计模式之道 217
9.3.4 举一反三——活学活用设计模式之道 218
9.4 原则VS模式 219
9.5 模式详解 225
9.5.1 Prototype模式 226
9.5.2 Decorator模式 238
9.5.3 Facade模式 250
9.5.4 Observer模式 264
9.6 小结 274
第10章 UML 275
10.1 UML简介 275
10.2 UML只是语言 275
10.3 UML应用 277
10.4 需求分析阶段 278
10.4.1 用例图 278
10.4.2 用例图的关系 281
10.5 设计阶段 284
10.5.1 类图 284
10.5.2 类关系图 288
10.5.3 动态图 305
10.5.4 结构图 318
10.6 部署阶段 320
10.7 小结 322
第4部分 面向对象架构设计 325
第11章 面向对象架构设计基础 327
11.1 什么是架构 327
11.2 面向对象的架构设计 329
11.3 小结 330
第12章 面向对象架构设计流程 332
12.1 架构设计总体思想 332
12.2 业务架构 333
12.2.1 全新的业务系统 333
12.2.2 已有架构优化 335
12.2.3 业务架构实例:京西商城 336
12.3 领域架构 337
12.4 软件架构 338
12.4.1 第一步:照猫画虎 338
12.4.2 第二步:按图索骥 340
12.4.3 第三步:深思熟虑 342
12.5 小结 344
第13章 面向对象架构设计技巧 345
13.1 架构设计原则 345
13.1.1 客户需求优先原则 345
13.1.2 适当超前原则 347
13.2 架构设计屠龙刀 350
13.2.1 “拆”与“合” 350
13.2.2 “拆”的常见手段 352
13.2.3 “合”的常见手段 362
13.3 优秀架构师特质:创新 366
13.4 小结 367