写给大家看的面向对象编程书
2009-4
人民邮电出版社
Matt Weisfeld
266
无
这不是一本单纯讲解语法的编程书,也不是一本纯粹的概念书,作者摆脱编程书容易陷入的语法细节,从面向对象思维过程这个更高层次将面向对象的概念娓娓道来,将抽象的概念与具体的示例有机地结合在一起,让读者得以“既见树木,又见森林”。 从内容的组织上看,作者首先回答了面向对象开发中最基本的两个问题:对象是什么,类又是什么。在这个基础上,通过简明的例子清晰地展示了面向对象的重要特性:封装和数据隐藏、继承、多态和组合。为全书内容的展开铺设了一个框架。 与其他面向对象书不同的是,这本书深入分析了如何采用对象思维方式思考,逐步从基本概念过渡到高级概念后,增加了一些与面向对象概念密切相关的应用主题,包括XML、UMIL建模语言、持久存储、分布式计算和客户/服务器技术等。也许我们已经习惯于“语法一简单例子一复杂应用”的介绍模式,而这种组织方式更贴近于开发人员的学习曲线,从本书不断修订再版和持续热销可以看出,这种安排更容易让人接受。 这本书吸引我们的不光是内容上的合理取舍和结构的精巧组织,还在于作者采用了卓有趣味的示例来加深理解。作者尽可能用最简单明了的例子让读者对概念有全面、具体的了解,并且将面向对象思维的触角向外延伸,在拓宽面向对象应用领域的同时,也使读者的思路随之打开,这对于进一步地学习面向对象设计或面向对象编程大有益处。 在此深深地感谢我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。 全书主要由张雷生、刘晓兵翻译,并得到王恒、牛亚峰、苏金国、刘亮、王小振、高强、范松峰等的帮助,全体人员共同完成了本书的翻译工作,最后由张雷生、刘晓兵统稿。 由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。
本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器技术等。 本书内容精炼,示例简单明了,适合各层次面向对象开发人员阅读,也是高校相关专业面向对象课程的理想教学参考书。
Matt Weisfeld,资深软件技术专家。在C++、Smalltalk、.NET和Java方面具有20多年的专业软件开发经验、项目管理经验和培训经验。此外,他也是许多主要计算机技术杂志和专业期刊的撰稿人。
第1章 面向对象概念介绍 1.1 过程式程序设计与OO程序设计 1.2 从过程式开发转向面向对象开发 1.3 对象到底是什么 1.4 类到底是什么 1.5 使用UML完成类图建模 1.6 封装和数据隐藏 1.7 继承 1.8 多态 1.9 组合 1.10 小结 1.11 本章使用的示例代码 第2章 如何以对象方式思考 2.1 了解接口与实现之间的区别 2.2 设计接口时使用抽象思维 2.3 尽可能为用户提供最小接口 2.4 小结 2.5 参考书目 第3章 高级面向对象概念 3.1 构造函数 3.2 错误处理 3.3 作用域概念 3.4 操作符重载 3.5 多重继承 3.6 对象操作 3.7 小结 3.8 参考书目 3.9 本章使用的示例代码 第4章 类剖析 第5章 类设计指导原则 第6章 利用对象实现设计 第7章 掌握继承和组合 第8章 框架与重用:使用接口和抽象类实现设计 第9章 构建对象 第10章 用UML创建对象模型 第11章 对象和可移植数据:XML 第12章 持久对象:串行化和关系数据库 第13章 对象与因特网 第14章 对象和客户/服务器应用 第15章 设计模式 索引
第2章 如何以对象方式思考 第1章 中,我们学习了基本的面向对象(OO)概念。本书余下的部分将更深入地分析这些概念,还将介绍另外一些概念。不管是不是OO设计,好的设计都要考虑很多因素。OO设计的基本单元是类。OO设计所期望的最终结果是一个健壮、功能完备的对象模型,换句话说,也就是一个完备的系统。 与日常生活的大多数情况一样,解决一个问题没有纯粹的对与错。同一个问题往往可能有多种不同的处理方法。所以试图设计一个O0解决方案时,不要想着一上来就完成一个完美的设计(总会有需要改进的地方)。真正需要的是进行头脑风暴,让你能从不同方向展开你的思维过程。尝试解决一个问题时,不要试图遵照任何标准或约定,因为关键就是要有创造性。 实际上,这个过程开始时,甚至不要考虑特定的编程语言。首要的是找出并解决业务问题。首先完成概念分析和设计。只有当特定技术对于解决业务问题至关重要时才去考虑它,例如,如果脱离无线技术可能无法设计一个无线网络。不过,通常有多种软件解决方案可以考虑。 因此,开始设计一个系统之前,甚至在开始设计一个类之前,先要全面地考虑这个问题,充分享受思考的快乐!这一章中,我们将研究OO方式的思维,这不仅是一门科学,更应算是一门艺术。 思维方式的任何重大改变都是非同小可的。比如,人们一直在讨论从结构化到00开发的转变。这种争论的一个副作用是产生了一个误解,认为结构化和面向对象开发是互斥的。但事实并非如此。从上一章有关包装器的讨论可以了解到,结构化和面向对象开发可以并存。实际上,编写一个OO应用时会大量使用结构化构造。我从未见过没有使用循环和if句等构造的OO代码。不过,要真正切换Noo设计确实需要多方面的努力。
“要想创建高质量的软件,深入掌握你看似熟悉、实则没有真正理解的对象和类的各种精妙之处是必不可少的。而耍想做到这一点,请仔细研读本书。” ——Bill McCaxty,资深技术专家,0bject-Oriented Design in Java作者 “本书以生动有趣的风格深刻阐述了面向对象之道,很好地做到了深入浅出,不仅适合初学者,有经验的程序员也能从中获益。” ——coderanch.com
《写给大家看的面向对象编程书(第3版)》与众不同,用非常通俗易懂的方式,结合卓有趣味的示例,清晰透彻地阐述了面向对象的精體。书中不涉及任何特定编程语言的细节,而是把重点放在引导读者学会如何以对象的方式思考。新版本增加了许多与面向对象紧密相关的应用主题,包括XML、UML建模语言、持久对象、分布式计算和客户/服务器等,更加贴近实战。 面向对象是目前许多主流程序设计语言的核心概念,很大程度上,可以说要想学好用好一门面向对象语言,首先必须领会面向对象编程思想。 讲面向对象的书已经很多,但是理解面向对象之道对于很多人来说仍然不是容易的事情。
无
具体的语言实现是次要的,重要的是对一种编程思想的掌握,这本书用生活中的例子为读者剖析面向对象思想中的各个重要且复杂的概念,让读者能够很好的了解,获益匪浅
是本非常不错的书 OO设计中的各种知识都有讲到 而且不局限于具体语言 其实书中也说了 好的编程技巧不只局限OO 不过这本书还是在努力教给大家什么OO 如何用OO去思考问题
有人说这本书翻译的晦涩难懂 可能是他本人英文太好 又对翻译要求很高 其实在我我看来这本说读起来不是那么难读懂 计算机专业或者对编程有兴趣的人应该都能可以读懂这本书 其实翻译外文专业书籍都会出现这样的问题 不是每个人都能读懂外文书籍的 也不是每位翻译人员都用很深的专业背景的 所以我还是推荐大家对这本书
不过我收到这本书 有几页印糊了 不知道大家的是不是这样
讲的不错,容易看进去。
中午刚刚拿到了这本书,暂时还没有细看,不过粗略看了一下,无论是封面设计还是其它,觉得很满意,以后细看了再来详细评论
这本书由于目标定位模糊,翻译折扣等问题,在“让人读懂”这方面很略有缺憾。
它的好处是篇幅较短,可以给“想要理解oo程序构建过程与原理”的朋友带来一个迅速有效的宏观概览。
有一本叫《大象》的UML书更加适合这种路子,另外如果跳出电脑程序的层面,只为分析“面向对象”的合理思路的画,不妨看看《餐巾纸的背面》……
把程序书中散乱的面向对象的内容拿出单独进行了讲解,还是很有启发,有助启发你思考,内容其实并不是所独有,很多书中都有涉及,但是值得买来集中思考一下这些问题。
以教育部颁布的最新版《普通高等学校招生全国统一考试大纲(课程标准实验版)》为依据,涵盖大纲要求的全部词汇,适合高中各年级学生使用。 将大纲词汇按正序编排,根据其难易程度分为核心单词及简单单词,并补充认知词,方便考生根据自身需要有针对性地进行学习。 以“词根+联想”记忆法为主,辅以谐音、形近词、组合词等多种记忆方法,并配有生动、幽默的插图,背单词不再枯燥。 精讲词汇搭配用法,给出派生词、同义词及反义词,全面扩大考生的词汇量。辨析易混词及词组的异同,特绘“辨析组图”,令词汇的用法区别更形象、更直观。 讲解真题中出现过的词汇相关考点,帮助考生在记忆单词的同时掌握词汇常考用法,熟悉高考考查重点。 设有返记菜单及单元测试,方便考生检验记忆效果。单元测试中精选了大量高考真题,并标明确切的考试年份及省份,便于考生熟悉考试难度。 随书附赠240分钟MP3光盘一张,由专业人员朗读,配合学习,效果更佳。内容推荐本书以教育部颁布的最新版《普通高等学校招生全国统一考试大纲(课程标准实验版)》为依据,涵盖大纲要求的全部词汇。本书沿用了“红宝书系列”中的“词根+联想”记忆法,辅以谐音、形近词、组合词等多种记忆方法帮助高考考生扫除记忆障碍。书中还有例句、高考考点、用法精讲、同义词辨析、衍生词等内容,帮助考生全方位掌握单词,迎战高考。随书附赠光盘录音时长240分钟,内容包括核心单词40个Word List及认知词中的英文单词及其中文释义。作者简介俞敏洪,新东方教育科技集团董事长兼总裁。 1962年生,江苏江阴人。北京大学西语系毕业。1985年任北京大学外语系教师,1993年创办北京新东方学校,2003年成立新东方教育科技集团。2006年9月7日,新东方在美国纽约证券交易所成功上市,成为第一家在海外上市的中国教育服目录高中英语词汇常见词缀、 词根核心单词 Word List 1 Word List 2 Word List 3 Word List 4 Word List 5 Word List 6 Word List 7 Word List 8以教育部颁布的最新版《普通高等学校招生全国统一考试大纲(课程标准实验版)》为依据,涵盖大纲要求的全部词汇,适合高中各年级学生使用。 将大纲词汇按正序编排,根据其难易程度分为核心单词及简单单词,并补充认知词,方便考生根据自身需要有针对性地进行学习。 以“词根+联想”记忆法为主,辅以谐音、形近词、组合词等多种记忆方法,并配有生动、幽默的插图,背单词不再枯燥。 精讲词汇搭配用法,给出派生词、同义词及反义词,全面扩大考生的词汇量。辨析易混词及词组的异同,特绘“辨析组图”,令词汇的用法区别更形象、更直观。 讲解真题中出现过的词汇相关考点,帮助考生在记忆单词的同时掌握词汇常考用法,熟悉高考考查重点。 设有返记菜单及单元测试,方便考生检验记忆效果。单元测试中精选了大量高考真题,并标明确切的考试年份及省份,便于考生熟悉考试难度。 随书附赠240分钟MP3光盘一张,由专业人员朗读,配合学习,效果更佳。内容推荐本书以教育部颁布的最新版《普通高等学校招生全国统一考试大纲(课程标准实验版)》为依据,涵盖大纲要求的全部词汇。本书沿用了“红宝书系列”中的“词根+联想”记忆法,辅以谐音、形近词、组合词等多种记忆方法帮助高考考生扫除记忆障碍。书中还有例句、高考考点、用法精讲、同义词辨析、衍生词等内容,帮助考生全方位掌握单词,迎战高考。随书附赠光盘录音时长240分钟,内容包括核心单词40个Word List及认知词中的英文单词及其中文释义。作者简介俞敏洪,新东方教育科技集团董事长兼总裁。 1962年生,江苏江阴人。北京大学西语系毕业。1985年任北京大学外语系教师,1993年创办北京新东方学校,2003年成立新东方教育科技集团。2006年9月7日,新东方在美国纽约证券交易所成功上市,成为第一家在海外上市的中国教育服目录高中英语词汇常见词缀、 词根核心单词 Word List 1 Word List 2 Word List 3 Word List 4 Word List 5 Word List 6 Word List 7 Word List 8
读起来轻松,易懂。 概念比较基础,让我理解了接口的含义。
这个系列都是通俗易懂的极品!
简单通看了一遍,虽说都学过了,但是系统的看看的话还是不错的
帮同学买的,她感觉还不错
还没仔细看,看之后在做仔细评论
内容太过基础,学过纯面向对象语言的人都基本懂,没有涉及类的设计和UML建模
写的还是不容易理解,留着以后再看看吧...
这本书主要的问题在是翻译的人水平太差了,我甚至怀疑他们是不是直接copy的goole的翻译。总之,这本书翻译晦涩,不知所云,稍微有点oo功底的人,一看这个翻译就是垃圾~~~
不服气的人你可以拿着英文书对照一下
他奶奶的,以后千万别让这些没技术功底的人翻译,误人子弟啊
这是“The object-oriented thought process" 3rd的中文翻译版。中文的书名应该是配合出版社的“写给大家看的xxx”系列。
个人感觉精华是1-9章,可以作为很好的面向对象入门读物。第10章是uml 简介。后面就是一些具体应用,浮光掠影的介绍了一下。
行文当中的例子是用的java,每章后面附有对应的C#和.net的实现。例子都很简短,有最简单的语法基础就可以看了。
面向对象的语言只是面向对象设计和开发的工具而已。这本书以思想为主,没有本末倒置。思路清晰,翻译的也很流畅。
不足之处:书中引用和推荐看的几本书,出版时间都比较早了,很难找到。另外就是,第10章往后的内容太简略了,不够深入。当然也不能苛求作者,因为后面每一章的内容都可以单独写本书了。
饿着肚子浏览了一遍,感觉对“面向对象”的思想变得非常清晰。抛开程序和其它读物高深的术语,任何一个对世界运作有所认识的人都应该“天生”理解面向对象。结构,抽象,分类,组织,这是很多领域都用到的思维方式。
上个学期学了C++,这个学期在学Java,可是仍然搞不清楚面向对象到底是什么。这本书恰恰好,单纯的面向对象的概念剖析,加上一些例子,讲解非常清楚。起码我这个白痴都看得非常明白,而且,最重要的,这本书没有在语言本身上设置任何障碍,基本你知道编程语言是啥东西,知道java的hello world怎么写,看懂书上的例子没问题喽。
然后,就是书的内容,大概分为三个部分吧。
第一部分,面向对象的基本概念,继承、多态、封装、组合、接口、实现、框架、类设计指导原则,以及UML实例设计剖析。
第二部分,oo思想应用拓展。反正我以前只是以为面向对象就是C++,Java这些语言哩。但是,在了解了关于XML,对象持久性,串行化,对象的网络应用等等之后,觉得脑袋不是那么偏狭了。
第三部分,我觉得是是一个升华,更是一个好的指导。简单的设计模式的引导性介绍,指导了进一步深入学习面向对象思想。
书的内容不多,大概200多页,每页的文本容量不算大。每天看点,大概两个星期看完的。因为我对第二部分说的东西以前完全没有接触,也没有理解,所以看得不如前一部分省力,回头还得再看看。
总得来说,书写得非常简单易懂,一点都不晦涩。作为菜鸟的OO思想入门书,不错。我个人觉得还是有收获的。
一本只有250页左右的书,我花了一个五天读完了。总体来说这确实是一本适合入门的面向对象设计书。
个人感觉书中的7,8,9章对自己的帮助最大.
看完这本书接口给我的最大印象在于它在建立契约中的作用。这里所谓的契约就是指代码的标准化,举个例子假设我们所有的类都有一个get id方法,多继承在AS3中又是不支持的,但允许使用多个接口,所以当一个子类实现某个契约时(定义id方法)它必须为接口中未实现的方法提供实现。
书中没有明确给出何时使用组合,何时使用继承,其实这本来就没有明确的答案。继承反映出来的是is-a的关系,而组合则是has-a。通常使用组合能更大程度上提高类的灵活性而且不会破坏类的封装。组合又分为聚集和关联两种方式。其中聚集是一种强组合,比如汽车中轮胎和发动机的关系,他们共同组成了一台汽车必须拥有的部件,没有了其中任何一样汽车都无法工作。关联是一种弱组合,可以理解为汽车中的音像系统,没有了音响系统汽车还是能正常工作。聚集和关联是人们对类角度的不同而分类的。
使用多态可以减少条件判断语句的使用,因为类有自知之明,还是那个很经典的例子
package
{
/**
* ...
* @author
*/
public class Test
{
var shape:Shape;
shape = new Rectangle();
shape.draw();
}
}
class Shape {
public function draw():void;
}
class Clrcle extends Shape {
override public function draw():void
{
super.draw();
trace("a Circle")
}
}
class Rectangle extends Shape {
override public function draw():void
{
super.draw();
trace("a Rect")
}
}
这里新建的shape虽然声明是一个shape,但在实例化是我们定义了他的具体类型(Rectangle),所以最后它调用 的将是自己的类方法。
总之,这是一本入门级别的书,没有高度抽象的语言,而且书也不厚,很适合敲开面向对象程序设计的大门。最后声明下我是新手,如果写的误人子弟了,还请各位拍砖:-)
原文:http://bit.ly/ddiEkK
大部分是基础概念的讲解,语言风趣,例子都很贴近生活,毕竟是对这个世界建模。。
很兴奋的读了一遍,读完却觉得,知道了,仅此而已,没有对OO留下很深刻的印象或者更深层次的理解,可能作者还是比较注重OO的思想吧
推荐对OO不甚了解的同学看看
工作一年半了,还记得工作之前在简历上写着,熟悉OO思想。现在想起来还真的十分惭愧,再看看一年前写的代码,简直想找个地方埋了自己。
虽然如此,但如果在工作中注意代码重用性,设计模式还有不断解决BUG的同时,你会慢慢改变自己的编码风格和思维方式,这就是经验。
除了自己累积的经验,借鉴别人的经验也是一种提升的重要途径,在网上无意中看到这本被人推荐N次的书,OO思想又一次冲击了我的大脑。
--------------------------------------------------
看这本书之前我眼中的OO
不就是对象,类,继承,多态,封装,消息等,区分过程式思维。
打个比方 吃饭
过程式
先去市场,再去买菜,买肉,然后回家煮。
对象式
煮的人,煮的菜。
--------------------------------------------------
如果你现在眼中的OO跟我之前的差不多,或者认为自己还需要进修的话,也不妨网上找一下预览的PDF。
我是首先在网上预览了这本书的第一章,然后就急不及待的去买这本书来翻阅了。因为OO思想实在太吸引了,其实也跟个人爱好有关系吧,但我感觉,技术是日新月异的,一味追求实在太累了,并且还有领域的局限。而思想呢,却任何地方甚至生活也可以用上。
这本书也老套一句话了,深入简出。真的很容易明白,除了说关联和聚集的时候可能需要点时间思考,其他都比较简单。
能做到“写给大家看”,觉得最重要几点
1、提供多编程语言的例子,不管java、C#或者.net的开发者都能看。
2、不忘重要的注释,关键的知识点会有阅读延伸,让你更加深刻。
3、每章的总结,让你回顾。
4、生动简单的的图文例子。
5、UML图,编程人员不应该也决不能陌生。
6、英文关键字。一些术语还是加上英文原名,看起来顺心点。
前面10章看得比较有兴趣,而10之后就有点无聊的感觉了,可能因为思想就有前面9章的缘故吧。第十章是UML的,一定要牢固的东西,再来学习一遍了。还有十五章的设计模式,虽然设计模式在这书里面顶多算是介绍罢了,不过看到这里的你也不妨把他看完了,可能会另有收获:) 至少我在这里学到了"反模式"这个词...
如果你想学习OO,建议看看这本书。再说,这书真的不厚啊。╮(╯_╰)╭