麵嚮對象的思考過程(原書第4版)

麵嚮對象的思考過程(原書第4版) pdf epub mobi txt 电子书 下载 2025

[美] Matt Weisfeld
圖書標籤:
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
译者序
作者简介
前言
第1章 面向对象的概念简介 1
1.1 基本概念 1
1.2 对象及遗留系统 2
1.3 过程式编程与面向对象编程 3
1.4 由面向过程开发过渡到面向对象开发 5
1.4.1 过程式编程 5
1.4.2 面向对象编程 6
1.5 究竟什么是对象 6
1.5.1 对象数据 6
1.5.2 对象行为 7
1.6 究竟什么是类 10
1.6.1 创建对象 10
1.6.2 属性 11
1.6.3 方法 11
1.6.4 消息 12
1.7 使用类图作为可视化工具 12
1.8 封装和数据隐藏 12
1.8.1 接口 13
1.8.2 实现 13
1.8.3 接口/实现范式的一个真实示例 14
1.8.4 接口/实现范式的模型 14
1.9 继承 15
1.9.1 超类和子类 16
1.9.2 抽象 16
1.9.3 is-a关系 17
1.10 多态 18
1.11 组合 21
1.11.1 抽象 21
1.11.2 has-a关系 21
1.12 结语 21
1.13 本章中使用的示例代码 22
1.13.1 C#.NET版本的TestPerson类 22
1.13.2 C#.NET版本的TestShape类 23
第2章 如何以面向对象的方式进行思考 25
2.1 清楚接口和实现之间的区别 26
2.1.1 接口 27
2.1.2 实现 27
2.1.3 一个接口/实现示例 28
2.2 使用抽象思维设计接口 31
2.3 尽可能提供最小化的用户接口 32
2.3.1 确定用户? 33
2.3.2 对象行为 33
2.3.3 环境约束 34
2.3.4 识别公共接口 34
2.3.5 识别实现 34
2.4 结语 35
2.5 引用 35
第3章 高级的面向对象概念 36
3.1 构造函数 36
3.1.1 什么是构造函数调用 37
3.1.2 构造函数中包含什么 37
3.1.3 默认构造函数 37
3.1.4 使用多个构造函数 38
3.1.5 设计构造函数 41
3.2 错误处理 41
3.2.1 忽略问题 42
3.2.2 检查问题并中止应用程序 42
3.2.3 检查问题并试图恢复 42
3.2.4 抛出异常 43
3.3 作用域的重要性 45
3.3.1 局部属性? 45
3.3.2 对象属性 46
3.3.3 类属性 48
3.4 操作符重载 49
3.5 多重继承 49
3.6 对象操作 50
3.7 结语 51
3.8 引用 51
3.9 本章中使用的示例代码 51
第4章 类的剖析 53
4.1 类名 53
4.2 注释 55
4.3 属性 55
4.4 构造函数 56
4.5 访问器 58
4.6 公共接口方法 60
4.7 私有实现方法 60
4.8 结语 61
4.9 引用 61
4.10 本章中使用的示例代码 61
第5章 类设计指导 63
5.1 对现实世界系统建模 63
5.2 识别公共接口 64
5.2.1 最小化公共接口 64
5.2.2 隐藏实现 65
5.3 设计健壮的构造函数(以及析构函数) 65
5.4 在类中设计错误处理 66
5.4.1 使用注释给类加上文档 66
5.4.2 构造可以合作的对象 67
5.5 设计时请考虑重用 67
5.6 设计时请考虑扩展性 67
5.6.1 使用描述性的名称 67
5.6.2 抽象不可移植的代码 68
5.6.3 提供一种方式来复制和比较对象 68
5.6.4 保持尽可能小的作用域 69
5.6.5 类的职责与自身高度相关 70
5.7 设计时请考虑可维护性 71
5.7.1 在开发过程中使用迭代 71
5.7.2 测试接口 72
5.8 使用对象持久化 73
5.9 结语 75
5.10 引用 75
5.11 本章中使用的示例代码 75
第6章 使用对象进行设计 77
6.1 设计指导 77
6.1.1 提供正确的分析 79
6.1.2 编写工作陈述文档 80
6.1.3 收集需求 80
6.1.4 开发用户接口的原型 81
6.1.5 识别类 81
6.1.6 确定每个类的职责 81
6.1.7 确定类之间如何协作 81
6.1.8 创建类模型来描述系统 81
6.1.9 建立用户接口原型 82
6.2 对象包装 82
6.2.1 结构化代码 83
6.2.2 包装结构化代码 84
6.2.3 包装不可移植的代码 85
6.2.4 包装已有类 86
6.3 结语 87
6.4 引用 87
第7章 精通继承和组合 88
7.1 重用对象 88
7.2 继承 89
7.2.1 通用和特例 91
7.2.2 设计决策 92
7.3 组合 93
7.4 为什么封装是面向对象的本质 95
7.4.1 继承如何减弱封装 96
7.4.2 关于多态的一个具体例子 97
7.4.3 对象职责 98
7.4.4 抽象类、虚方法和协议 101
7.5 结语 102
7.6 引用 103
7.7 本章中使用的示例代码 103
第8章 框架和重用:使用接口和抽象类进行设计 105
8.1 代码:重用还是不重用 105
8.2 什么是框架 106
8.3 什么是契约 107
8.3.1 抽象类 108
8.3.2 接口 110
8.3.3 综合运用 112
8.3.4 编译器佐证 114
8.3.5 创建契约 115
8.3.6 系统插接点 117
8.4 一个电子商务示例 117
8.4.1 一个电子商务问题 117
8.4.2 非重用方式 118
8.4.3 电子商务解决方案 119
8.4.4 UML对象模型 120
8.5 结语 124
8.6 引用 124
8.7 本章中使用的示例代码 124
第9章 创建对象及面向对象设计 128
9.1 组合关系 129
9.2 分阶段构建 129
9.3 组合类型 131
9.3.1 聚合 131
9.3.2 联合 132
9.3.3 同时使用联合和聚合 133
9.4 避免依赖 133
9.5 基数 134
9.5.1 多个对象联合 136
9.5.2 可选的联合 137
9.6 一个综合性示例 137
9.7 结语 138
9.8 引用 138
第10章 创建对象模型 139
10.1 什么是UML 139
10.2 类图结构 140
10.3 属性和方法 141
10.3.1 属性 142
10.3.2 方法 142
10.4 访问符号 142
10.5 继承 143
10.6 接口 145
10.7 组合 145
10.7.1 聚合 145
10.7.2 联合 146
10.8 基数 147
10.9 结语 148
10.10 引用 149
第11章 对象与可移植数据:XML和JSON 150
11.1 可移植数据 150
11.2 XML 152
11.3 XML与HTML 152
11.4 XML和面向对象的语言 153
11.5 在企业间共享数据 154
11.6 使用DTD验证文档 155
11.7 将DTD集成到XML文档中 156
11.8 使用层叠样式表 161
11.9 JavaScript对象标记 163
11.10 结语 167
11.11 引用 167
第12章 持久化对象:序列化、封送及关系型数据库 168
12.1 持久化对象基础 168
12.2 将对象保存到平面文件中 169
12.2.1 序列化文件 170
12.2.2 再次讨论实现和接口 172
12.2.3 为什么不保存方法 173
12.3 序列化过程中使用XML 173
12.4 写入关系型数据库 176
12.5 结语 179
12.6 引用 179
12.7 本章中使用的示例代码 179
第13章 Web服务、移动应用及混合应用中的对象 183
13.1 分布式计算的演进 183
13.2 基于对象的脚本语言 184
13.3 JavaScript验证示例 186
13.4 网页中的对象 189
13.4.1 JavaScript对象 189
13.4.2 网页控制器 191
13.4.3 声音播放器 192
13.4.4 电影播放器 192
13.4.5 Flash动画 193
13.5 分布式对象及企业 193
13.5.1 公共对象请求代理体系结构 195
13.5.2 Web服务的定义 197
13.5.3 Web服务代码 201
13.5.4 表征状态转移 202
13.6 结语 203
13.7 引用 203
第14章 对象及客户端/服务器端应用程序 204
14.1 客户端/服务器端方式 204
14.2 私有方式 205
14.2.1 序列化对象代码 205
14.2.2 客户端代码 206
14.2.3 服务器端代码 208
14.2.4 运行该私有的客户端/服务器端示例 209
14.3 非私有方式 210
14.3.1 对象定义代码 211
14.3.2 客户端代码 212
14.3.3 服务器端代码 213
14.3.4 运行非私有客户端/服务器端示例 215
14.4 结语 215
14.5 引用 216
14.6 本章中使用的示例代码 216
第15章 设计模式 217
15.1 为什么使用设计模式 218
15.2 Smalltalk的模型/视图/控制器 219
15.3 设计模式类型 220
15.3.1 创建型模式? 220
15.3.2 结构型模式 224
15.3.3 行为型模式 227
15.4 反模式 228
15.5 结语 229
15.6 引用 229
15.7 本章中使用的示例代码? 229
· · · · · · (收起)

具体描述

〔簡介〕

本書是一部獨具特色的麵嚮對象技術著作。書中結閤代碼示例生動透徹地講述瞭麵嚮對象思想的精髓,讓讀者真正學會以對象方式進行思考。本書共15章,在結構上可以分為兩部分:第一部分包括第1~10章,探討麵嚮對象的基本概念,比如封裝、多態、繼承等;第二部分包括第11~15章,專注於將這些概念應用於一些通用的麵嚮對象技術中,並結閤瞭一些實用的應用程序。

本書內容精煉,示例簡單明瞭,適閤各層次麵嚮對象開發人員閱讀,也是高校相關專業麵嚮對象課程的理想教學參考書。

〔譯序〕

很多IT從業人員進入這個行業都是從學習一門編程語言開始的。對於編程,我們往往過於關注語言的語法細節,反而忽略瞭其背後的設計理念。麵嚮對象的思考過程就是一個非常優秀的設計理念。它可以獨立於語言存在。如果你熟練掌握瞭麵嚮對象的思考過程,那麼就可以輕鬆地在不同的麵嚮對象的語言之間切換。

本書透徹地闡述瞭麵嚮對象這一概念。作者Matt在書中反復強調學習麵嚮對象的思考過程優於學習任何編程語言或工具。事實上,他也是這麼做的。Matt闡述瞭麵嚮對象的三要素:繼承、封裝、多態,並且自己加上瞭第四個要素:組閤。關於組閤,Matt不惜篇幅做瞭大量的講解,並且列舉瞭很多通俗易懂的例子,這也是本書的一大特色。

Matt也糾正瞭人們的一些普遍誤解,比如麵嚮對象的範式與麵嚮過程的範式並不是完全對立的關係。而且在應用麵嚮對象的設計和開發時,Matt也講解瞭不少如何與遺留係統集成的技巧。同時,Matt也簡要介紹瞭UML這個建模利器。為瞭不混淆重點,他把介紹UML的章節放置在很靠後的位置。因為他明白,先瞭解麵嚮對象的各項概念是最重要的。

我雖然擁有多年的從業經驗,但是再看本書時仍然有不少收獲。其實自從我接觸瞭函數式編程,就漸漸成為函數式編程的擁躉。我會時不時地“鼓吹”函數式編程範式的好處,順便“貶低”一下麵嚮對象編程。但同時我也有個疑問,既然函數式編程這麼好,為什麼這幾年的發展隻能算是波瀾不驚,而沒有掀起大風浪呢?讀瞭本書之後,我似乎找到瞭答案。首先麵嚮對象的思考過程更加符閤大傢對世界的直觀感受,畢竟不是每個人都是數學傢。函數式編程可以簡化很多問題,但它並不能簡化所有問題。其次是麵嚮對象的編程範式和函數式編程的範式並不是完全對立的,正如作者講過,麵嚮過程的編程範式和麵嚮對象的編程範式也不是完全對立的。比如目前流行的一些語言(Scala、Go等)都具備函數式的特點,也兼具麵嚮對象的特點(隻不過它們的麵嚮對象的機製與傳統的方式有所不同)。所以無論你喜歡哪種編程範式,瞭解彼此的不同之處是至關重要的。而本書則是瞭解麵嚮對象範式的優秀書籍。

本書已經更新到瞭第4版。從本書長達10多年的跨度來看,麵嚮對象範式經久不衰。Matt也適時地在新版中加入瞭一些新的主題,比如可移植數據、分布式係統、Web服務等。Matt不僅闡述瞭這些技術,還講述瞭它們的前世今生。這樣可以幫助讀者更加充分地瞭解技術的演化之路。

無論你是否有麵嚮對象編程的經驗,本書都適閤你作為麵嚮對象思考的旅程開端。最後,希望本書能給大傢帶來超凡的閱讀體驗。

用户评价

评分

##绝对的标题党,xml的介绍能讲一章 js表单验证也能讲一章,面向对象的思想呢?不要被书名骗了,而且这价格都和几大经典一样了,内容肤浅得不行,完全是凑字数,东扯西扯,扯够两进多页。

评分

##泛泛而谈,非常一般的书

评分

用来入门还是不错的

评分

##对于面向对象的入门思考还是挺有帮助的,看这书前,对于日期的排序,我就像写C一样,main函数里面直接写函数,看完这书后,对于日期的排序,我就是先写个继承comparator接口的日期类,comparaotor的实现方法中,完成日期排序逻辑,根据日期生成不同的日期实例进行比较排序

评分

##很棒的入门书。作者特意强调了组合在面向对象里面的地位,很棒的观点。缺点大概就是作者三步一回头,读起来看不到具体的脉络,结果最后啥都介绍了一点

评分

##绝对的标题党,xml的介绍能讲一章 js表单验证也能讲一章,面向对象的思想呢?不要被书名骗了,而且这价格都和几大经典一样了,内容肤浅得不行,完全是凑字数,东扯西扯,扯够两进多页。

评分

用来入门还是不错的

评分

##对于面向对象的入门思考还是挺有帮助的,看这书前,对于日期的排序,我就像写C一样,main函数里面直接写函数,看完这书后,对于日期的排序,我就是先写个继承comparator接口的日期类,comparaotor的实现方法中,完成日期排序逻辑,根据日期生成不同的日期实例进行比较排序

评分

##作者是一个太极高手,本着蹭蹭不进去的原则,用了200余页的篇幅完美绕开了核心。

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有