华信教育资源网
Java程序设计与数据结构教程(第二版)
丛   书   名:国外计算机科学教材系列
作   译   者:辛运帏,饶一梅 等 出 版 日 期:2014-05-01
出   版   社:电子工业出版社 维   护   人:冯小贝 
书   代   号:G0230850 I S B N:9787121230851

图书简介:

本书向授课教师提供英文原版教辅(习题解答,PPT),具体申请方式请咨询te_service@phei.com.cn。本书颇具匠心地将程序设计、数据结构等相关课程内容有机地包容在一本书中,解决了这两门专业基础课不能很好地衔接的问题。本书从一开始就将重点放在软件开发实践方面,在解释如何编写类之前先介绍了控制结构,从而使读者在真正了解基础程序设计语句之后再学习编写类代码。作者还使用数据结构中的内容作为问题导引,在介绍经典算法的同时全面介绍了如何用所学知识解决实际问题。
定价 79.0

关注公众号

关注微博

您的专属联系人更多
联系人:李蕊
电话:010-88254558
邮箱:lir@phei.com.cn
关注 评论(2) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源
    图书特别说明:由于成本考虑,本书不作为参考书赠送。如果确有授课教材选用的需求,可将详细情况发送给本书专属联系人,我们将进一步沟通并酌情处理。

    会员上传本书资源

  • 图 书 内 容

    图书详情

    ISBN:9787121230851

    开 本:16开

    印 张:33.75

    版 次:01-01

    页 数:540

    字 数:908

    内容简介

    本书向授课教师提供英文原版教辅(习题解答,PPT),具体申请方式请咨询te_service@phei.com.cn。本书颇具匠心地将程序设计、数据结构等相关课程内容有机地包容在一本书中,解决了这两门专业基础课不能很好地衔接的问题。本书从一开始就将重点放在软件开发实践方面,在解释如何编写类之前先介绍了控制结构,从而使读者在真正了解基础程序设计语句之后再学习编写类代码。作者还使用数据结构中的内容作为问题导引,在介绍经典算法的同时全面介绍了如何用所学知识解决实际问题。

    本书目录

    目    录
    第1章  绪论
    1.1  Java程序设计语言
    1.2  程序开发
    1.3  问题求解
    1.4  软件开发行为
    1.5  面向对象程序设计
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第2章  数据和表达式
    2.1  字符串
    2.2  变量和赋值
    2.3  基本数据类型
    2.4  表达式
    2.5  数据转换
    2.6  读输入数据
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第3章  使用类和对象
    3.1  创建对象
    3.2  String类
    3.3  包
    3.4  Random类
    3.5  Math类
    3.6  格式化输出
    3.7  枚举类型
    3.8  包装类
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第4章  条件和循环
    4.1  布尔表达式
    4.2  if语句
    4.3  数据比较
    4.4  switch语句
    4.5  while语句
    4.6  迭代器
    4.7  do语句
    4.8  for语句
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第5章  编写类
    5.1  再谈类和对象
    5.2  类的剖析
    5.3  封装
    5.4  方法的剖析
    5.5  静态类成员
    5.6  类关系
    5.7  方法设计
    5.8  方法重载
    5.9  测试
    5.10调试
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第6章  图形用户界面
    6.1  GUI元素
    6.2  更多的组件
    6.3  布局管理器
    6.4  鼠标和键盘事件
    6.5  对话框
    6.6  一些重要细节
    6.7  GUI设计
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第7章  数组
    7.1  数组元素
    7.2  数组的声明及使用
    7.3  对象数组
    7.4  命令行参数
    7.5  变长参数表
    7.6  二维数组
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第8章  继承
    8.1  创建子类
    8.2  方法的重写
    8.3  类层次
    8.4  可见性
    8.5  设计继承
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第9章  多态
    9.1  后绑定
    9.2  通过继承实现多态
    9.3  接口
    9.4  通过接口实现多态
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    
    第10章  异常
    10.1  异常处理
    10.2  不捕获异常
    10.3  try-catch语句
    10.4  异常传播
    10.5  异常类的层次
    10.6  I/O异常
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第11章  递归
    11.1  递归思想
    11.2  递归程序设计
    11.3  使用递归
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第12章  算法分析
    12.1  算法效率
    12.2  增长函数和大O符号
    12.3  比较增长函数
    关键概念摘要
    自测题
    练习
    自测题答案
    第13章  查找与排序
    13.1  查找
    13.2  排序
    13.3  分析查找及排序算法
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    
    第14章  栈
    14.1  集合的介绍
    14.2  栈集合
    14.3  继承、 多态和泛型
    14.4  栈的ADT
    14.5  使用栈: 计算后缀表达式
    14.6  异常
    14.7  使用数组实现栈
    14.8  ArrayStack类
    14.9  将引用作为链
    14.10管理链表
    14.11没有链的元素
    14.12使用链实现栈
    14.13使用java.util.Stack类实现栈
    14.14包
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第15章  队列
    15.1  队列ADT
    15.2  使用队列: 编码k值
    15.3  使用队列: 模拟票务柜台
    15.4  实现队列: 使用链表
    15.5  队列的实现: 使用数组
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第16章  树
    16.1  树
    16.2  树的遍历
    16.3  树的实现策略
    16.4  二叉树的实现
    16.5  决策树
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第17章  二叉查找树
    17.1  二叉查找树
    17.2  二叉查找树的实现
    17.3  平衡二叉查找树
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第18章  堆和优先队列
    18.1  堆
    18.2  堆的实现
    18.3  堆排序
    18.4  优先队列
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第19章  图
    19.1  无向图
    19.2  有向图
    19.3  带权图
    19.4  常用的图算法
    19.5  图的实现策略
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第20章  哈希方法
    20.1  哈希方法
    20.2  哈希函数
    20.3  解决冲突
    20.4  从哈希表中删除元素
    20.5  Java Collections API中的哈希表
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    第21章  数据库
    21.1  数据库介绍
    21.2  建立与数据库连接
    21.3  创建并修改数据库表
    21.4  查询数据库
    21.5  插入、 查看及更新数据
    21.6  删除数据和数据库表
    关键概念摘要
    自测题
    练习
    程序设计项目
    自测题答案
    附录A  词汇表
    附录B  数制
    附录C  Unicode字符集
    附录D  Java运算符
    附录E  Java修饰符
    附录F  Java图形
    附录G  Java applet
    附录H  正则表达式
    附录I  Java文档生成器
    附录J  Java语法
    展开

    前     言

    译 者 序 非常高兴从电子工业出版社获得了机会, 再次翻译了这本经典教材的更新版。 2007年曾翻译了本书的第一版。翻译的过程也是学习的过程, 虽然译者一直从事计算机专业的教学工作, 讲授了多年Java语言与数据结构, 但第一次读到这本教材时, 仍觉得本书的章节安排非常有新意, 对于我们国内的相关教学有非常好的引导与借鉴作用。 现在, 我们又翻译了本书的第二版。较之第一版, 第二版的内容做了许多改变。无论从整体框架到章节安排, 还是从讲授内容到习题, 作者都进行了一些调整。这些改变也更适应这个课程的教学, 因此期望能收到更好的效果。 本书的内容非常丰富, 适合作为计算机专业本科生两到三个学期的教材使用。目前国内计算机学科的教学正处于大变革时期, 各高校都在尝试新的教学模式、采用新的教学大纲。2012年首先从美国兴起的大型开放式网络课程也已影响到国内各高校。本书的内容既能满足传统的面授教学方式, 也适合作为网络开放课程的参考教材。 Java面向对象的程序设计理念, 与数据结构中的抽象数据类型描述, 无论从概念层面还是形式化定义上都有着紧密的联系。国内的高校往往在不同的阶段为学生开设两个或三个课程分开讲授相关内容, 这样的方式容易割裂这些课程之间的关联性。本书作者颇具匠心地尝试将它们放在同一门课程中, 教师在讲授时可以兼顾前后的内容, 学生在学习时也能领会知识点之间的关系, 在程序设计阶段可以打下良好的面向对象的编程基础, 同时在数据结构课程中应用面向对象的思想来解决应用问题, 会起到事半功倍的作用。 本书作者首先详细介绍了Java语言的语法, 在学生们掌握了基本编程技能之后, 重点介绍类及对象的知识, 这些内容不局限于Java语言, 而是一般的面向对象编程语言都具备的。这些内容的介绍是充分的, 对于学生来说是非常必要的, 也是国内程序设计课程中所欠缺的。作者选择Java语言作为实现面向对象思想的工具, 使用数据结构中的内容作为问题导引, 在向学生们介绍经典算法思想的同时, 也向他们详细介绍如何编写具体的程序来解决实际的问题。 不同于国内很多教材的另一个特色是, 本书是一本资源性的教材。本书是关于Java语言的, 在介绍语言本身的同时, 也全面介绍了学习这个语言重要的相关资料, 包括下载资料的网站、重要的调试工具的使用、编写程序用到的测试知识等。特别是书后各附录中的内容, 相信对教师和学生都非常有用。 本书还提供了大量的代码, 这些代码对学生们理解课程内容非常有益。每章后面列出的各类习题可以检验学生的学习效果。 在此, 译者非常感谢电子工业出版社给我们提供的这个翻译机会。我们不仅学习了作者的编写思想, 更见识了作者的敬业精神。书中反映出的作者的认真态度, 使我们在翻译过程中不敢有丝毫的懈怠。译者还要特别感谢本书的责任编辑冯小贝。在翻译过程中, 译者始终得到冯编辑的大力支持和全方位的帮助。 本书主要由辛运帏、饶一梅共同翻译, 参加翻译工作的还有赵伟、翟耀华、孟令香、张迪、孟婷婷、王诗雅、陈宛璐、田园、包钧圳、张罗、史高山。在翻译过程中, 得到了南开大学计算机与控制工程学院多位老师的支持和帮助, 恕我们不能一一列出他们的姓名, 在此一并表示衷心的感谢。还要特别感谢国防科技大学计算机学院熊岳山教授、北京理工大学网络服务中心陈朔鹰主任, 正是他们提出的众多非常好的建议, 才帮助译者得以顺利完成本书的翻译。 虽然我们在翻译时非常认真努力地工作, 期望能以尽量高的质量将本书呈现给读者, 但限于译者的水平有限, 很多地方并不能完全体现作者的原意, 翻译过程中更是难免会有错误之处, 敬请广大读者给我们指正。您的任何意见和建议都是我们进一步完善本书的动力。 再次感谢您选择了本书。 译 者2014年3月于南开园 前 言 欢迎阅读本书。本书可作为二至三个学期导论系列课程的教材使用, 教学内容从最基本的程序设计概念到复杂数据结构的设计和实现。这种统一的教学方法能让这些重要的内容自成体系, 并且更易于让学生理解。 我们借鉴了业界领先的教材Java Software Solutions中译本为《Java程序设计教程(第七版)》, 已由电子工业出版社出版, 书号为978-7-121-15344-0; 英文影印版也已由电子工业出版社出版, 书号为978-7-121-16138-4。中最精华的内容作为介绍资料, 重新组织后作为本书设计内容的有效补充。例如, 我们没有将图形用户界面的内容分散在好几章, 而是将这些内容很好地组织在一章中。 在后面的几章中, 有关集合和数据结构的内容介绍基本上参照了Java Software Structures一书, 但重新组织了相关资料, 使得条理更加清晰。这样, 程序设计概念的介绍范围更全面、更集中, 相互的衔接也更自然。 第二版中的新内容 非常感谢读者为本书提供的反馈, 很高兴本书能作为一本合适的导论课程的教材。有些章节及整体框架进行了如下的修改: ● 这次将栈作为集合的第一个示例, 便于更清晰地建立集合的概念。 ● 更深入详细地讨论了泛型。 ● 扩展了快速排序和归并排序算法的介绍。 ● 算法分析的介绍分到各自的章节中, 并且更加深入。 ● 有关测试和调试的内容调整到书中合适的章节中。 ● 查找树和堆的介绍分到不同的章节中。 ● 增加了两章内容, 分别介绍哈希算法和数据库。 ● 每章后面的练习和程序设计项目也进行了更新, 以适应相关内容的调整。 关于对象 关于objects-first(首先介绍对象)、 objects-early(早期介绍对象)和objects-late(推迟介绍对象)这样的讲授方式, 一直是由计算机专业的教师自行掌握的, 根本没有考虑教学次序的简单叠加会带来教学安排及教学效果的差异。我们利用这个机会说明我们的方法。 首先, 本书是纯面向对象的, 所以采用了循序渐进的自然方式来介绍。存在于过程式程序设计方法中的一些概念, 如方法和它们的调用, 我们使用的是面向对象的术语进行讨论。所以, 没有由多个方法组成单个类的例子。事实上, 在我们的例子中, 包含main方法的类不再包含其他的方法。 我们从一开始就使用对象这个术语, 并且始终使用面向对象的术语来讨论所有的内容。在第1章中给出了面向对象概念的概述, 并在本书中始终强化并充实这些概念。之后立即介绍了Java标准类库中的类, 实例化了这些类中的对象, 并使用它们提供的各种服务。在前4章中, 学生们学习并编写的程序只由单个的类组成, 并且其中只含有单一的main方法——不过这些程序在介绍如表达式和条件等这些程序设计的基本概念之外, 都有效地使用了标准库中预定义的类和对象。 在编写例子时完全没有使用第三方的类。那些方法的使用方式与标准类库中的类(总能使用)是有区别的, 所以容易给学生造成疑惑, 因此我们没有选用这些内容。凡是例子中使用的非类库中的每个类, 都在书中给出了全面介绍, 而不会留下任何不可思议的、 隐晦的问题。 要解决的问题仍然存在:是在详细介绍如何编写类之前介绍控制结构的内容, 还是把次序倒过来。事实是, 哪种方法都有好处, 教师可以使用任意一种方式。如果先介绍类, 就会先揭示对象的本质及它们的使用方法。但是, 缺乏基本的控制结构的驾驭能力, 此时的例子常常是无趣且没有实用意义的。本书先介绍控制结构, 然后再介绍类的概念。第4章使用小的、 单个的方法示例来介绍条件和循环的细节, 为第5章多个类的示例打下坚实基础。 各章安排 第1章(绪论)介绍了Java程序设计语言和基本的程序开发过程。介绍了面向对象的开发方法, 包括相关的概念和术语。这一章还介绍了帮助学生熟悉开发环境所适用的主要参考资料。 第2章(数据和表达式)探讨了Java程序中使用的基本数据类型及执行计算时表达式的使用。讨论了数据类型之间的转换, 以及如何借助于Scanner类交互地从用户读入输入。 第3章(使用类和对象)探讨了预定义的类及由它们创建的对象的使用。使用类和对象来操作字符串、 产生随机数、 执行复杂的计算及格式化输出。本章讨论了包、 枚举类型和包装类。 第4章(条件和循环)介绍了用于判定的布尔表达式的使用。讨论了与条件及循环相关的所有语句, 包括for循环的增强版本。为了分析并读入文本文件中的重复输入, 再次讨论了Scanner类。 第5章(编写类)探讨了与编写类及方法相关的基本问题。内容包括实例数据、 可见性、 作用域、 方法参数及返回值类型, 也涉及了构造方法、 方法设计、 静态数据和方法重载等内容。第二版将测试和调试的内容也放到本章。 第6章(图形用户界面)全面研究了Java GUI处理, 重点是组件、 事件和侦听器。使用多个GUI例子讨论了不同类的组件和事件。另外, 也介绍了布局管理器、 容器层次、 边框、 工具提示和助记符等内容。 第7章(数组)涉及数组的基本概念和数组的处理, 内容包括边界检查、 初值表、 命令行参数、 变长参数列表和多维数组等。 第8章(继承)讨论了类的派生及相关的概念, 包括类层次、 重写及可见性等。重点是强调在软件设计中继承的正确使用及它的作用是什么。 第9章(多态)探讨了绑定的概念, 以及它与多态的关系。之后研究了如何使用继承或接口来完成多态引用。与多态相关的设计问题也在这一章介绍。 第10章(异常)介绍了异常处理及不捕获异常时的后果。探讨了try-catch语句, 分析了异常的传播。本章还介绍了处理输入/输出时的异常使用, 给出了一个编写文本文件的例子。 第11章(递归)介绍了递归的概念、 递归的实现及其正确的用法。在本章的讨论中精心选择了几个示例, 包括迷宫遍历和经典的汉诺塔问题。 第12章(算法分析)讨论了包括递归算法在内的算法复杂度的分析技术, 介绍了大O符号。 第13章(查找与排序)探讨了线性查找和二分查找算法, 还介绍了5个排序算法, 其中包括平方阶及O(n log n)的算法。同时还研究了这些算法的效率。 第14章(栈)介绍了集合的概念, 确立了将接口与实现分开的重要意义。我们将栈作为集合的第一个例子, 介绍了栈的动态及定长的两种实现方式。本章介绍了泛型, 详述了泛型对集合类的支持。 第15章(队列)介绍了FIFO队列, 讨论了不同的实现选择。本章首先介绍了队列的概念, 然后作为工具来帮助我们解决问题, 最后研究所使用的数据结构。讨论了基于数组和动态链表的两种实现方式。 第16章(树)介绍了树的术语和相关概念, 讨论了不同的实现策略, 详细介绍了递归的链式实现方法。本章还给出了一个二叉决策树的示例。 第17章(二叉查找树)介绍了查找树的概念, 以及典型的二叉查找树的链式实现。本章还讨论了树的旋转算法。 第18章(堆和优先队列)讨论了堆的概念, 以及堆与树的关系。研究了堆的完全链式实现方式。我们将优先队列作为集合来讨论, 同时还分析了堆和优先队列之间的关系。 第19章(图)讨论了有向图和无向图。此外, 还介绍了带权图、 广度优先遍历和深度优先遍历之间的差别。介绍了最小生成树, 讨论了它的实现策略。 第20章(哈希方法)涉及创建哈希表以便于存储及获取对象的相关概念。本章还介绍了Java API中与哈希相关的几种应用。 第21章(数据库)探讨了数据库的概念及其管理, 讨论了基本的SQL查询语句。然后探讨了在Java程序和数据库之间建立连接的技术, 以及交互中用到的API。 学生CD考虑到本书定价, 中译本并未附加CD, 相关资源请登录华信教育资源网(www.hxedu.com.cn)下载。 书后所带的CD包括以下内容: ● 书中所有程序的源代码。 ● Java软件开发工具包(SDK)。 ● 各种Java开发环境, 包括NetBeans、 Eclipse、 DrJava、 jGRASP和TextPad。 教师资源教师资源申请方式请参见书末的“教学支持说明”。 下列补充材料只为教师提供。 ● 授课幻灯片——Microsoft PowerPoint格式的各章的授课幻灯片。 ● 答案——练习及程序设计项目的全部答案。 ● 其他资源。 致谢 世界各地的教师和学生们给我们的反馈意见能让本书更加完善, 欢迎读者为本书提出任何意见和建议。 Addison-Wesley公司的工作团队为本书的出版付出了辛勤的劳作。我们非常感谢本书编辑Michael Hirsch的洞察力, 感谢他的助手Stephanie Sellinger所付出的艰苦努力。Nesbitt Graphics的Rose Kernan在本书的出版过程中提供了大量的帮助。我们感谢为确保本书以最高标准面世而做出努力的所有人员。 我们想要感谢世界各地数百位教师和学生为本书提供的原始资料。这些人太多了, 恕我们不能一一列出他们的姓名, 但他们为Java Software Solutions和Java Software Structures提出的所有建议, 都已经体现在本书中。 特别要感谢新泽西大学的Ruth Dannenfelser、 Cory Samaha和Zach Zappala, 感谢他们在数据库项目解决方案中提供的帮助。同时还要感谢弗吉尼亚理工大学的Jason Snyder和他助手测试了本书的相关代码及提供的其他帮助。 一些团体, 如ACM Special Interest Group on Computer Science Education(SIGCSE)、 Consortium for Computing Sciences in Colleges(CCSC)和Computer Science Teachers Association(CSTA), 也为本书提供了有用的资源。他们的会议和网上的活动为各类学校的教师提供了机会, 可以共享他们的思路和相关资料。 最后, 感谢在我们忙于本书的编写时家人的耐心和对我们的支持。 展开

    作者简介

    本书暂无作者简介
  • 样 章 试 读
    本书暂无样章试读!
  • 图 书 评 价我要评论
华信教育资源网