“Be faithful in small things because it is in them that your strength lies.”
—Mother Teresa.
欢迎大家学习Java和Small Java How to Program, 6/e[《Java大学基础教程(第六版)》]!在Deitel & Associates公司,我们编写了许多大学层次的计算机科学教材和专业书籍。本书是我们的第一本专为教学定制的版本。我们的目标是,基于Java How to Program, 6/e[《Java大学教程(第六版)》],为第一学期的入门课程(CS1)设计一本页数少些并且定价低些的教材,因此本书选择其前10章的内容,重点强调了Java的核心概念和特性。
在写作Java How to Program, 6/e的过程中,我们仔细分析了以前的几个版本并进行了改进:
● 所有各章都进行了大幅度的更新和升级
● 提前介绍类和对象的概念。读者在第3章就开始构建第一个可重用的类
● 前面几章中关于GUI的内容都放入了选读的小节
● 贯穿全书,根据前几章给出的现有类,添加了更多实例研究内容
● 在书中添加了Sun Microsystems公司的J2SE 5.0新特性
● 将面向对象表示方式更新为采用最新的UML 2.0
● 全面修订了本书的设计风格。新书通过颜色、字体以及各种设计元素,使读者的学习过程更有乐趣①
28位来自学术界和工业界的评阅人组成的团队,对Java How to Program, 6/e的内容进行了细致的评阅。为了形成本书这个特殊的定制版本,我们去掉了Java How to Program, 6/e中设计为选读的OOD/UML实例研究内容。这个前言中的“本书导读”小节能让教师、学生以及技术人员从总体上了解本书所涉及的Java和面向对象编程技术。
我们相信这本教材及其支持材料包罗了教师和学生在Java的教和学的过程中所需的一切内容,使他们充分体验集信息性、趣味性、挑战性和娱乐性于一体的学习历程。在这个前言中,首先概述本书所用的教学约定,诸如用不同的颜色标记代码例子的语法、“代码清洗”(code washing)和强调代码等。最后,我们讨论Prentice Hall为本书捆绑的软件,以及教师达到最佳教学效果所需的非常全面的辅助教学资料,包括教师资源光盘、PowerPoint课件幻灯片授课笔记、配套网站、课程管理系统和SafariX(Prentice Hall的WebBook出版物)等。
阅读本书时,如果有任何疑问,可以发邮件给deitel@deitel.com,我们将尽快给予答复。建议定期访问我们的网站:www.deitel.com,并确保在www.deitel.com/newsletter/subscribe.html免费订阅Deitel Buzz Online电子邮件新闻组。通过这个网站和新闻组,我们的读者和工业界客户就能获得通知,了解关于Deitel出版物和服务的最新消息。读者应该定期浏览这个网站,以便查看勘误信息,了解关于Java软件的更新,下载信息以及获得其他资源。
本书中的特性
这个新的版本中包含了许多新特性和增强特性。
CS1课程的基本主题
本书重点关注CS1课程中的核心Java概念,是为计算机科学第一门课程专门设计的,适合于计算机科学与信息系统课程。
针对Java 2 Platform Standard Edition 5.0(J2SE 5.0)进行了更新
我们将整本书进行了更新,以反映最新发布的J2SE 5.0。我们添加了关于如下主题的讨论内容:
. ● 使用类Scanner获得格式化输入
● 使用System.out对象的printf方法显示格式化输出
● 使用增强for语句处理数组元素
● 用变长实际参数表来声明方法
● 使用声明常量集合的enum类
● 为在一个类中使用而导入另一个类的static成员
另外,我们对照Java Language Specification(可从java.sun.com/docs/books/jls/index.html获得)仔细审核了本书。学习本书过程中创建的程序将能够用于任何J2SE 5.0兼容Java平台。
[注意:Sun Microsystems公司将J2SE从Java 2 Platform, Standard Edition 1.5.0改名为Java 2 Platform, Standard Edition 5.0,但是在联机Java文档(可从java.sun.com/j2se/1.5.0/docs/api/index.html获得)和软件安装目录(称为jdk1.5.0)中,Sun并没有把出现的所有1.5.0替换成5.0。Sun公司网站可以接受将1.5.0替换成5.0的URL地址。例如,可以使用java.sun.com/j2se/5.0/docs/api/index.html这个URL访问联机文档。]
全新的内部设计
通过与Prentice Hall的设计团队合作,我们重新设计了How to Program系列教材的内部风格。为了适应读者的需求,我们将定义的每个关键术语及其索引页用粗体蓝色文本显示,更便于读者参考。对于屏幕上的组成部分,以粗体Helvetica字体显示(例如Properties),程序文本则用Lucida字体加以强调(例如int x = 5)。
语法着色
本书是用全色印刷的,以体现程序及其输出在计算机屏幕上的效果。对于所有Java代码,与大多数Java集成开发环境和代码编辑器所做的一样,我们通过不同的颜色来标记其中的语法,这样就大大提高了代码的可读性。本书含有4917行代码,可读性的确是个特别重要的目标。我们进行语法着色的约定如下:
注释采用绿色
关键字采用深蓝色
错误采用红色
常量和文字值采用浅蓝色
其他所有代码采用黑色
强调代码
大范围的代码加亮显示,使读者更易于重点关注每个程序中的关键段,更有助于学生在准备考试或实验时快速复习书中的内容。
“代码清洗”是我们为应用注释、采用有意义的标识符、采用统一缩进格式以及利用纵向间距分隔有意义的程序单元而提供的代名词。这种处理结果使程序特别易读,自说明性更强。对于教材和附录部分的所有源代码,我们都应用了“代码清洗”。我们一直努力使代码成为典范,并且这些代码已由许多著名的学术界和工业界评阅人进行了细致审阅。
尽早接触类和对象
这个新版本最重要的改进之一是在第1章就介绍了类和对象的概念,读者在第3章中就可以编写自定义的类并使用这些类的对象(前一版教材在第8章中给出了这些概念)。在本书中将类和对象的讨论移到前面的章节,使读者最初就能思考对象,有助于更彻底地掌握这些概念。Java的功能很强,但编程很有趣,并且读者能够立即看到结果。通过使用Java的大量可重用组件类库,学生可以获得基于文本的程序和迅速运行的图形程序。学习完一学期或两学期的Java课程之后,学生们往往比用同样的时间学习C和C++入门课程更有创造性,并且编程能力更强。
仔细调整了第8章至第10章的面向对象编程内容
我们对Java How to Program, 5/e进行了非常细致的更新,这种改进使本书的内容更清晰,更容易被学生和技术人员接受,尤其是那些首次学习面向对象编程(OOP)的人。我们采用一个关于雇员工资支付层次结构的综合实例研究,完全重写了OOP章节,并通过一个支付层次结构介绍了接口的知识。
实例研究
本书中有许多例子和习题。我们常常在本书前面讲过的现有类的基础上,给出将使本书后面的应用程序功能增强的编程概念。通过这种方法,学生就能在已经了解的应用程序的环境中学习这些新概念。实例研究包括如下内容:
● 第8章中的Time类
● 第9章和第10章的Employee支付应用程序
● 第3章至第5章以及第7章中的GradeBook类
● 第3章至第10章中GUI和图形实例研究(选读)中的多态绘图程序
GradeBook综合实例研究
为了配合本书尽早引入类的概念的新思路,我们在第3章至第5章以及第7章中包括了一个使用类和对象的综合实例研究。我们逐步构建了一个代表教师所用成绩册的GradeBook类,并基于一组学生成绩执行了各种计算,如求平均成绩、找最高分和最低分,以及打印条形图。我们的目标是,通过现实世界中一个类的例子,使学生熟悉关于对象和类的重要概念。我们从头开发了这个类,根据控制语句编写了方法,仔细开发了算法,并根据需要添加了实例变量,以增强这个类的功能。
GUI和图形实例研究(选读)
第3章至第10章中可选读的GUI和图形实例研究,展示了给应用程序添加可视化元素的技巧。对于那些想学习Java所拥有的创建图形用户界面(GUI)和图形的强大功能的读者,这些实例研究是专为他们设计的。每节都介绍几个基本概念,并给出可视化的图形例子和完整的源代码。在前面几节讲解了如何创建简单的图形应用程序,后面几节则利用第10章中讲到的面向对象编程概念创建了一个应用程序,多态地绘制各种不同的形状。
统一建模语言和UML 2.0简介
统一建模语言(Unified Modeling Language,简称UML)已经成为设计面向对象系统的首选图形建模语言。本书中的所有UML图都遵从新的UML 2.0规范。我们使用UML类图,以可视化方式表示类及其继承关系,并展示每种Java控制语句中的控制流。更完整的Java How to Program, 6/e中包括了一个真实的OOD/UML实例研究,为自动取款机(ATM)开发软件。
教学方法
本书含有大量例子、习题和选自许多领域的项目,目的是为读者提供解决有趣的现实问题的机会。本书着重考虑优秀软件工程原则,并强调程序的清晰简洁。通过实例进行教学,我们回避了晦涩难懂的术语和语法规范。我们是在全球范围工业界讲授前沿主题的教育家。Harvey M. Deitel博士有20年的大学教学经验和15年工业界教学经验。Paul Deitel有12年工业界教学经验,并且是世界上最有经验的Java公司培训师之一,从1996年起,已经为Deitel & Associates公司的来自政府机构、工业界、军事部门和学术界的客户讲授了100多项Java课程。
采用活代码方式学习Java
本书采用的是活代码例子。每个新概念都在一个完整的可运行Java应用程序环境中给出,然后紧接着给出一个或多个显示程序输入和输出的示范运行例子。这种风格印证了我们讲授和编写程序的方式,我们把这种讲授和编写方式称为活代码方式(LIVE-CODE Approach),即用编程语言来讲授编程语言。阅读本书中的例子,非常像在计算机上输入和运行它们。在随书附赠光盘和www.deitel.com中,我们提供了书中所有例子的源代码,便于读者在学习过程中直接运行。本书包含72个完整的活代码例子,共有4917行代码。
万维网访问
本书(以及我们所著的其他出版物)的所有源代码例子都可以通过Internet从如下网站下载:
www.deitel.com
www.prenhall.com/deitel
注册非常方便快捷,并且下载是免费的。我们建议读者下载所有的例子,然后在阅读过程中运行每个相应的程序。对例子做一些改动,然后立即查看改动的效果,这是增强Java学习效果的一种有效途径。
学习目标
每章开头都列出了学习目标,目的是告诉读者将在本章里学到什么,并使读者能在学完每一章后,有机会确定自己是否到达了这些目标。这样有利于增强读者的自信心,有正面的积极推进作用。
名人名言
在每章的开头,我们引用了一些名人名言,其中一些很幽默,一些很富有哲理,而另外一些则很有见地。读者把这些名句和本章的内容联系起来,一定会从中获得乐趣,阅读完这一章之后,会发现其中很多名言值得再次品味。
提纲
每章的提纲有助于读者采用自顶向下的学习方式。读者还可以提前了解即将学习的内容,并自己掌控轻松有效的学习节奏。
在72个示例程序中有4917行代码(并带有程序输出)
我们在完整的可运行Java程序环境中展示了Java特性。这些活代码程序规模大小不同,小到寥寥几行,大到包含几百行代码的非常完善的实际范例。每个程序后面都有一个窗口,显示了程序运行时产生的输出,使读者能够确认程序运行得到了预期的结果。将输出结果与产生这些结果的程序语句关联起来,对于概念的学习和巩固,将起到意想不到的作用。我们的示例程序展示了Java的各种不同特性。这些代码进行了语法着色,将Java关键字、注释和其他程序文本分别以不同颜色表示,使代码更易读。当读者阅读大型程序时更能体会到这种方式的优势。
302幅插图
本书包含了大量图表、表格、线条图、程序及程序输出。我们采用UML活动图表示控制语句中的控制流,用UML类图表示类的域、构造函数和方法。
219个编程提示
本书包含很多编程提示,以帮助读者重点关注程序开发的关键点。为了强调这些提示,我们将其分为:良好编程习惯、常见编程错误、错误预防提示、性能提示、可移植性提示和软件工程视点。这些提示和实践经验是我们60年来编程和教学经验的总结。我们的一个数学专业的学生曾谈论到,这种方法就像在数学中着重标明公理、定理和推论一样,奠定了编写优秀软件的基础。
良好编程习惯
给出了编写简洁程序的提示。这些技巧有助于读者编写出可读性更强、具有自说明性并更易于维护的程序。
常见编程错误
读者在学习一种语言时(尤其是在第一门编程课程中),肯定会经常犯某些类型的错误。关注这些“常见编程错误”就会降低读者犯同样错误的可能性。
错误预防提示
最初设计这种提示类型时,我们认为应该告诉人们如何测试和调试Java程序,但实际上许多提示都描述的是降低bug可能性的Java特性,这样就简化了测试和调试过程。
性能提示
根据我们的经验,对于第一门编程课程来说,教学生编写简洁易懂的程序是到目前为止最重要的目标。但是,学生要编写运行最快,使用最少内存,需要最少击键次数,或在其他方面别出心裁。学生们的确关注性能,他们希望知道如何给这个程序以“超级能量”。因此,我们强调了提高程序性能的时机,使程序运行更快或使所占用的内存最少。
可移植性提示
Java宣称的著名特色之一就是其“普遍”可移植性,因此一些程序员就认为如果以Java实现了一个应用程序,这个应用程序就能自动可“完美”移植到所有Java平台上。遗憾的是,情况并不总是如此。我们给出了可移植性提示,以帮助读者编写可移植代码,并提供了一些Java如何实现高移植程度的观点。
软件工程视点
面向对象编程的机制要求我们全新考虑构建软件系统的方式。Java是一种可实施良好软件工程的有效语言。软件工程视点突出了影响软件系统,尤其是大规模系统构造的结构和设计事宜。从这里所学到的大多数知识,在学习高级课程或从事具体工作后开始接触大型复杂现实系统时,都会很有帮助。
本章小结
这是这个版本中新增的内容,每章都以一个简短的“本章小结”结尾,重新回顾本章的各个主题以及读者应该掌握的内容。添加这个小节是为了帮助学生加深记忆,并有助于读者将几章的内容关联起来。
摘要(476项)
每章末尾都有一个附加的小节,以项目符号列表方式详细总结了本章的内容。平均计算,每章有48条左右的摘要,这些内容有助于学生进行复习和巩固关键概念。
术语(748项)
为了进一步巩固概念,每章里都提供了按字母序排列的重要术语。每章平均有75个术语。当然,这些术语也出现在索引里,用蓝色粗体的页码突出显示了每个术语定义的出处,使读者能够快速找到其定义。
336个自测题及其答案(特殊小节计算在内)
每章都包括了用于自学的自测题及其答案。这部分内容有助于增强学生的信心,也提前为常规习题做准备。我们建议学生完成所有这些自测题并对照答案检查结果。
410个习题(特殊小节计算在内)
每章最后都包含了一系列习题,其中包括重要术语和概念的简单回顾,编写单个Java语句,编写小块的Java方法和类,编写完整的Java方法、类和应用程序,以及编写大的学期项目。如此大量的习题涉及了非常广泛的领域,有助于教师根据学生的特殊需要对课程进行削减调整,并且每个学期可以布置不同的课程作业。教师可以利用这些题目来安排课后作业、小测验或者学期测验。在Instructor誷 Resource CD(教师资源光盘,简称IRCD)中提供了绝大部分习题的答案①。[注意:不要写信给我们索取这张光盘。只有采用这本教材授课的大学教师才有资格获得光盘。教师只能通过出版社获得习题解答手册。]自2005年春季开始,学生和技术人员读者可以在基于Web的Cyber Classroom网络课堂中免费获得约一半习题的答案。要想了解这个网络课堂的更多信息,可访问www.deitel.com 或者在www.deitel.com/newsletter/subscribe.html注册Deitel Buzz Online的免费电子邮件新闻组。
约1900个索引项
本书最后包含一个全面的索引,这样有助于读者根据关键字找到条目或概念。这个索引对于初次阅读本书的人非常有用,对于在实践工作中使用本书作为参考的程序员来说,本书尤其有用。
Java活代码示例的“双重索引”
本书有72个活代码示例和410个习题。对于每个活代码示例和大多数更真实的习题,都采用了双重索引的方式。对于书中的每个源代码例子,我们采用图题作为索引,既按字母序建立索引,又作为"Examples"下的子索引项。这样就能更容易地找到采用特定特性的例子。更真实的习题也是既按字母序建立索引,又作为"Exercises"下的子索引项。
本书导读
Java是当今最具吸引力并且能够进行快速开发的计算机编程语言之一。掌握Java将有助于编程开发功能强大的商业和个人计算机应用软件。这里将简要概述本书中将要讲到的许多Java功能。
第1章 计算机、Internet和万维网概述
本章讨论计算机是什么、计算机如何发挥作用以及如何用计算机编程。本章简要介绍了编程语言的发展史,从机器语言到汇编语言,再到高级语言。本章还讨论了Java编程语言的起源,并简单介绍了一个典型的Java编程环境。读者可以测试一个典型的Java应用程序,初步了解将要学习创建的应用程序的类型。本章还介绍了对象技术和统一建模语言(Unified Modeling Language)。
第2章 Java应用程序入门
本章简单介绍了如何使用Java编程语言进行应用程序编程。本章给没有编程经验的人讲解了基本的编程概念和编程结构,其中的程序示例了如何在屏幕上给用户显示数据,以及如何获取用户从键盘输入的数据。本章介绍了J2SE 5.0新增的Scanner类,这个类能极大地简化获取用户输入的过程。本章还介绍了J2SE 5.0新增的一些使用System.out.printf方法的格式化功能。第2章的结尾详细讨论了判断和数学运算的处理过程。
第3章 类和对象的基础知识
本章使用5个现实世界的例子介绍了类、对象、方法和实例变量。前4个例子开始了开发成绩册类的实例研究,教师可以用这个类来维护学生的测验成绩。第一个例子给出的GradeBook类有一个方法,在被调用时会简单显示问候语。然后,我们演示了如何创建该类的一个对象,并调用这个方法来显示问候语。第二个例子对第一个例子进行了修改,允许这个方法接收课程名作为实际参数,并将课程名显示为问候语的一部分。第三个例子体现了如何在GradeBook对象中存储课程名。对于这个版本的类,还展示了如何使用方法来设置课程名和获取课程名。第四个例子演示了在创建GradeBook对象时如何初始化其中的数据—初始化工作是由这个类的构造函数来实施的。本章的最后一个例子通过一个银行账户类引入了浮点数,这个类维护了顾客的账户余额。本章描述了如何声明一个类并利用它创建一个对象,然后讨论了如何在类里声明方法以实现该类的行为,如何在类里声明实例变量以实现该类的属性,如何调用对象的方法以使该方法执行其任务。本章讲解了类的实例变量与方法的局部变量之间的区别,如何使用一个构造函数以确保在创建对象时初始化其数据,另外还讲解了基本类型和引用类型之间的区别。
第4章 控制语句(第I部分)
本章重点关注程序开发过程,讨论了如何进行问题陈述并据此开发一个能够发挥作用的Java程序,其中包括执行以伪码表示的中间步骤。本章介绍了一些基本类型和几个简单控制语句,用于判断(if和if...else)和循环(while)。通过使用第3章中给出的GradeBook类,研究了计数器控制循环和标记控制循环,并引入了Java的增量、减量和赋值运算符。本章包括GradeBook类的两个增强版本,都基于第3章中的最终版,分别包括一个使用控制语句计算学生平均成绩的方法。第一个版本的方法使用的是计数器控制循环,获取用户输入的10个学生成绩,然后确定平均成绩。第二个版本的方法使用的是标记控制循环,获取用户输入的任意数量的分数,然后计算所输入的成绩的平均值。本章使用简单的UML活动图来表现每个控制语句的控制流。
第5章 控制语句(第II部分)
本章继续讨论Java控制语句,给出了for循环语句,do...while循环语句,switch选择语句,break语句以及continue语句的几个例子。本章一部分内容继续讨论增强GradeBook类的功能,创建了GradeBook类的一个新版本,使用switch语句计算由用户输入的一组分数中分别相当于A,B,C,D和F级别的分数个数。这个版本的类使用了标记控制循环来输入分数。当读取来自用户的分数时,用一个方法修改记录用户输入分数个数的实例变量,以及归入每个字母类别的分数个数。然后,这个类的其他方法使用这些实例变量执行求平均成绩的计算,并基于输入的分数显示一个汇总报告。本章还讨论了逻辑运算符。
第6章 方法的深入剖析
本章深入探讨对象及其方法。我们讨论了类库方法并更仔细研究了学生应该如何构建自己的方法。第一个例子是带多个形式参数的方法。本章其中一部分内容重点关注开发游戏应用程序,使用随机数生成器来模拟掷骰子。这个应用程序将所需做的工作分解成几个小型的可重用方法。对于产生结构合理的程序来说,第6章展示的技巧是非常必要的,尤其是对于那些系统程序员和应用程序开发人员所开发的大型程序来说,更是如此。我们非常清晰地讲解了方法重载(例如,允许多个方法同名,只要“签名”不同即可),还介绍了方法调用栈,以解释Java怎样跟踪当前执行的是哪个方法,在内存中怎样维护方法的局部变量以及方法结束执行后怎样知道返回到什么位置。本章的其他主题还有static方法、static域、Math类、枚举以及声明的作用域。
第7章 数组
本章讲解了如何处理值列表。Java中的数组是对象,这是Java承诺几乎100%面向对象的一个强有力的证据。我们讨论了同类型数据项数组中的数据是如何存储的,并给出了许多关于一维数组和多维数组的例子。本章中的例子涵盖了常见数组操作、打印条形图、将数组传递给方法,还对调查数据的分析进行了简单介绍(采用了简单的统计技术)。本章还包括一个实例研究,模拟了纸牌游戏中的发牌和洗牌动作。在最后两节关于GradeBook类实例研究的内容中,我们使用数组存储了学生成绩,以便在程序执行期间使用。我们使用了这个类的两个版本。该类以前的版本处理的是用户输入的一系列成绩,但没有在类的实例变量中维护每个成绩值,因此在进行重复计算时就需要用户再次输入这些成绩。在本章中,我们使用了数组,使GradeBook类的一个对象可以在内存中维护一系列成绩,因此不必重复输入同样的一组成绩。本章中该类的第一个版本将成绩存储在一个一维数组中,并能产生一个报告,其中包含平均成绩、最低成绩、最高成绩,以及表示成绩分布情况的条形图。本章中该类的第二个版本(即实例研究的最终版本)使用一个二维数组存储许多学生某学期多次考试的成绩。这个版本能够计算每个学生的学期平均成绩,以及该学期所有成绩中的最高分和最低分。这个类还产生了一个条形图,显示出该学期所有成绩的整体分布情况。本章介绍了J2SE 5.0新增强的for语句,以遍历数组元素。另外,还介绍了变长实参表(J2SE 5.0新增的)。
第8章 类和对象的深入剖析
本章深入讨论了对象和类。通过语言(Java)实现新类型,这是数据抽象的正确方法。建立在第3章至第7章给出的概念的基础上,本章重点关注类和对象的本质与方法学。通过使用Time类的实例研究环境,本章讨论了Java类的实现,访问类成员、通过访问修饰符增强信息隐藏、将界面与实现分隔、使用访问方法和实用方法以及实用构造函数初始化对象。本章讨论了声明和使用常量、组合、this引用、static类成员,以及流行抽象数据类型的例子,诸如栈和队列。本章介绍了package语句,并讨论了如何创建可重用的包,还展示了J2SE 5.0新的静态导入和enum功能。
第9章 面向对象编程:继承
本章介绍了面向对象编程语言的大多数基本功能,继承是一种软件重用方式,通过这种方法,能够通过吸收现有类的功能并添加适当的新功能,迅速而简便地开发出新类。以Employee结构层次为核心,本章经过全面修订,包括了由五个例子构成的系列,展示了private数据、protected数据和通过继承实现软件重用。我们首先展示了一个具有private实例变量和操纵该数据的public方法的类,接着实现了具有几个附加功能的第二个类。为了做到这一点,我们复制了第一个例子的大部分代码。在第三个例子中,我们开始讨论继承和软件重用,使用第一个例子中的类作为超类,并将其数据和功能继承到一个新的子类中。这个例子引入了继承机制,并表明子类不能直接访问其超类的private成员。这样就引出了第四个例子,其中介绍了超类中的protected数据,并表明子类能够直接访问从超类继承的protected数据。最后一个例子通过把超类的数据定义为private,并使用超类的public方法(由子类继承得到),可以在子类中操纵超类的private数据。本章讨论了超类、子类、直接超类和间接超类的表示方法,超类和子类中构造函数的使用方式,以及继承的软件工程方法。本章还对比了继承(is-a关系)和组合(has-a关系)。
第10章 面向对象编程:多态
本章讨论面向对象编程的另一个基本特性,即称为多态的行为。全新修订过的第10章建立在第9章给出的继承概念基础上,并重点关注类层次结构中各类之间的关系,以及这些关系所支持的强大处理功能。本章的一个特性是其两个多态实例研究,一个是使用抽象类Employee的支付系统,一个是使用接口Payable的支付系统。两个实例研究都是在第9章引入的Employee层次结构基础上加以扩展的。第一个实例研究处理了一个变量数组,数组中包含了Employee对象的引用。数组元素所引用的全部对象都有一个公用的抽象超类Employee,其中包含了通用于层次结构中每个类的一系列方法。这个实例研究表明,当通过超类引用调用一个方法时,调用的是该方法特定于子类的版本。通过这个实例研究还能了解到,多态地处理对象的程序怎样才能通过确定当前正在处理的对象的类型,仍旧执行特定于具体类型的处理。本章区分了抽象类和具体类,在第二个实例研究的上下文环境中介绍了接口,这是C++中称为多继承的特性在Java中的对应特性。..
附录A 运算符优先级表
本附录列出了每种Java运算符,并指明了它们的优先级和结合性。
附录B ASCII字符集
本附录列出了ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)字符集,并给出了每个字符的字符代码值。Java使用16位字符Unicode字符集,表示世界上商用语言中的所有字符。ASCII是Unicode的一个子集。
附录C 关键字和保留字
本附录列出了Java编程语言规范中定义的所有关键字和保留字。
附录D 基本类型
本附录列出了Java编程语言规范中定义的所有基本类型。
附录E 计数系统
本附录讨论二进制(以2为基)、十进制(以10为基)、八进制(以8为基)和十六进制(以16为基)计数系统。
附录F Unicode
本附录讨论了Unicode字符集,通过这个字符集,Java就能以许多种语言显示信息。这个附录给出了以不同语言显示"Welcome to Unicode"的示范Java程序。
附录G 使用Java API文档
本附录介绍了Java API文档表示方式,通过这种方式能够更便于使用Java的内置包,并能得到最新信息。这个附录讨论了Java API文档中的内容,以及这些资料的组织方式。附录中的插图示意了如何联机浏览Java API文档,其中包括查看包、类和方法。这个附录还演示了如何根据索引页面找到一个特定的包、类或方法。
附录H 使用javadoc创建HTML文档
本附录介绍了javadoc文档生成工具。Sun Microsystems公司使用javadoc工具生成了附录G展示的Java API文档。这个附录中的例子带领读者浏览了javadoc文档生成过程,首先介绍了javadoc能够识别并用来创建文档的常见风格和标记,接着讨论了运行这个实用工具所用的命令和选项。最后,我们讨论了javadoc使用的源文件以及javadoc创建的HTML文件。
附录I 带标号的break语句和continue语句
本附录介绍了允许程序员改变控制语句中的控制流的另外两个Java语句。
附录J 使用调试器
本附录展示了JDK 5.0内置的调试器的关键特性,程序员可以使用调试器监视应用程序的执行,以定位并除去逻辑错误。这个附录给出了一系列循序渐进的指令,因此学生能够以这种实践方式学习如何使用调试器。
导读—选读的GUI和图形实例研究
这一节简单浏览本书的主要选读特性,即一个分成8部分的实例研究,关注的是在Java中创建图形和图形用户界面(GUI)。我们先预览每个实例研究小节中涉及的主题。结束整个实例研究之后,读者将能够创建自己的简单图形应用程序。
3.9节关注对话框的使用。介绍图形用户界面的概念,并演示怎样用对话框处理输入和输出。在一个应用程序中,使用预定义的JOptionPane对话显示信息,并读取文本。
4.14节关注创建简单的绘图。介绍Java的图形功能,首先描述Java的坐标系,然后讨论线条绘制并创建一个显示绘图的窗口。
5.10节关注矩形和椭圆。除了绘制线条,Java还能绘制矩形和椭圆。这一节讲解如何调用绘制矩形和椭圆的方法。
6.13节关注颜色和填充形状。这一节讲解计算机怎样表示颜色,我们在图形中怎样使用颜色以及如何用纯色填充实心椭圆或矩形区域。
7.13节关注绘制圆弧。这一节讲解Java怎样指定角,然后展示了通过定义一个椭圆并给出沿椭圆的角度位置来绘制弧(即椭圆的一部分)。
8.18节关注使用对象和图形。这一节讲解如何使用对象来表示形状。我们创建了类来表示每种形状类型,把这些对象存储在数组中,并在每次需要绘制这些形状时进行检索。
9.8节关注使用标签显示文本和图像。这一节讲解如何创建标签并将其连接到应用程序窗口。应用程序使用标签为用户显示信息。Java中的标签可以显示文本、图像或者两者混合显示。
10.8节关注多态绘图。8.18节创建的每个类都有许多相似的特性。在实例分析的最后,我们研究了这些相似性,并重新设计了每个形状,使其能够从一个“基”类继承通用功能,并能够多态地进行处理。
本书包括的软件
许多销售用的Java开发工具都是可用的,但是不必用其开始Java学习之旅。本书的写作只用到了新的Java 2 Standard Edition Development Kit(Java 2标准版开发工具包,简称JDK) 5.0版。当前的JDK版本可从Sun公司的Java网站java.sun.com/j2se/downloads/index.html下载。这个网站也提供了JDK文档下载。
本书附带的光盘包含几个Java编辑器,如BlueJ 1.3.5版、JCreator Lite 3.10版(仅适用于Windows)、jEdit 4.1版和jGRASP 1.7.0版。这张光盘还包含了NetBeans 3.6版集成开发环境,如果对使用这个软件有疑问,可以阅读光盘上的文档,或阅读我们的Dive Into系列出版物,这些出版物以及本书其他资源都可从www.deitel.com/books/downloads.html获得。免费的Dive Into系列出版物有助于学生和教师熟悉各种Java开发工具。这些出版物包括:Dive Into NetBeans,Dive Into Eclipse,Dive Into JBuilder,Dive Into jEdit,Dive Into jCreator,Dive Into jGRASP和Dive Into BlueJ。
这张光盘还包含了本书中的例子和一个HTML 格式的Web页,其中包括了到Deitel & Associates公司网站和Prentice Hall网站的链接。如果读者能够访问Internet,就可以将这个Web页加载到自己的Web浏览器中,迅速访问所有资源。
本书教学资源
本书为教师提供了丰富的资源。教师资源光盘(Instructor誷 Resource CD,简称IRCD)包含了给出大量章末习题答案的习题解答手册(Solutions Manual),多项选择题形式的测试项文件(Test Item File)(约每节两个)和PowerPoint幻灯片,这些幻灯片包括了书中所有代码和图以及总结书中关键内容的项目符号列表。教师可以自己对这些幻灯片进行修改。
Prentice Hall的本书配套网站(www.prenhall.com/deitel)提供了用于学生和教师的资源。对于教师,配套网站提供了Syllabus Manager,可以帮助教师以交互方式规划课程,并创建在线的教案。配套网站上可供学生使用的特定于具体章节的资源包括:
● 各章教学目标
● 重点(例如各章的小结内容)
● 提纲
● 提示(例如,常见编程错误、错误预防提示、良好编程习惯、可移植性提示、性能提示和软件工程视点)
● 在线学习指南,其中包含补充的自测复习简答题(如判断正误题),带有答案并可以立即为学生提供反馈
学生可以使用Student Profile功能追踪自己的答题情况和测验的成绩,这项功能记录并管理着配套网站上进行的测试的所有反馈和测试结果。要想进入这个配套网站,可以访问www.prenhall.com/deitel。
Java in the Lab
Java in the Lab配套实验手册(ISBN 0-13-149497-X)是对Small Java How to Program, 6/e和Java How to Program, 6/e的补充,其中布置的动手实验作业设计用于增强学生对讲解资料的理解。这个实验手册设计用于封闭实验室,适合一位教师指导的按课程表进行的常规课程。封闭实验室提供了很好的学习环境,因为学生能够使用课程中所学的概念仔细地解决设计好的实验室问题。通过随时了解学生在实验室中的进度,教师能够更好地估计出学生对于学习资料的理解程度。这个实验手册还可用于开放实验室、课后作业或用于自测。本书以及实验手册可按套装得到(ISBN 0-13-154126-9)。
实验手册中的每章划分成Prelab Activities(实验课前准备活动),Lab Exercises(实验题)和Postlab Activities(实验课后活动)。每章包含介绍实验的关键主题的实验目标,并有一个布置实验的核对表,学生可以勾选教师已布置的实验题。实验手册的每页都带有穿孔,可进行装订,因此学生可以在需要的情况下将其答案交给教师。
实验手册的课前准备活动、实验题以及课后活动的答案都能以电子形式获得。教师可以从其Prentice Hall院校代表那里获得这些资料,而学生则得不到这些答案①。
实验课前准备活动
要求学生在阅读完每章内容后完成实验课前准备活动。实验课前准备活动用于测试学生对教材内容的理解,并准备好实验环节的编程题。这里关注的是重要术语和编程概念,对于学生自己进行复习是非常有效的。实验课前准备活动包括Matching Exercises(匹配题)、Fill-in-the-Blank Exercises(填空题)、Short-Answer Questions(简答题)、Programming-Output Exercises(编程输出题,确定短代码段的输出结果,而并不实际运行程序)和Correct-the-Code Exercises(改正代码题,找出并改正短代码段中的所有错误)。
实验题
每章中最重要的内容就是实验题,教学生如何应用书中所学的知识,使其做好Java编程准备。每个实验都包含一个或多个实验题以及一个调试题。这个环节的内容如下:
● Lab Objectives(实验目标)强调了实验题所关注的具体概念。
● Problem Description(问题描述)给出了题目的细节和帮助学生实现该程序的提示线索。
● Sample Outputs(示范输出)展示了希望得到的程序行为,进一步阐明了问题描述,有助于学生编写程序。
● Program Templates(问题模板)将完整的Java程序进行了修改,将关键代码行的内容替换成了描述这些缺少了的代码的注释。
● Problem-Solving Tips(解决问题提示)重点强调了学生在解答实验题时需要考虑的关键点。
● Follow-Up Questions and Activities(后续问题和活动)要求学生修改实验题的答案,编写与此类似的新程序,或解释解答实验题时所做的实现上的选择。
● Debugging Problems(调试题)由一些包含语法错误和/或逻辑错误的代码块组成。通过这种方式可以提醒学生将来在编程中可能遇到的各种错误。
实验课后活动
教授们一般会布置实验课后的活动,以加强一些关键概念或给学生提供实验室以外的更多编程经验。实验课后活动用于测试学生对于课前准备活动和实验课内容的理解,并要求学生应用其知识从头创建程序。这一节给出了两种类型的编程活动:编码题和编程挑战题。编码题比较简短,作为完成课前准备活动和实验课之后的复习,要求学生使用书中所学关键概念编写程序或程序段。编程挑战题则要求学生将其知识应用于一些真实的编程题。提供了提示线索、示范输出以及伪码,以帮助学生解决这些问题。能够成功完成某一章的编程挑战题的学生就已经掌握了这一章的学习内容。编程挑战题的答案可从www.deitel.com/books/downloads.html获得。
OneKey,CourseCompass,WebCT和BlackBoard
OneKey是Prentice Hall独家提供的新资源,能够使教师和学生通过一个非常便于使用的网站,访问最佳的在线教学和学习工具。通过OneKey,教师可以使备课更有效,使授课更生动,并能更便捷地对学生的学习情况进行评估。按章或主题的结构提供了非常丰富的备课材料,并且便于查找,另外还提供了实践环节的活动和测试题,这些都有助于使备课过程得以简化。
从Deitel的入门编程语言How to Program系列(包括本书)中精选出的内容,可以集成到各种流行的课程管理系统,包括CourseCompass,Blackboard和WebCT。课程管理系统有助于教师创建、管理和使用错综复杂的Web教育工具和程序。通过使用Deitel的课程管理系统中的内容,教师可以节省输入数据的时间。[注意:OneKey所带的e-Book包含了本书全部内容的文本。]
Blackboard,CourseCompass和WebCT提供如下功能:
● 创建和定制在线课程。包括张贴课程信息的区域(例如,教学计划、教学大纲、通知、参考教材清单、分数、成绩评估和进度跟踪)、课程和学生管理工具、成绩册、报告工具、事件跟踪记录、日历和课后作业题等。
● 通信工具。帮助创建和维护学生与教师之间的联系,包括聊天室、白板、共享文档、公告板和私人电子邮件。
● 灵活的测试工具。使教师能够根据直接链接到教材内容的习题,创建在线小测验和测试题,并能有效地进行分数评定和跟踪记录。所有的测试结果可以输入到成绩册中,以便进行有效的课程管理。WebCT还允许教师进行限时的在线小测验。
● 辅助资料。教师可以获得纸质的和在线形式的辅助资料。
除了Blackboard和WebCT中提供的工具,Prentice Hall的CourseCompass提供的资料还包括:
● CourseCompass课程主页。通过这个页面,学习课程就像阅读书籍一样容易。通过一个可以展开的目录,教师可以迅速浏览课程内容并链接到任何章节。
● 使用Prentice Hall的服务器集中管理。通过这种方式,课程管理员不必关注服务器空间的单独授权问题,并且可以获得Prentice Hall的技术支持。
● “How Do I”在线支持小节。适合那些需要使课程网站个性化的用户,其中给出了循序渐进的指导,可以添加PowerPoint幻灯片和视频等内容。
● 教师快速启动指南。帮助教师通过一个循序渐进的简单过程,创建在线课程。
为了查看这些支持Deitel教材的课程管理系统的免费在线演示内容并深入了解更多情况,可以访问下列网站:
● Blackboard:www.blackboard.com和www.prenhall.com/blackboard
● WebCT:www.webct.com和www.prenhall.com/webct
● CourseCompass:www.coursecompass.com和www.prenhall.com/coursecompass
通过OneKey进入Java 2交互式多媒体网络课堂(第六版)
Small Java How to Program, 6/e和Java How to Program, 6/e现在都包括配套的免费Web交互式多媒体产品:Java 2 Multimedia Cyber Classroom, 6/e,可通过OneKey于2005年秋季开始使用。这个基于Web的多媒体网络课堂包括了书中例子的音频讲解,书中一半习题的答案以及其他更多内容。若要了解这个新的交互式多媒体网络课堂的更多信息及其通过OneKey的使用方式,可以访问网站www.deitel.com,或通过www.deitel.com/newsletter/subscribe.html注册免费的Deitel Buzz Online电子邮件新闻组。
使用过多媒体网络课堂的学生和业内人士曾经反馈说,他们非常喜欢这种交互方式,并且多媒体网络课堂是一个功能强大的参考工具。许多教授告诉我们,他们的学生非常享受多媒体网络课堂所带来的乐趣,并且因此将更多的时间用于课程,比采用纯教材课程学习方式掌握了更多的知识。若要了解现有的CD-ROM方式的多媒体网络课堂种类的完整清单,可以查阅本书开头的Deitel Series页,或书末的产品清单和订购信息,或者也可以访问www.deitel.com,www.prenhall.com/deitel或www.InformIT.com/deitel。
个人选择
如今的学生对于其时间和资金的支配有着越来越高的要求,关于学习方式、学习时间和学习地点,他们希望有多种多样的选择方案。我们的出版商,Pearson Education旗下的Prentice Hall,通过创建Pearson Choices响应了这一需求,允许教师和学生在多种教材形式和价格之间进行选择。本书就是Java How to Program的另一种形式的替代版本,书的厚度降低,仅对应第一学期计算机科学(CS1)编程课,其价格也更低。与CS1课程市场的其他竞争书籍相比,这本书的价格也更低。
SafariX WebBook
SafariX在线教材(SafariX Textbooks Online)是为那些想在课程指定或推荐教材方面省钱的高校学生提供的一种新型服务。这种安全的WebBook平台为高等教育市场提供了一种新的选择,是除传统教材和在线学习服务以外的又一种选择。通过消除纸品教材与印刷、制作和零售相关的费用,Pearson可为学生们提供比传统印刷教材价格优惠50%的WebBooks。
SafariX WebBook可通过连接到互联网的某个Web浏览器进行阅读,不需要特殊的插件,也不需要下载应用程序。学生们只需简单地登录,购买使用权,就可以开始学习。通过SafariX Textbooks Online,学生可以搜索教材文本,在线做笔记,打印出综合了教授的授课讲义的阅读材料,并对以后要复习的重要段落插入书签等。他们可以轻松翻到指定的页码、阅读材料或章节。每个WebBook的目录列在课文左边的竖栏内。
我们很乐意为2004年秋季课程的学生提供本书的SafariX WebBook。详细信息可访问www.pearsonchoices.com。有对应的SafariX WebBook的其他Deitel书籍包括Java How to Program, 6/e和Simply C++: An Application-Driven Tutorial Approach。更多信息可参见www.safarix.com/tour.html。
Java How to Program, 6/e
Java How to Program, 6/e共29章,可用于各种级别的课程。这个版本的新特点是尽早引入类和对象。这本书针对J2SE 5.0进行了更新,并涵盖了Java面向对象编程方方面面的基础知识。第1章至第8章以及第10章中新增了一个选读的自动柜员机(ATM)实例研究,讲解了软件工程基础和UML 2.0面向对象设计。书中贯穿的其他集成实例研究包括:GUI和图形(见第3章至第12章)、Time类(见第8章)、Employee类(见第9章和第10章)和GradeBook类(见第3章至第5章以及第7章)。下面是按章列出的全书内容。[注意:选读的OOD/UML自动柜员机(ATM)实例研究没有包括在Small Java How to Program 6/e中。]
Small Java How to Program, 6/e和Java How to Program, 6/e都包含的各章
第1章 计算机、Internet和万维网概述
第2章 Java应用程序入门
第3章 类和对象的基础知识
第4章 控制语句(第I部分)
第5章 控制语句(第II部分)
第6章 方法的深入剖析
第7章 数组
第8章 类和对象的深入剖析
第9章 面向对象编程:继承
第10章 面向对象编程:多态
仅包含在Java How to Program, 6/e中的各章
第11章 GUI组件(第I部分)
第12章 图形与Java 2D
第13章 异常处理
第14章 文件与流
第15章 递归
第16章 搜索与排序
第17章 数据结构
第18章 类属
第19章 集合
第20章 Java Applet简介
第21章 多媒体:Applet与应用程序
第22章 GUI组件(第II部分)
第23章 多线程
第24章 网络互连
第25章 用JDBC操纵数据库
第26章 Servlet
第27章 Java Server Pages(JSP)
第28章 格式化输出
第29章 字符串、字符和规则表达式
Deitel Buzz Online电子邮件新闻组
我们的免费电子邮件新闻组(Deitel Buzz Online)包括行业趋势和发展的评论、有关已出版和即将出版图书的免费文章和资源的链接、未来出版计划、勘误表、挑战、奇闻轶事和公司提供的教师授课形式的培训课程的信息。需要订阅的读者可直接访问www.deitel.com/newsletter/subscribe.html。
致谢
写书的乐趣之一是有机会感谢那些曾付出过努力的人们,他们的名字并未出现在封面上,但他们的辛勤工作、积极合作、深厚友谊和通情达理对于本书的最终出版都是至关重要的。首先感谢来自Deitel & Associates公司并为此付出了长期辛劳的人们,他们是:
● Barbara Deitel,Deitel & Associates公司的首席财政主管,为每章开始处引文的提供和本书的文字编辑工作做出了贡献。
● Abbey Deitel,Deitel & Associates公司的总裁,毕业于卡内基·梅隆大学工业管理专业。她参与了前言的编写,并对本书封面的基调和昆虫名提出了建议。
● Andrew B. Goldberg,不久前毕业于阿默斯特学院,获得了计算机科学学士学位。他和我们合著了Internet and World Wide Web How to Program, 3/e并为Operating Systems, Third Edition做出了贡献。根据本书尽早引入类的新思路和其他内容修订,他负责更新了本书的第3章至第10章,另外他还参与编写了附录J。
● Christi Kelsey毕业于普度大学管理信息系统专业。她参与了前言、第1章以及附录J的编写,她还编辑了索引并为本书的原稿整理了页码。
● Su Zhang 在麦吉尔大学获得计算机学士和硕士学位。她参与编写了JavaWeb Services for Experienced Programmers和Simply Java Programming。她还对其他几本Deitel出版物有贡献,其中包括Advanced Java 2 Platform How to Program,Python How to Program和Operating Systems, Third Edition。她编写了本书第7章和第8章中有关J2SE 5.0新特性的章节,并且还参与了附录F、附录G和附录H的编写。
● Jing Hu,Deitel & Associates公司Summer Internship计划的参与者,现在是康奈尔大学计算机科学专业二年级学生。他参与编写了新增的GUI和图形实例研究以及第3章至第8章的教师指导手册,还参与编写了关于视频、前置条件/后置条件,断言和不变量的章节。
同样,我们深感荣幸能与Prentice Hall出版社里一支才华横溢、勇于奉献的专业出版队伍共同合作。为此,我们要特别感谢曾付出过巨大努力的计算机科学编辑Kate Hargett,还要感谢她的上司,也就是我们的出版顾问,Prentice Hall工程与计算机科学部总编Marcia Horton。非常感谢Jennifer Cappello在管理评阅过程中所做的非凡工作。感谢Vince O'Brien,Tom Manshreck和John Lovell为本书的出版所做的大量工作。感谢Carole Anson,Paul Belfanti和Geoffrey Cassar在重新设计本书的内页和封面时所奉献的艺术才华,以及Sarah Parker为本书辅助软件包所做的工作。
除此以外,我们还要衷心感谢第五版出版后的评阅人以及第六版评阅人所付出的辛劳,他们是:
Sun Microsystems公司评阅人
Doug Kohlert,Sun Microsystems公司
Brandon Taylor,Sun Microsystems公司
学术界评阅人
Karen Arlien,俾斯麦州立学院
Walt Bunch,Chapman大学
Marita Ellixson,Eglin空军基地/阿肯色大学
Bill Freitas,Lawrenceville学校
Joe Kasprzyk,塞勒姆州立学院
Earl LaBatt,Altaworks公司/新汉普郡大学
Brian Larson,Modesto初等学院
Roberto Lopez-Herrejon,德克萨斯大学阿灵顿分校
Dean Mellas,塞里图斯学院
David Messier,Eastern大学
Gavin Osborne,Saskatchewan应用科学技术学院
Donna Reese,密西西比州立大学
Craig Slinkman,德克萨斯大学阿灵顿分校
Mahendran Velauthapillai,乔治敦大学
Stephen Weiss,北卡罗莱纳大学教堂丘分校
其他工业界评阅人
Jonathan Gadzik,自由咨询顾问
Anne Horton,AT&T贝尔实验室
James Huddleston,自由咨询顾问
Karen Tegtmeyer,自由咨询顾问
Java How to Program 5/e出版后的审阅人
Ben Blake,克利夫兰州立大学
Walt Bunch,Chapman大学
Michael Develle,自由咨询顾问
Marita Ellixson,Eglin空军基地/阿肯色大学
Ephrem Eyob,弗吉尼亚州立大学
Bjorn Foss,佛罗里达城市大学
James Huddleston,自由咨询顾问
Brian Larson,Modesto初等学院
David Messier,Eastern大学
Andy Novobilski,田纳西大学Chattanooga分校
Bill O’Farrell,IBM公司
Richard Ord,加利福尼亚大学圣迭哥分校
Gavin Osborne,Saskatchewan应用科学技术学院
Donna Reese,密西西比州立大学
Craig Slinkman,德克萨斯大学阿灵顿分校
Brandon Taylor,Sun Microsystems公司
Karen Tegtmeyer,自由咨询顾问
Sreedhar Thota,西Iowa社区技术学院
Mahendran Velauthapillai,乔治敦大学
Loran Walker,劳伦斯理工大学
在极其有限的时间内,他们仔细审阅了教材的每个部分,提出了许多建议,使本书内容讲解的准确性和完整性得以保证。
现在你已拥有它了!Java是一种功能强大的编程语言,能帮助你迅速而高效地编写程序。Java也能很好地适应企业级系统开发,帮助机构建立其核心的信息系统。在阅读本书时,我们真诚期待着广大读者对于改进本书所提出的宝贵评论、批评、指正和建议。邮件可发送至deitel@deitel.com,我们会及时给予答复,并且我们会将更正和解释信息发布在www.deitel.com上。
我们希望读者阅读本书时获得的乐趣能和我们写作时体会到的一样多。
Dr. Harvey M. Deitel
Paul J. Deitel
作者简介
Harvey M. Deitel博士是Deitel & Associates公司的主席和首席战略主管。在计算机领域43年的勤奋工作,使他具有极其丰富的工业界和学术界经验。Detiel博士拥有麻省理工学院的学士和硕士学位,以及波士顿大学的哲学博士学位。他曾致力于IBM和MIT的一系列领先于时代的虚拟内存操作系统项目的研究工作,这些项目的技术成果如今已广泛应用于UNIX,Linux和Windows XP等系统中。他从事大学教学20余年,是波士顿学院计算机系的终身教授,而且在与其子Paul J. Deitel成立Deitel & Associates公司之前,一直担任该系的系主任。他和Paul合作了数十本书籍和多媒体软件包,所编写的教材已被翻译成日文、德文、俄文、西班牙文、繁体中文、简体中文、韩文、法文、波斯文、意大利文、葡萄牙文、希腊文、乌尔都文和土耳其文,受到世界范围内的认可。Detiel博士为大型公司、学术机构、政府机构和军事部门已举办了数百次专业研讨班。
Paul J. Deitel是Deitel & Associates公司的首席执行官和首席技术主管,毕业于麻省理工学院的斯隆管理学院,主修信息技术。在Deitel & Associates公司,他负责向工业界客户讲授Java,C++,C,互联网和万维网课程,其客户包括IBM公司、Sun Microsystems公司、戴尔公司、朗讯科技、高保真公司、NASA肯尼迪空间中心、国家强风暴实验室、康柏公司、白沙导弹基地、Rogue Wave软件公司、波音公司、美国容错技术有限公司、剑桥技术合作公司、Open Environment公司、One Wave公司、Hyperion软件公司、Adra系统公司、Entergy公司、CableData系统公司以及其他许多机构。Paul还为美国计算机协会波士顿分部讲授C++和Java课程。他和他的父亲Harvey M. Deitel博士都是世界上最畅销的计算机科学教材的作者。
Deitel & Associates公司简介
Deitel & Associates公司是一家国际知名的企业培训和媒体内容制作公司,主要致力于计算机编程语言、互联网/万维网软件技术和对象技术的教育培训。该公司针对互联网和万维网编程、对象技术以及主流的编程语言和平台(如Java,高级Java,C,C++,.NET编程语言,XML,Perl和Python等)提供教师授课形式的课程。Harvey M. Deitel 博士和Paul J. Deitel是Deitel & Associates公司的创立者。公司的客户包括全球多家大型计算机公司、政府机构、军事部门以及商业组织。通过与Prentice Hall 28年的良好合作,Deitel & Associates公司连续出版了大量引领时代的编程教材、专业图书、交互式多媒体网络课堂、完全培训课程(Complete Training Courses)、基于Web的培训课程以及可添加到课程管理系统(如流行的WebCT,Blackboard和Pearson的CourseCompass等)中的电子内容。读者可通过deitel@deitel.com与Deitel & Associates公司和作者联系。
想要进一步了解Deitel & Associates公司、其出版物及其Dive Into系列全球企业培训课程,可查阅本书最后几页或访问www.deitel.com并通过www.deitel.com/newsletter/subscribe.html订阅免费的Deitel Buzz Online电子邮件新闻组。
希望购买Detiel系列图书、网络课堂、完全培训课程和基于Web的培训课程的个人,可访问www.deitel.com/books/index.html。
如果有公司或学术机构需要批量订购,可直接与Prentice Hall联系。关于全球订购的详细信息,可查阅本书最后几页。...