面向对象编程C++和Java比较教程
基本信息
- 原书名: Programming with Objects:A Comparative Presentation of Object Oriented Programming with C++ and Java
- 原出版社: John Wiley & Sons,Inc.
- 作者: (美)Avinash C.Kak [作译者介绍]
- 译者: 徐波
- 丛书名: 国外著名高等院校信息科学与技术优秀教材
- 出版社:人民邮电出版社
- ISBN:7115122776
- 上架时间:2004-7-12
- 出版日期:2004 年7月
- 开本:16开
- 页码:820
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 面向对象
教材 > 计算机教材 > 本科/研究生 > 计算机专业教材 > 计算机专业课程 > 程序设计
编辑推荐
方便学习和易于掌握相似的基本语言结构;增添学习乐趣,了解每种语言的优点和不足;用不同语言编写具有相同功能的程序,可以培养灵活处理复杂项目的能力;相同概念的比较能够加深对概念的理解。
内容简介回到顶部↑
C++和Java是目前两种主流的面向对象编程语言。本书从基本结构到如何进行应用层次的编程,对这两种语言进行比较和对照,具有重要的学术价值和现实意义。
全书共20章,分别从基础概念和机制、基本语言要素、00编程特性、专业编程应用等方面,介绍了C++和Java的精髓和区别。本书还有一个独特的学习方式,就是用C++重新编写一个特定的Java程序,实现相同的功能,或者反过来,用Java重写C++程序。这种方法能够培养学生更加灵活地处理那些比较困难的项目,无论是C++还是Java项目。每章最后的“更多阅读推荐”提供了丰富的可查询资料。
全书共20章,分别从基础概念和机制、基本语言要素、00编程特性、专业编程应用等方面,介绍了C++和Java的精髓和区别。本书还有一个独特的学习方式,就是用C++重新编写一个特定的Java程序,实现相同的功能,或者反过来,用Java重写C++程序。这种方法能够培养学生更加灵活地处理那些比较困难的项目,无论是C++还是Java项目。每章最后的“更多阅读推荐”提供了丰富的可查询资料。
作译者回到顶部↑
本书提供作译者介绍
作译者简介
Avinash C.Kak是普度大学电子和计算机工程系的教授,负责教授面向对象编程和设计课程,多次被评为“年度最佳教师”。
译者徐波熟悉C、C++和Java语言,译作有《C专家编程》、《C和指针》,以及《More Java Pitfalls中文版》。
.. << 查看详细
Avinash C.Kak是普度大学电子和计算机工程系的教授,负责教授面向对象编程和设计课程,多次被评为“年度最佳教师”。
译者徐波熟悉C、C++和Java语言,译作有《C专家编程》、《C和指针》,以及《More Java Pitfalls中文版》。
.. << 查看详细
目录回到顶部↑
第1章 大处着眼—oo编程的一些共性 1
1.1 什么是面向对象编程 1
1.2 oo有什么优点 1
1.3 如何精通oo 2
第2章 初窥门径 3
2.1 简单程序:对一个整型数组求和 3
2.2 简单程序:终端i/o 8
2.3 简单程序:文件i/o 12
2.4 更多阅读推荐 16
2.5 作业 16
第3章 类及其他一些关键的概念 18
3.1 在c++中定义类 20
3.2 在java中定义类 23
3.3 创建对象:c++和java 的异同 25
3.4 在c++中定义子类 26
3.5 在java中定义子类 29
3.6 阻断继承 32
3.7 创建对象的打印表示形式 34
3.8 对象的销毁 35
3.9 java的程序包(package) 36
1.1 什么是面向对象编程 1
1.2 oo有什么优点 1
1.3 如何精通oo 2
第2章 初窥门径 3
2.1 简单程序:对一个整型数组求和 3
2.2 简单程序:终端i/o 8
2.3 简单程序:文件i/o 12
2.4 更多阅读推荐 16
2.5 作业 16
第3章 类及其他一些关键的概念 18
3.1 在c++中定义类 20
3.2 在java中定义类 23
3.3 创建对象:c++和java 的异同 25
3.4 在c++中定义子类 26
3.5 在java中定义子类 29
3.6 阻断继承 32
3.7 创建对象的打印表示形式 34
3.8 对象的销毁 35
3.9 java的程序包(package) 36
前言回到顶部↑
本书用C++和Java来描述面向对象编程,它们是面向对象编程的主要语言。本书所作的绝大部分描述都采用了比较的形式,从基本的语言结构直到应用层次的话题如图形编程、网络编程和数据库编程等。本书要求读者对C的一些重要特性相当熟悉,如指针、字符串、数组和结构等。
我有一种强烈的信念,在讲述一门编程语言时,除了它的语法之外,通过它的应用完整地体现它的美感和力度是至关重要的。如果我们在讲授编程语言时把语言和它的应用分离,那么我们就好像只通过语法来教英语一样,虽然这种做法在许多教学计划中并不少见。
本书从一个迎合特定学术需求的尝试脱胎换骨而来,它是对一种新的面向对象编程领域教学计划的全面诠释。我们需要一个不太教条的教学计划,不拘泥面向对象编程的某种固定风格(或者某种固定语言,因为语言常常决定风格)。在讲授编程技巧时,我们可以把精力集中在一种单一的语言上。但是在更广阔的意义上,编程教育要求我们提供更为丰富和广泛的风格和概念。其结果就是读者在本书中看到的:对C++和Java的集成描述。对两种语言进行比较和对照(从基本的语言结构到语言如何用于应用层次的编程)是非常有价值的。这种比较甚至可能激发富有进取心的学生构思一种新的更为强大的未来面向对象编程语言。为了进一步提高这种比较形式的教学价值,本书同时包含了一些普通C的面向对象模拟特性的描述, 其中GNOME/GTK+是一个主要的例子。
本书基于这样一种哲学:通过比较来学习不仅效率很高,而且充满乐趣。有时候我们发现,把记忆和理解固定于类似对象、结构和情况之间的异同能够促进学习和记忆。同时学习C++和Java能够发掘学习者在这方面的知识潜力。根据我的教学实践,学生们对完成相同任务的C++和Java编程结构的比较兴趣颇浓。
把C++和Java放在一起讲授和学习具有一些独特的优点。首先,C++和Java都起源于C,因此它们的基本语言结构具有相当多的共性,把它们放在一起讲授可以节省时间。例如,一旦我们掌握了C++中vector的概念,并且
对于一些与C++的vector相关联的有用功能也理解透彻了,然后我们再宋学习Java的AnayList几乎是一点就通。本书对Java部分的讨论,在绝大多数情况下都是对先前所讨论的C++功能在Java中是如何实现而展开的。
本书还有一个独特的学习过程,就是用C++重新编写一个特定的Java程序,实现相同的功能,或者反过来,用Java重写C++程序。根据我的经验,这种方法能够培养学生更加灵活地处理那些更为困难的项目,无论是C++还是Java项目。否则,由于一门课程的时间有限,培养这方面的能力要困难一些。
同时学习两种语言也有不利之处。人们很容易搞混某种特性到底属于哪种语言。幸运的是,在现代编程实践中,这方面的困难大大地得到了缓解。因为现在我们可以一边看一个终端窗口的在线文档,一边在另一个终端窗口进行编程。C++和Java都已变得非常庞大,没有人能够单凭记忆记住所有的类以及每个类所定义的所有属性和函数。因此,即使我们并不同时学习两种语言,我们仍然需要在编程时参考相应的文档。
本书所包含的内容比一个典型的学期课程所包含的内容要多得多。根据我的经验,本书最好是作为两个连续的课程。第一个课程专门讲述基本的语言结构,它们包含在本书的前15章。第二个课程则集中讨论应用和设计层次的问题。对于第二个课程,我在最后5章中用一本关于设计模式的书作为补充材料。
我不敢奢望像本书这样一个大部头能够不出错误。如果读者能够发现错误,并通过kak@purdue.edu告诉我,我将不胜感激。所有的修正意见将在www.programming-with-objects.com在线提供,对于所有提出修正意见的作者,我将列出他们的名字以示谢意。对于指出书中任何错误的读者,我们也一并致谢。本书我所采用的示例程序是我从其他地方直接获得的灵感,我在每章最后的“更多阅读推荐”一节中对它们的作者表示了致谢。
我很高兴能够向未来的教师提供课后作业问题的解决方案。
最后,我还想说明,本书对那些从C++转到Java或者从Java转到C++的人们也应该非常有用。
Avinash C.Kak
West Lafeyette,Indiana
印第安纳州 2003年1月
我有一种强烈的信念,在讲述一门编程语言时,除了它的语法之外,通过它的应用完整地体现它的美感和力度是至关重要的。如果我们在讲授编程语言时把语言和它的应用分离,那么我们就好像只通过语法来教英语一样,虽然这种做法在许多教学计划中并不少见。
本书从一个迎合特定学术需求的尝试脱胎换骨而来,它是对一种新的面向对象编程领域教学计划的全面诠释。我们需要一个不太教条的教学计划,不拘泥面向对象编程的某种固定风格(或者某种固定语言,因为语言常常决定风格)。在讲授编程技巧时,我们可以把精力集中在一种单一的语言上。但是在更广阔的意义上,编程教育要求我们提供更为丰富和广泛的风格和概念。其结果就是读者在本书中看到的:对C++和Java的集成描述。对两种语言进行比较和对照(从基本的语言结构到语言如何用于应用层次的编程)是非常有价值的。这种比较甚至可能激发富有进取心的学生构思一种新的更为强大的未来面向对象编程语言。为了进一步提高这种比较形式的教学价值,本书同时包含了一些普通C的面向对象模拟特性的描述, 其中GNOME/GTK+是一个主要的例子。
本书基于这样一种哲学:通过比较来学习不仅效率很高,而且充满乐趣。有时候我们发现,把记忆和理解固定于类似对象、结构和情况之间的异同能够促进学习和记忆。同时学习C++和Java能够发掘学习者在这方面的知识潜力。根据我的教学实践,学生们对完成相同任务的C++和Java编程结构的比较兴趣颇浓。
把C++和Java放在一起讲授和学习具有一些独特的优点。首先,C++和Java都起源于C,因此它们的基本语言结构具有相当多的共性,把它们放在一起讲授可以节省时间。例如,一旦我们掌握了C++中vector的概念,并且
对于一些与C++的vector相关联的有用功能也理解透彻了,然后我们再宋学习Java的AnayList几乎是一点就通。本书对Java部分的讨论,在绝大多数情况下都是对先前所讨论的C++功能在Java中是如何实现而展开的。
本书还有一个独特的学习过程,就是用C++重新编写一个特定的Java程序,实现相同的功能,或者反过来,用Java重写C++程序。根据我的经验,这种方法能够培养学生更加灵活地处理那些更为困难的项目,无论是C++还是Java项目。否则,由于一门课程的时间有限,培养这方面的能力要困难一些。
同时学习两种语言也有不利之处。人们很容易搞混某种特性到底属于哪种语言。幸运的是,在现代编程实践中,这方面的困难大大地得到了缓解。因为现在我们可以一边看一个终端窗口的在线文档,一边在另一个终端窗口进行编程。C++和Java都已变得非常庞大,没有人能够单凭记忆记住所有的类以及每个类所定义的所有属性和函数。因此,即使我们并不同时学习两种语言,我们仍然需要在编程时参考相应的文档。
本书所包含的内容比一个典型的学期课程所包含的内容要多得多。根据我的经验,本书最好是作为两个连续的课程。第一个课程专门讲述基本的语言结构,它们包含在本书的前15章。第二个课程则集中讨论应用和设计层次的问题。对于第二个课程,我在最后5章中用一本关于设计模式的书作为补充材料。
我不敢奢望像本书这样一个大部头能够不出错误。如果读者能够发现错误,并通过kak@purdue.edu告诉我,我将不胜感激。所有的修正意见将在www.programming-with-objects.com在线提供,对于所有提出修正意见的作者,我将列出他们的名字以示谢意。对于指出书中任何错误的读者,我们也一并致谢。本书我所采用的示例程序是我从其他地方直接获得的灵感,我在每章最后的“更多阅读推荐”一节中对它们的作者表示了致谢。
我很高兴能够向未来的教师提供课后作业问题的解决方案。
最后,我还想说明,本书对那些从C++转到Java或者从Java转到C++的人们也应该非常有用。
Avinash C.Kak
West Lafeyette,Indiana
印第安纳州 2003年1月








点击看大图






加载中...

