面向对象程序设计教程(Java版)(原书第4版)
作者 : C. Thomas Wu
译者 : 马素霞 齐林海 王素琴 谢萍
丛书名 : 计算机科学丛书
出版日期 : 2007-07-25
ISBN : 7-111-21316-1
定价 : 59.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 572
开本 : 16开
原书名 : An Introduction to Object-Oriented Programming with Java Fourth Edition
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

本书以面向对象的程序设计方法贯穿始终,全面详细地讲解了面向对象程序设计的基本思想和编程方法。全书强调正确的面向对象设计实践,使学生从学习使用对象开始,然后学习设计类,并以轻松的方式教学生如何设计自己的类。书中还结合大量实例进行讲解,基础性和实用性并重,不仅要使读者掌握Java语言,而且要能够运用面向对象设计思想来解决实际中的一些常见问题。总之,本书是一本很好的面向对象程序设计的入门书籍。

本书特点:
  ●强调初级编程的内容,并在书中涵盖了Java 5.0(Java 2 SDK 1.5) 的特色内容,如Scanner类和Formatter类等。
  ●全书对程序开发进行了循序渐进式的讲解,从第2章至第13章,在这几章的章末都采用实例开发编程的方法。通过设计、编码、测试这种阶梯式的顺序使学生学会编写更大的程序。
  ●本书广泛利用图解将初学者普遍认为的难点和易混淆的地方变得简单透明。
  ●书中大量使用了各种设计指导、提示、建议、快速检查等交互式的教学方式,作者还把这些内容穿插在实例部分介绍,使本书的内容更加生动有趣。

本书的在线网址为www.mhhe.com/wu
  ●本书的教学支持网站提供了完整的PowerPoint资料,以及练习的完整答案。
  ●网站将作业管理/测试库这些概念复习题目收录在电子问题库中,教师可以从中选取考试题或家庭作业题。
  ●与本书配套的在线实验室可用于封闭实验、开放实验,或布置程序设计题目。
  ●交互测验供学生测试所学的知识,并可迅速得到反馈结果。
  ●网上提供了本书所有例子程序的源代码。

图书特色

图书前言

本书以面向对象程序设计方法为主线,强调适当的面向对象设计实践。学生首先学习如何使用对象,然后学习设计类。在第4版中,本书将以轻松的方式教授学生如何设计自己的类,自定义类的内容将分为两章讲解。
  第4版的主要变化
  在介绍本书的特点之前,首先简要介绍一下第4版的变化。第4版对自定义类及Java 5.0(Java 2 SDK 1.5)的讨论更容易理解、更深入,对GUI具有较少的依赖性。
  1. 轻松地介绍自定义类
  在学习面向对象程序设计时,最令学生感到困难的问题之一就是创建自定义类。大多数学生觉得使用标准类中的对象非常简单,然而当他们试着定义自己的类时,通常会陷入困惑。在第3版中,我们用一章的篇幅介绍了与自定义类相关的所有主题,而第4版则将自定义类分为两章进行讲解。我们将在第4章中使用新例子介绍自定义类的基本知识,轻松的讨论会使学生更容易理解。
  2. 更深入地讨论自定义类
  第7章将更深入地介绍自定义类,包括方法重载、保留字this的使用、类方法和变量,这些内容是大多数学生难以掌握的。第4版在讲解完选择和重复控制方面的传统主题后,到第7章再介绍这些高级主题,会使学生更容易理解。另外,通过使用控制结构,可以使用更详细、更实际的例子来介绍OO特性,而这些例子非常清晰地显示出对这些特性的需求。
  3. Java 5.0
  最新的Java 2 SDK增加了很多内容。在第4版中,我们对其中一些新增加内容作了介绍,并改进了CS1的教学。首先介绍的是Scanner类。在SDK 1.5之前,都是通过使用BufferedReader对象来完成标准的输入例程。由于BufferedReader抛出异常,我们必须在讲解标准的输入之前讨论异常处理,或者提供某种自定义输入类来隐藏异常处理。而使用新的Scanner类,我们可以讲解更为简单的输入例程,这些简单的输入例程不需要任何异常处理,Scanner类将在第3章介绍。接下来介绍的是Formatter类,这个类提供了格式化技术,它与C程序设计语言所支持的格式化技术几乎一样,我们将在第6章讲解Formatter类。
  4. 不依赖于GUI知识
  在第3版中,我们在第7章介绍了基本的GUI及事件驱动的程序设计,在第14章介绍高级GUI。在后面章节中,某些例子和实例开发需要GUI的知识。我们将这些知识合并为一章,并移到第14章,因此提供了一定的灵活性。在CS1课程中不讲授GUI的教师照样能够使用第4版。讲授GUI的教师可以有选择性地介绍GUI的主题,且可以从第2章以后就开始介绍。
  本书的组织
  本书共16章(即第0章~第15章),这些内容对于一学期的课程而言足够了。这些内容可以按顺序讲解,也可以不按顺序讲解。我们首先介绍各章之间的关系,然后对每一章的内容进行概括。
  各章之间的关系
  大部分章节应按顺序阅读,但也可以有一些变化,特别是对标有“*”的章节。第0、14、15章和3.11节、6.12节是可选的,8.6节也可以作为可选内容。下面是一个简单的各章之间的关系图。
  各章内容概述
  下面对每一章的内容进行简要描述。
  ·第0章是“可选”章节。我们将介绍程序设计语言的背景知识。如果希望从面向对象程序设计的概念开始讲解,则可以跳过这一章,或者将该章留作课外阅读内容。
  ·第1章将给出面向对象程序设计的基础知识。我们将描述面向对象程序设计的主要成分,并用UML图形符号说明每一个概念。
  ·第2章将介绍Java程序设计的基础及编辑、编译和运行程序的过程。从该章介绍的第一个样例程序开始,就强调面向对象的概念。通过介绍标准类String、JOptionPane、Date和SimpleDateFormat,将强化对象声明、创建及使用的概念。此外,通过使用标准类,学生可以立即开始编写实际的程序。
  ·第3章将介绍变量、常量和处理数值数据的表达式。我们将讲解java.lang包中的标准类Math,并介绍更多的标准类(GregorianCalendar和DecimalFormat)来继续强化面向对象的概念。我们使用System.in和新的Scanner类来描述并说明控制台输入,使用System.out描述控制台输出。3.11节描述在内存空间中如何表示数值。
  ·第4章将讲解创建自定义类的基础知识,通过使用示例介绍基础的知识使该章易于理解。该章涉及的主题有构造方法、可见性修饰符(public和private)、局部变量及如何给方法传递数据。我们提供与主题的本质有关的易于掌握的例子,使学生能清楚地了解这些主题。
  ·第5章将讲解选择语句if和switch,其中涵盖布尔表达式和嵌套的if语句。我们通过使用等价“==”和相等(equals和compareTo方法)讲解如何比较对象;使用String和自定义的Fraction类能更清楚地描述等价和相等的区别。该章还将介绍二维图形的绘制,开发一个屏保样例程序。
  ·第6章将讲解重复语句while、do-while和for,并讲解在编写重复语句时存在的隐患。要避免的隐患之一是使用float或double作为计数器变量的数据类型。我们通过演示一段导致无限循环的代码来解释这种隐患。使用求两个整数的最大公约数作为重要循环语句的例子,对比了拙劣的(蛮干法)和巧妙的(欧几里得法)解决方案之间的区别。使用JOptionPane类的showConfirmDialog方法来介绍确认对话框的使用。此外,还将介绍Formatter类(Java 2 SDK 1.5中新增加的类),并演示如何使输出结果对齐。该章最后可选的6.11节将介绍递归,递归是实现重复的另一种技术。这里将给出求两个整数的最大公约数方法的递归版本。
  ·第7章是介绍创建自定义类的第二部分。我们将讨论与创建自定义类有关的新主题,也对第4章介绍过的某些主题进行更深入的讲解。该章的关键主题是方法重载、保留字this、类方法和变量、从方法返回对象、传值方式的参数传递。和在第4章中一样,我们将提供很多易懂的例子,以便初学者理解这些主题。Fraction类用于说明很多主题,如this和类方法的使用。该章将介绍Fraction类的完整定义。
  ·第8章将讲解异常处理和断言。该章的重点是可靠程序的构造,对异常处理也将给出详细的描述。在上一版中,异常处理是作为讨论输入输出的一部分来介绍的。在第4版中,将异常处理作为单独的主题加以介绍。我们将介绍断言,并说明如何通过在开发的早期捕获逻辑错误,来使用断言以提高已完成产品的可靠性。
  ·第9章将介绍非数值类型:字符和字符串,该章将讲解String类和StringBuffer类。字符串处理的一个重要应用是模式匹配。该章描述模式匹配和正则表达式,介绍Pattern和Matcher类,以及如何将这两个类应用于模式匹配。
  ·第10章将讲授数组,包括基本数据类型的数组和对象数组。在Java中,数组是引用数据类型,我们将说明如何将数组传递给方法。我们会描述如何处理二维数组,在Java中,二维数组实际上就是数组的数组。接下来将介绍列表和映射,以更通用和灵活的方式来维护数据集合。在样例程序中,将介绍java.util包中的ArrayList和HashMap类的使用。另外,还将介绍如何用映射类TreeMap来实现在第9章的样例开发程序中所使用的WorldList辅助类。
  ·第11章将介绍查找和排序算法,涉及复杂性为N2和N log2 N的排序算法。根据学生的基础,查找和排序算法的数学分析可以省略。
  ·第12章将讲解文件I/O,介绍诸如File和JFileChooser等标准类,其中涵盖文件I/O的所有类型,从低级的字节I/O到高级的对象I/O。我们还将介绍如何使用文件I/O技术来实现第8章和第9章样例开发程序中的辅助类—Dorm和FileManager类。
  ·第13章将讨论继承和多态,以及如何在程序设计中有效地使用它们。针对成员可访问性和构造方法,讲解了继承的作用,以及抽象类和抽象方法的作用。
  ·第14章将介绍GUI和事件驱动的程序设计。该章只涉及基于Swing的GUI组件,包括JButton、JLabel、ImageIcon、JTextField、JTextArea和与菜单有关的类。我们将描述嵌套面板和布局管理器的有效使用,在样例程序中将描述和说明鼠标事件的处理。不讲授GUI的教师可以跳过本章的所有内容,讲授GUI的教师可以从第2章以后尽早地介绍该章的开始部分。
  ·第15章将讲解递归。由于我们想展示适合使用递归的例子,所以不包括任何递归算法(除了那些用于解释的例子以外),这些算法实际上都应该编写为非递归的。
  本书的特点
  问题解决
  实例开发程序
  第2章到第13章将演示以下重要问题的解决步骤:
  ·问题陈述
  ·总体计划
  ·设计
  ·编码
  ·测试
  开发练习给学生提供进行实际的增量设计的机会。
  带有“Bad Version”字样的代码不仅表示学生的常犯错误,而且表明这是糟糕的设计。其后会给出正确的解决方案,使学生理解为什么第一次尝试是不正确的。
  面向对象方法
  本书作者采用面向对象程序设计的完全沉浸式方法,从一开始就强调正确的面向对象设计实践和Java语言的使用。因此,不仅教给学生如何成长为面向对象的程序员,而且还用贯穿全书的例子来说明如何成长为程序员。
  ·使用大量图来说明关键理念。
  ·例子代码的编写符合良好的面向对象实践。
  ·从第7章的样例代码开始使用Javadoc注释,向学生教授Java代码所使用的标准文档技术。
  输入/输出
  对于用户界面,本书使用最新的标准Java库,向学生介绍基于控制台的方法和图形化方法,每种方法都用多个例子加以说明。
  ·在很多例子中,输入和输出都采用JOptionPane类。
  ·System.out用于讲解控制台输出。
  ·Scanner类用于向学生讲授基于控制台的输入。
  教学法
  设计指导  提供良好程序设计的建议。
  有益的提示  给学生以提示,帮助他们记住重要概念。
  建议  在学生有效的程序设计方面给学生提供建议。
  你可能想知道  给学生提供有趣的信息点。
  自我检测  练习在每节的最后,帮助学生测试他们对主题的理解。
  教师和学生补充资料
  本书的在线学习中心网址是www.mhhe.com/wu。
  教师的补充资料
  ·完整的PowerPoint资料,包括讲义和图。
  ·本书练习的完整答案。
  ·例子库(Example Bank)—增加的例子(可以通过主题搜索)在网站的“bank”栏目中提供。
  ·作业管理员/测试库(Homework Manager/Test Bank)—概念回顾问题存储在这个电子问题库中,可以指定其中的问题为考试题或家庭作业。
  ·与本书配套的在线实验室(Online lab)可以用于封闭实验、开放实验,或者用于布置程序设计项目。
  学生的补充资料
  ·在大多数流行编译器上如何启动和运行方面,Compiler How Tos提供了指导,来帮助学生使用IDE。
  ·交互测验(Interactive Quizzes)允许学生测试对所学知识的掌握程度,并立即得到反馈。
  ·书中所有例子程序的源代码(Source code)。
  ·快速检查练习的答案(Answer)。
  ·关键术语的术语表(Glossary)。
  ·与计算机科学有关的新闻链接。
  ·其他主题(Additional Topic),如swing方面的更多信息及数据结构方面的介绍。
  致谢
  对以下评阅者所给予的评论、建议和鼓励表示诚挚的感谢!
  我的故事
  2001年9月,出于个人原因我改名了,由Thomas Wu教授改成现在的Thomas Otani教授。为了保持连续性,并且不使人们感到困惑,我继续用以前的名字出版本书。对我改名感兴趣的人,可以访问我的网站www.drcaffeine.com。

作者简介

C. Thomas Wu:C. Thomas Wu: 在美国加州大学圣地亚哥分校获计算机科学博士学位,目前在蒙特雷海军研究生院担任副教授,此前,他在西北大学埃文斯顿分校担任副教授。他的研究方向包括计算机科学教育、Java、数据库、面向对象数据库系统、用户接口设计和机器人学。

译者简介

马素霞 齐林海 王素琴 谢萍:暂无简介

译者序

面向对象技术是程序设计方法的一场革命。与传统的结构化技术相比,面向对象技术在解决大型复杂的问题及网络计算方面更有优势。上个世纪末以来,面向对象技术逐渐成为计算机应用领域的主流技术。诞生于1995年的Java语言是典型的面向对象程序设计语言,由于Java具有跨平台特性、安全机制出众、高可靠性及内嵌的网络支持,它已成为编写网络应用程序的首选工具之一。目前,大多数学校都在本科阶段开设Java程序设计课程,有些学校还将Java作为第一门语言课程。
  本书以面向对象的程序设计方法贯穿始终,全面详细地讲解了面向对象程序设计的基本思想和编程方法,在讲解的过程中运用了很多形象的比喻,读者在学习过程中不会感到枯燥乏味,且容易理解。书中还结合大量实例进行讲解,基础性和实用性并重。通过阅读本书,读者不仅能掌握Java语言,而且能够掌握一些常见实际问题的解决方法,因此,本书是很好的Java语言及面向对象程序设计的入门书籍,适合作为大专院校“Java语言程序设计”的课程教材,也适合初学者作为自学教材。
  本书的突出特点是讲解细致、深入,在讲解理论的同时,注重软件开发实践,几乎在每一章的最后都有实例开发一节。全书共分16章,读者在学习时可以按照顺序阅读,建议按顺序阅读第1章到第7章的内容,其他章节可以根据具体情况有选择性地阅读,特别是标有“*”的章节,其中第0、14、15章和3.11节、6.11节及8.6节的断言部分可作为选学内容。
  本书的翻译工作主要由华北电力大学计算机系的教师完成,主要翻译人员包括马素霞(第0~1、12~15章)、齐林海(第2~5章)、谢萍 (第6~8章) 、王素琴(第9~11章)。另外,华北电力大学计算机系的钱力、王强、林天华、刘金晓、王萍萍、王飞翔、齐明也参与了本书的翻译工作。在全体翻译人员的通力协作下,本书得以顺利完成,在此我对他们表示感谢,最后本人对全书做了仔细审核与修改,尽力使译稿准确、易懂。
  由于本书翻译时间有限,译稿难免存在错误和疏漏,欢迎读者批评指正。
  马素霞
  2007年4月

图书目录

译者序
前言
第0章 程序设计语言简介 1
0.1 程序设计语言 1
0.2 Java 1
第1章 面向对象程序设计与软件开发简介 2
1.1 类和对象 2
1.2 消息和方法 3
1.3 类数据值和实例数据值 5
1.4 继承 6
1.5 软件工程和软件生命周期 7
练习 8
第2章 Java使用初步 10
2.1 第一个Java程序 10
2.2 程序的组成元素 16
2.3 编辑、编译及运行周期 22
2.4 Java标准类实例 24
2.5 实例开发 32
练习 36
第3章 数值数据 40
3.1 变量 40
3.2 算术表达式 45
3.3 常量 49
3.4 获取数字输入值 50
3.5 标准输出 53
3.6 标准输入 55
3.7 Math类 60
3.8 随机数生成 63
3.9 GregorianCalendar类 64
3.10 实例开发 67
3.11* 数字表示 75
练习 77
第4章 自定义类:第一部分 83
4.1 第一个例子:定义并使用类 83
4.2 第二个例子:定义并使用多个类 90
4.3 匹配实参与形参 93
4.4 将对象传递给方法 94
4.5 构造方法 98
4.6 信息隐藏与可视性修饰符 101
4.7 类常量 103
4.8 局部变量 108
4.9 调用同一类中的方法 110
4.10 将任一类变成主类 112
4.11 实例开发 113
练习 122
第5章 选择语句 127
5.1 if语句 127
5.2 嵌套的if语句 134
5.3 布尔表达式和变量 139
5.4 比较对象 144
5.5 switch语句 148
5.6 绘图 151
5.7 实例开发 157
练习 171
第6章 重复语句 177
6.1 while语句 177
6.2 编写重复语句存在的陷阱 183
6.3 do-while语句 187
6.4 回环分半重复控制 189
6.5 确认对话框 192
6.6 for语句 192
6.7 嵌套的for语句 195
6.8 格式化输出 197
6.9 贷款表 201
6.10 估算运行时间 202
6.11* 递归方法 205
6.12 实例开发 208
练习 215
第7章 自定义类:第二部分 221
7.1 从方法中返回对象 221
7.2 保留字this 224
7.3 重载方法和构造方法 230
7.4 类变量和类方法 233
7.5 值调用参数传递 235
7.6 将类组织成包 240
7.7 使用Javadoc注释命令生成类文档 241
7.8 完整的Fraction类 245
7.9 实例开发 251
练习 262
第8章 异常与断言 267
8.1 捕获异常 267
8.2 抛出异常与多catch块 271
8.3 传播异常 275
8.4 异常的类型 280
8.5 自定义异常 282
8.6 断言 284
8.7 实例开发 288
练习 297
第9章 字符与字符串 299
9.1 字符 299
9.2 字符串 301
9.3 模式匹配和正则表达式 308
9.4 Pattern类和Matcher类 313
9.5 比较字符串 315
9.6 StringBuffer和StringBuilder类 317
9.7 实例开发 321
练习 329
第10章 数组 333
10.1 数组基本概念 333
10.2 对象数组 341
10.3 将数组传递给方法 348
10.4 二维数组 352
10.5 列表和映射 357
10.6 实例开发 364
练习 375
第11章 排序和查找 378
11.1 查找 378
11.2 排序 381
11.3 堆排序 386
11.4 实例开发 395
练习 409
第12章 文件输入与输出 411
12.1 File和JFileChooser对象 411
12.2 低级文件I/O 417
12.3 高级文件I/O 420
12.4 I/O对象 427
12.5 实例开发 432
练习 437
第13章 继承与多态 440
13.1 用继承定义类 440
13.2 运用多态有效地使用类 443
13.3 继承和成员可访问性 445
13.4 继承和构造方法 448
13.5 抽象超类和抽象方法 451
13.6 继承与接口的比较 454
13.7 实例开发 455
练习 468
第14章 图形用户界面与事件驱动的
程序设计 471
14.1 定制框架窗体 472
14.2 图形用户界面程序设计基础 476
14.3 与文本相关的GUI组件 483
14.4 布局管理器 490
14.5 有效使用嵌套面板 495
14.6 其他GUI组件 501
14.7 菜单 514
14.8 处理鼠标事件 518
练习 523
第15章 递归算法 528
15.1 递归的基本元素 528
15.2 目录列表 529
15.3 异序词 530
15.4 汉诺塔 532
15.5 快速排序 534
15.6 何时不能使用递归 537
练习 539
附录A 如何运行Java程序 541
附录B 实例程序 546
附录C 标准类和接口 557
附录D UML图 569

参考读物推荐
作者: Brian Chess;Jacob West
作者: (美)Cem Kaner,Jack Falk,Hung Q.Nguyen
作者: (美)Martin Fowler