写给大家看的面向对象编程书:第3版(最通俗易懂的面向对象著作)
基本信息
- 作者: (美)Matt Weisfeld [作译者介绍]
- 译者: 张雷生 刘晓兵
- 丛书名: 图灵程序设计丛书 C/C++系列
- 出版社:人民邮电出版社
- ISBN:9787115197764
- 上架时间:2009-4-2
- 出版日期:2009 年5月
- 开本:16开
- 页码:266
- 版次:3-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 面向对象
编辑推荐
被誉为“最通俗易懂的面向对象著作” .
教你如何以对象的方式思考,兼顾Java、C#和VB语言..
将抽象概念与趣味示例相结合,贴近实战...
推荐阅读
内容简介回到顶部↑
本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括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 构造函数
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 构造函数
译者序回到顶部↑
这不是一本单纯讲解语法的编程书,也不是一本纯粹的概念书,作者摆脱编程书容易陷入的语法细节,从面向对象思维过程这个更高层次将面向对象的概念娓娓道来,将抽象的概念与具体的示例有机地结合在一起,让读者得以“既见树木,又见森林”。.
从内容的组织上看,作者首先回答了面向对象开发中最基本的两个问题:对象是什么,类又是什么。在这个基础上,通过简明的例子清晰地展示了面向对象的重要特性:封装和数据隐藏、继承、多态和组合。为全书内容的展开铺设了一个框架。..
与其他面向对象书不同的是,这本书深入分析了如何采用对象思维方式思考,逐步从基本概念过渡到高级概念后,增加了一些与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器技术等。也许我们已经习惯于“语法—简单例子—复杂应用”的介绍模式,而这种组织方式更贴近于开发人员的学习曲线,从本书不断修订再版和持续热销可以看出,这种安排更容易让人接受。
这本书吸引我们的不光是内容上的合理取舍和结构的精巧组织,还在于作者采用了卓有趣味的示例来加深理解。作者尽可能用最简单明了的例子让读者对概念有全面、具体的了解,并且将面向对象思维的触角向外延伸,在拓宽面向对象应用领域的同时,也使读者的思路随之打开,这对于进一步地学习面向对象设计或面向对象编程大有益处。
在此深深地感谢我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。
全书主要由张雷生、刘晓兵翻译,并得到王恒、牛亚峰、苏金国、刘亮、王小振、高强、范松峰等的帮助,全体人员共同完成了本书的翻译工作,最后由张雷生、刘晓兵统稿。
由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。...
译者
2008年9月
从内容的组织上看,作者首先回答了面向对象开发中最基本的两个问题:对象是什么,类又是什么。在这个基础上,通过简明的例子清晰地展示了面向对象的重要特性:封装和数据隐藏、继承、多态和组合。为全书内容的展开铺设了一个框架。..
与其他面向对象书不同的是,这本书深入分析了如何采用对象思维方式思考,逐步从基本概念过渡到高级概念后,增加了一些与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器技术等。也许我们已经习惯于“语法—简单例子—复杂应用”的介绍模式,而这种组织方式更贴近于开发人员的学习曲线,从本书不断修订再版和持续热销可以看出,这种安排更容易让人接受。
这本书吸引我们的不光是内容上的合理取舍和结构的精巧组织,还在于作者采用了卓有趣味的示例来加深理解。作者尽可能用最简单明了的例子让读者对概念有全面、具体的了解,并且将面向对象思维的触角向外延伸,在拓宽面向对象应用领域的同时,也使读者的思路随之打开,这对于进一步地学习面向对象设计或面向对象编程大有益处。
在此深深地感谢我们的家人和朋友。在翻译过程中,他们给予了我们莫大的关心、支持和帮助。
全书主要由张雷生、刘晓兵翻译,并得到王恒、牛亚峰、苏金国、刘亮、王小振、高强、范松峰等的帮助,全体人员共同完成了本书的翻译工作,最后由张雷生、刘晓兵统稿。
由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。...
译者
2008年9月
前言回到顶部↑
本书涵盖范围.
顾名思义,这是一本关于面向对象(object-oriented,OO)思想的书。显然,选择书的主题和书名非常重要,不过,做出这些决定并不那么容易。有很多书已经在不同层面讨论了面向对象。一些畅销书讨论了OO分析、OO设计、OO程序设计、设计模式、OO数据(XML)、UML(Unified Modeling Language,统一建模语言)、OO Internet开发以及各种OO编程语言等主题,还涉及了有关OO开发的许多其他方面。
不过,如果陷入如此众多浩如烟海的书中,很多人会忘记最根本的一点,即所有这些主题都建立在一个共同的基础之上:如何用OO的方式思考。遗憾的是,软件专业人员往往没有花费适当的时间和精力来真正理解基本概念,就匆忙地一头扎入这些书中。
我要申明的是,学习OO概念绝对不是通过学习一种特定的开发方法或者一套工具就能做到的。简单地讲,采用OO的方式行事是一种思维方式。本书就专门讨论OO思维过程。
将具体的方法和工具与OO思想区分开并不容易。很多人都是通过某种方法或工具才开始接触到OO概念的。例如,很多年以前,大多数C程序员最早都是通过直接移植到C++才对面向对象有所了解的,而在此之前,他们甚至根本没有接触过任何OO概念。其他软件专业人员最早了解面向对象,也是因为看到了一些包含UML对象模型的演示,同样,他们此前完全没有直接接触过OO概念。很多编程书和课程直到学习过程后期才谈到OO概念,这种情况并不鲜见。
重要的是,需要了解学习OO概念与使用支持OO的方法和工具之间存在着显著差别。在我写本书的第1版之前就注意到了这个问题,那时我读了一些文章,比如Craig Larman的“What the UML Is—and Isn’t”。在这篇文章中,他指出:
遗憾的是,在软件工程和UML图示语言领域中,有人认为读写UML记法的技巧有时与面向对象分析和设计的技巧地位相同。当然,事实并非如此,后者要比前者重要得多。因此,强烈建议寻找适当的教学培训和教学资源,其中要更强调面向对象分析和设计的技术技巧,而不只是介绍UML或某个用例工具的使用。
尽管学习建模语言是很重要的一步,但首先学习OO技巧更为重要。如果在学习OO概念之前先学UML,这就像是在完全不知电为何物的前提下学习如何读懂电路图。
学习程序设计语言也存在同样的问题。如前所述,很多C程序员都是通过移植到C++而转向面向对象领域,但在此之前他们没有直接接触过OO概念。这一点往往会在程序员面试时暴露出来。很多情况下,程序员声称自己是C++程序员,但实际上他们只是使用C++编译器的C程序员。即使是现在,尽管有C#.NET、VB.NET和Java等优秀的语言可以使用,但在求职面试中,几个关键问题就能很快暴露出面试者缺乏对OO的理解。
VB的早期版本不是OO的。C也不是OO的,C++则开发为与C向后兼容。正因如此,完全可以使用一个C++编译器(只使用C语法编写代码)而不利用C++的任何OO特性。更糟糕的是,如果程序员做法不当,只是使用一些OO特性就能让OO程序员和非OO程序员都无法读懂他的程序。
因此,如果你正在OO开发的道路上探索,最重要的就是首先学习基本的OO概念。一定要抵制住诱惑,不要贸然直接沉溺到某种编程语言中(如VB.NET、C++、C#.NET或Java),或者深陷到某种建模语言中(如UML),应当花些时间来学习面向对象思维过程。
20世纪80年代末,在我学Smalltalk的第一堂课上,老师告诉全班同学,新的OO范型是一种全新的思维方式(尽管早在60年代它就已经存在了)。他还说,尽管我们都很有可能成为非常棒的程序员,但是我们当中大约10%~20%的人可能无法真正领悟OO的工作方法。如果他所讲的是真的,这很可能就是因为一些人根本没有花时间先完成开发范型的转换并学习基本的OO概念。
第3版新增内容
至此已经多次提到,第1版主要是作为一本介绍概念的书。尽管第2版和第3版仍然追求这个目标,但我又做了补充,增加了一些与面向对象概念密切相关的应用主题。在第3版中,我扩展了第2版中的许多主题,并加入了一些全新的章节。经过修订和更新的概念包括:
XML用于对象通信;
对象持久性和串行化;
XML集成到语言对象定义;
为属性增加特性;
基于XML的因特网应用;
客户/服务器技术;
顾名思义,这是一本关于面向对象(object-oriented,OO)思想的书。显然,选择书的主题和书名非常重要,不过,做出这些决定并不那么容易。有很多书已经在不同层面讨论了面向对象。一些畅销书讨论了OO分析、OO设计、OO程序设计、设计模式、OO数据(XML)、UML(Unified Modeling Language,统一建模语言)、OO Internet开发以及各种OO编程语言等主题,还涉及了有关OO开发的许多其他方面。
不过,如果陷入如此众多浩如烟海的书中,很多人会忘记最根本的一点,即所有这些主题都建立在一个共同的基础之上:如何用OO的方式思考。遗憾的是,软件专业人员往往没有花费适当的时间和精力来真正理解基本概念,就匆忙地一头扎入这些书中。
我要申明的是,学习OO概念绝对不是通过学习一种特定的开发方法或者一套工具就能做到的。简单地讲,采用OO的方式行事是一种思维方式。本书就专门讨论OO思维过程。
将具体的方法和工具与OO思想区分开并不容易。很多人都是通过某种方法或工具才开始接触到OO概念的。例如,很多年以前,大多数C程序员最早都是通过直接移植到C++才对面向对象有所了解的,而在此之前,他们甚至根本没有接触过任何OO概念。其他软件专业人员最早了解面向对象,也是因为看到了一些包含UML对象模型的演示,同样,他们此前完全没有直接接触过OO概念。很多编程书和课程直到学习过程后期才谈到OO概念,这种情况并不鲜见。
重要的是,需要了解学习OO概念与使用支持OO的方法和工具之间存在着显著差别。在我写本书的第1版之前就注意到了这个问题,那时我读了一些文章,比如Craig Larman的“What the UML Is—and Isn’t”。在这篇文章中,他指出:
遗憾的是,在软件工程和UML图示语言领域中,有人认为读写UML记法的技巧有时与面向对象分析和设计的技巧地位相同。当然,事实并非如此,后者要比前者重要得多。因此,强烈建议寻找适当的教学培训和教学资源,其中要更强调面向对象分析和设计的技术技巧,而不只是介绍UML或某个用例工具的使用。
尽管学习建模语言是很重要的一步,但首先学习OO技巧更为重要。如果在学习OO概念之前先学UML,这就像是在完全不知电为何物的前提下学习如何读懂电路图。
学习程序设计语言也存在同样的问题。如前所述,很多C程序员都是通过移植到C++而转向面向对象领域,但在此之前他们没有直接接触过OO概念。这一点往往会在程序员面试时暴露出来。很多情况下,程序员声称自己是C++程序员,但实际上他们只是使用C++编译器的C程序员。即使是现在,尽管有C#.NET、VB.NET和Java等优秀的语言可以使用,但在求职面试中,几个关键问题就能很快暴露出面试者缺乏对OO的理解。
VB的早期版本不是OO的。C也不是OO的,C++则开发为与C向后兼容。正因如此,完全可以使用一个C++编译器(只使用C语法编写代码)而不利用C++的任何OO特性。更糟糕的是,如果程序员做法不当,只是使用一些OO特性就能让OO程序员和非OO程序员都无法读懂他的程序。
因此,如果你正在OO开发的道路上探索,最重要的就是首先学习基本的OO概念。一定要抵制住诱惑,不要贸然直接沉溺到某种编程语言中(如VB.NET、C++、C#.NET或Java),或者深陷到某种建模语言中(如UML),应当花些时间来学习面向对象思维过程。
20世纪80年代末,在我学Smalltalk的第一堂课上,老师告诉全班同学,新的OO范型是一种全新的思维方式(尽管早在60年代它就已经存在了)。他还说,尽管我们都很有可能成为非常棒的程序员,但是我们当中大约10%~20%的人可能无法真正领悟OO的工作方法。如果他所讲的是真的,这很可能就是因为一些人根本没有花时间先完成开发范型的转换并学习基本的OO概念。
第3版新增内容
至此已经多次提到,第1版主要是作为一本介绍概念的书。尽管第2版和第3版仍然追求这个目标,但我又做了补充,增加了一些与面向对象概念密切相关的应用主题。在第3版中,我扩展了第2版中的许多主题,并加入了一些全新的章节。经过修订和更新的概念包括:
XML用于对象通信;
对象持久性和串行化;
XML集成到语言对象定义;
为属性增加特性;
基于XML的因特网应用;
客户/服务器技术;
媒体评论回到顶部↑
“要想创建高质量的软件,深入掌握你看似熟悉、实则没有真正理解的对象和类的各种精妙之处是必不可少的。而耍想做到这一点,请仔细研读本书。”
——Bill McCaxty,资深技术专家,0bject-Oriented Design in Java作者
“本书以生动有趣的风格深刻阐述了面向对象之道,很好地做到了深入浅出,不仅适合初学者,有经验的程序员也能从中获益。”
——coderanch.com
——Bill McCaxty,资深技术专家,0bject-Oriented Design in Java作者
“本书以生动有趣的风格深刻阐述了面向对象之道,很好地做到了深入浅出,不仅适合初学者,有经验的程序员也能从中获益。”
——coderanch.com


点击看大图






加载中...
