写给大家看的面向对象编程书(第3版)
分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,综合,
品牌: Matt Weisfeld
基本信息·出版社:人民邮电出版社
·页码:266 页
·出版日期:2009年
·ISBN:7115197768/9787115197764
·条形码:9787115197764
·包装版本:3版
·装帧:平装
·开本:16
·正文语种:中文
产品信息有问题吗?请帮我们更新产品信息。
内容简介《写给大家看的面向对象编程书(第3版)》是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,《写给大家看的面向对象编程书(第3版)》还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器技术等。《写给大家看的面向对象编程书(第3版)》内容精炼,示例简单明了,适合各层次面向对象开发人员阅读,也是高校相关专业面向对象课程的理想教学参考书。
作者简介Matt Weisfeld,资深软件技术专家。在C++、Smalltalk、.NET和Java方面具有20多年的专业软件开发经验、项目管理经验和培训经验。此外,他也是许多主要计算机技术杂志和专业期刊的撰稿人。
媒体推荐“要想创建高质量的软件,深入掌握你看似熟悉、实则没有真正理解的对象和类的各种精妙之处是必不可少的。而耍想做到这一点,请仔细研读本书。”
——Bill McCaxty,资深技术专家,0bject-Oriented Design in Java作者 “本书以生动有趣的风格深刻阐述了面向对象之道,很好地做到了深入浅出,不仅适合初学者,有经验的程序员也能从中获益。” ——coderanch.com
编辑推荐《写给大家看的面向对象编程书(第3版)》与众不同,用非常通俗易懂的方式,结合卓有趣味的示例,清晰透彻地阐述了面向对象的精體。书中不涉及任何特定编程语言的细节,而是把重点放在引导读者学会如何以对象的方式思考。新版本增加了许多与面向对象紧密相关的应用主题,包括XML、UML建模语言、持久对象、分布式计算和客户/服务器等,更加贴近实战。
面向对象是目前许多主流程序设计语言的核心概念,很大程度上,可以说要想学好用好一门面向对象语言,首先必须领会面向对象编程思想。
讲面向对象的书已经很多,但是理解面向对象之道对于很多人来说仍然不是容易的事情。
目录
第1章面向对象概念介绍1
1.1过程式程序设计与OO程序设计2
1.2从过程式开发转向面向对象开发4
1.2.1过程式程序设计5
1.2.2OO程序设计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.3is-a关系17
1.8多态18
1.9组合20
1.9.1抽象21
1.9.2has-a关系21
1.10小结21
1.11本章使用的示例代码21
1.11.1TestPerson示例:C#.NET21
1.11.2TestPerson示例:VB.NET22
1.11.3TestShape示例:C#.NET23
1.11.4TestShape示例:VB.NET25
第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.1TestNumber示例:C#.NET54
3.9.2TestNumber示例:VB.NET55
第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.1TestCab示例:C#.NET65
4.10.2TestCab示例:VB.NET66
第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.1TestMath示例:C#.NET79
5.11.2TestMath示例:VB.NET80
第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.4UML用例:明确协作关系95
6.2.5第一轮CRC卡98
6.2.6UML类图:对象模型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.1TestShape示例:C#.NET115
7.7.2TestShape示例:VB.NET117
第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.4UML对象模型133
8.5小结137
8.6参考书目137
8.7本章使用的示例代码138
8.7.1TestShape示例:C#.NET138
8.7.2TestShape示例:VB.NET140
第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什么是UML154
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章对象和可移植数据:XML164
11.1可移植数据164
11.2XML165
11.3XML与HTML166
11.4XML和面向对象语言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串行化过程中使用XML183
12.4写至关系数据库186
12.5加载驱动程序189
12.5.1建立连接189
12.5.2SQL语句190
12.6小结192
12.7参考书目192
12.8本章使用的示例代码192
12.8.1Person类示例:C#.NET193
12.8.2Person类示例:VB.NET195
第13章对象与因特网197
13.1分布式计算的演进197
13.2基于对象的脚本语言197
13.3JavaScript验证示例200
13.4Web页面中的对象202
13.4.1JavaScript对象202
13.4.2Web页面控件204
13.4.3声音播放器205
13.4.4电影播放器205
13.4.5Flash206
13.5分布式对象和企业206
13.5.1公共对象请求代理体系结构(CORBA)207
13.5.2Web服务定义210
13.5.3Web服务代码213
13.5.4Invoice.cs214
13.5.5Invoice.vb215
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.2Smalltalk的模型/视图/控制器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.1C#.NET244
15.7.2VB.NET247
索引250
……[看更多目录]
序言这不是一本单纯讲解语法的编程书,也不是一本纯粹的概念书,作者摆脱编程书容易陷入的语法细节,从面向对象思维过程这个更高层次将面向对象的概念娓娓道来,将抽象的概念与具体的示例有机地结合在一起,让读者得以“既见树木,又见森林”。
从内容的组织上看,作者首先回答了面向对象开发中最基本的两个问题:对象是什么,类又是什么。在这个基础上,通过简明的例子清晰地展示了面向对象的重要特性:封装和数据隐藏、继承、多态和组合。为全书内容的展开铺设了一个框架。
与其他面向对象书不同的是,这本书深入分析了如何采用对象思维方式思考,逐步从基本概念过渡到高级概念后,增加了一些与面向对象概念密切相关的应用主题,包括XML、UMIL建模语言、持久存储、分布式计算和客户/服务器技术等。也许我们已经习惯于“语法一简单例子一复杂应用”的介绍模式,而这种组织方式更贴近于开发人员的学习曲线,从本书不断修订再版和持续热销可以看出,这种安排更容易让人接受。
这本书吸引我们的不光是内容上的合理取舍和结构的精巧组织,还在于作者采用了卓有趣味的示例来加深理解。作者尽可能用最简单明了的例子让读者对概念有全面、具体的了解,并且将面向对象思维的触角向外延伸,在拓宽面向对象应用领域的同时,也使读者的思路随之打开,这对于进一步地学习面向对象设计或面向对象编程大有益处。
在此深深地感谢我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。
全书主要由张雷生、刘晓兵翻译,并得到王恒、牛亚峰、苏金国、刘亮、王小振、高强、范松峰等的帮助,全体人员共同完成了本书的翻译工作,最后由张雷生、刘晓兵统稿。
由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。
文摘插图:
第2章 如何以对象方式思考
第1章 中,我们学习了基本的面向对象(OO)概念。本书余下的部分将更深入地分析这些概念,还将介绍另外一些概念。不管是不是OO设计,好的设计都要考虑很多因素。OO设计的基本单元是类。OO设计所期望的最终结果是一个健壮、功能完备的对象模型,换句话说,也就是一个完备的系统。
与日常生活的大多数情况一样,解决一个问题没有纯粹的对与错。同一个问题往往可能有多种不同的处理方法。所以试图设计一个O0解决方案时,不要想着一上来就完成一个完美的设计(总会有需要改进的地方)。真正需要的是进行头脑风暴,让你能从不同方向展开你的思维过程。尝试解决一个问题时,不要试图遵照任何标准或约定,因为关键就是要有创造性。
实际上,这个过程开始时,甚至不要考虑特定的编程语言。首要的是找出并解决业务问题。首先完成概念分析和设计。只有当特定技术对于解决业务问题至关重要时才去考虑它,例如,如果脱离无线技术可能无法设计一个无线网络。不过,通常有多种软件解决方案可以考虑。
因此,开始设计一个系统之前,甚至在开始设计一个类之前,先要全面地考虑这个问题,充分享受思考的快乐!这一章中,我们将研究OO方式的思维,这不仅是一门科学,更应算是一门艺术。
思维方式的任何重大改变都是非同小可的。比如,人们一直在讨论从结构化到00开发的转变。这种争论的一个副作用是产生了一个误解,认为结构化和面向对象开发是互斥的。但事实并非如此。从上一章有关包装器的讨论可以了解到,结构化和面向对象开发可以并存。实际上,编写一个OO应用时会大量使用结构化构造。我从未见过没有使用循环和if句等构造的OO代码。不过,要真正切换Noo设计确实需要多方面的努力。