描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121340932丛书名: 国外计算机科学教材系列
# 采用JavaFX来设计图形用户界面,使得设计GUI变得更容易,并且功能更强大。
# 使用Java 8的方法引用和lambda表达式来定义事件处理器。
# 讲解了JavaFX的布局面板和JavaFX Scene Builder软件。
第1章 计算机系统概述 1
1.1 计算机处理过程 1
1.1.1 软件分类 2
1.1.2 数字计算机 4
1.1.3 二进制数 5
1.2 硬件组件 7
1.2.1 计算机结构 7
1.2.2 输入/输出设备 8
1.2.3 主存储器和辅助存储器 9
1.2.4 中央处理器 11
1.3 网络 13
1.3.1 网络连接 13
1.3.2 局域网和广域网 14
1.3.3 因特网 15
1.3.4 万维网 15
1.3.5 统一资源定位器 16
1.4 Java编程语言 17
1.4.1 Java程序 18
1.4.2 注释 19
1.4.3 标识符和保留字 20
1.4.4 空白符 22
1.5 程序开发 24
1.5.1 编程语言的级别 24
1.5.2 编辑器、编译器和解释器 25
1.5.3 开发环境 26
1.5.4 语法和语义 27
1.5.5 错误 27
1.6 面向对象编程 28
1.6.1 问题求解 29
1.6.2 面向对象的软件原理 30
重要概念小结 32
练习题 33
编程项目 34
第2章 数据与表达式 36
2.1 字符串 36
2.1.1 print和println方法 36
2.1.2 字符串的连接 37
2.1.3 转义序列 39
2.2 变量与赋值 41
2.2.1 变量 41
2.2.2 赋值语句 42
2.2.3 常量 43
2.3 基本数据类型 44
2.3.1 整型与浮点型 44
2.3.2 字符型 46
2.3.3 布尔型 47
2.4 表达式 47
2.4.1 算术运算符 47
2.4.2 运算符优先级 48
2.4.3 自增和自减运算符 50
2.4.4 赋值运算符 51
2.5 数据类型转换 52
2.5.1 数据类型转换技术 53
2.6 交互式程序 55
2.6.1 Scanner类 55
重要概念小结 58
练习题 58
编程项目 60
第3章 类与对象 62
3.1 创建对象 62
3.1.1 别名 64
3.2 String类 65
3.3 包 67
3.3.1 import声明 69
3.4 Random类 70
3.5 Math类 72
3.6 格式化输出 74
3.6.1 NumberFormat类 74
3.6.2 DecimalFormat类 76
3.6.3 printf方法 77
3.7 枚举类型 78
3.8 包装器类 80
3.8.1 自动装箱 81
3.9 JavaFX简介 81
3.10 基本形状 84
3.11 颜色呈现 88
重要概念小结 89
练习题 90
编程项目 91
第4章 编写类 93
4.1 类与对象的核心概念 93
4.2 类的分析 94
4.2.1 实例数据 98
4.2.2 UML类图 98
4.3 封装 99
4.3.1 可见性修饰符 100
4.3.2 访问器和修改器 100
4.4 方法的分析 101
4.4.1 return语句 102
4.4.2 参数 103
4.4.3 局部数据 103
4.4.4 银行账户示例 104
4.5 构造方法回顾 107
4.6 弧 107
4.7 图形 110
4.7.1 视口 111
4.8 图形用户界面 112
4.8.1 指定事件处理器的其他
方法 114
4.9 单行文本框 114
重要概念小结 117
练习题 117
编程项目 118
第5章 条件判断与循环 121
5.1 布尔表达式 121
5.1.1 相等性运算符与关系运算符 122
5.1.2 逻辑运算符 122
5.2 if语句 124
5.2.1 if-else语句 126
5.2.2 使用语句块 129
5.2.3 嵌套if语句 131
5.3 数据比较 133
5.3.1 浮点数比较 133
5.3.2 字符比较 133
5.3.3 比较对象 134
5.4 while语句 135
5.4.1 无限循环 139
5.4.2 嵌套循环 139
5.4.3 break语句与continue语句 142
5.5 迭代器 143
5.5.1 读取文本文件 143
5.6 ArrayList类 145
5.7 确定事件源 148
5.8 管理字体 150
5.9 复选框 151
5.10 单选钮 154
重要概念小结 157
练习题 157
编程项目 159
第6章 其他条件判断与循环 163
6.1 switch语句 163
6.2 条件运算符 166
6.3 do语句 167
6.4 for语句 169
6.4.1 for-each循环 172
6.4.2 各种循环的比较 172
6.5 对图形使用循环和条件 173
6.6 图形转换 176
6.6.1 平移 176
6.6.2 缩放 177
6.6.3 旋转 177
6.6.4 错切 178
6.6.5 按组进行转换 178
重要概念小结 181
练习题 181
编程项目 182
第7章 面向对象设计 185
7.1 软件开发活动 185
7.2 明确类和对象 186
7.2.1 类职责的分派 187
7.3 静态类成员 188
7.3.1 静态变量 188
7.3.2 静态方法 188
7.4 类间关系 190
7.4.1 依赖关系 190
7.4.2 同一个类的对象之间的
依赖性 191
7.4.3 聚合 195
7.4.4 this引用 198
7.5 接口 199
7.5.1 Comparable接口 203
7.5.2 Iterator接口 203
7.6 枚举类型 204
7.7 方法设计 205
7.7.1 方法分解 206
7.7.2 方法参数的传递方式 209
7.8 方法重载 213
7.9 测试 214
7.9.1 评审 215
7.9.2 缺陷测试 215
7.10 GUI设计 217
7.11 鼠标事件 217
7.12 按键事件 221
重要概念小结 223
练习题 223
编程项目 224
第8章 数组 227
8.1 数组元素 227
8.2 声明和使用数组 228
8.2.1 边界检查 230
8.2.2 数组声明方式 233
8.2.3 数组初始值表 233
8.2.4 数组作为参数 234
8.3 对象数组 235
8.4 命令行实参 242
8.5 可变长度参数表 243
8.6 二维数组 245
8.6.1 多维数组 248
8.7 多边形和折线 249
8.8 Color对象数组 250
8.9 选项框 253
重要概念小结 255
练习题 256
编程项目 257
第9章 继承 260
9.1 创建子类 260
9.1.1 protected修饰符 264
9.1.2 super引用 264
9.1.3 多继承 267
9.2 重写方法 267
9.2.1 影子变量 269
9.3 类层次结构 269
9.3.1 Object类 270
9.3.2 抽象类 271
9.3.3 接口层次 272
9.4 可见性 273
9.5 继承关系的设计 275
9.5.1 继承的限制 276
9.6 JavaFX中的继承 276
9.7 颜色和日期选择器 278
9.8 对话框 280
9.8.1 文件选择器 282
重要概念小结 284
练习题 285
编程项目 285
第10章 多态性 288
10.1 后绑定 288
10.2 利用继承实现多态性 289
10.3 利用接口实现多态性 297
10.4 排序 299
10.4.1 选择法排序 299
10.4.2 插入法排序 303
10.4.3 排序算法的比较 304
10.5 搜索 305
10.5.1 线性搜索 305
10.5.2 二分法搜索 308
10.5.3 搜索算法的比较 309
10.6 多态性设计 309
10.7 属性 310
10.7.1 变化监听器 312
10.8 滑动条 314
10.9 微调器 315
重要概念小结 317
练习题 318
编程项目 318
第11章 异常处理 319
11.1 异常 319
11.2 未捕获的异常 320
11.3 try-catch语句 321
11.3.1 finally子句 323
11.4 异常的传递 324
11.5 异常类层次结构 326
11.5.1 检查型与非检查型异常 328
11.6 I/O异常 329
11.7 工具提示与禁用控件 332
11.8 滚动面板 334
11.9 分隔面板和列表视图 336
重要概念小结 339
练习题 339
编程项目 340
第12章 递归 341
12.1 递归思想 341
12.1.1 无穷递归 342
12.1.2 数学中的递归运算 342
12.2 递归编程 343
12.2.1 递归与迭代的比较 344
12.2.2 直接递归与间接递归 345
12.3 递归的应用 346
12.3.1 迷宫旅行 346
12.3.2 汉诺塔 349
12.4 平铺图形 353
12.5 分形 355
重要概念小结 360
练习题 360
编程项目 361
第13章 集合 363
13.1 集合与数据结构 363
13.1.1 分离接口与实现 363
13.2 数据结构的动态表示 364
13.2.1 动态结构 364
13.2.2 动态链表 365
13.2.3 其他的动态列表 368
13.3 线性集合 369
13.3.1 队列 369
13.3.2 栈 370
13.4 非线性数据结构 372
13.4.1 树 372
13.4.2 图 373
13.5 Java集合类API 374
13.5.1 泛型 374
重要概念小结 375
练习题 375
编程项目 376
附录A 术语表 378
附录B 数制系统 395
附录C Unicode字符集 399
附录D Java运算符 401
附录E Java修饰符 405
附录F Java编码指南 407
附录G JavaFX布局面板 411
附录H JavaFX Scene Builder 418
附录I 正则表达式 425
附录J javadoc文档生成器 426
附录K Java语法 429
附录L 自测题答案 438
诞生于20世纪90年代中期的Java编程语言,开创了一个全新的编程思维模式,并迅速风靡于整个IT业界。从Java开始,涌现出了许多各具特色的面向对象编程工具。Java语言不仅可用于开发大型软件,而且也特别适合于开发Web应用,目前已成为网络时代重要的程序设计语言之一,并且其开发工具和功能也正随着网络技术的不断发展而同步进行更新。Java语言已经成为事实上适合初学者学习面向对象程序设计的语言。
本书是一本学习Java编程的入门性教材,也是读者初步了解面向对象思想及其实现方法的一本理想读物。全书深入、透彻地分析了Java语言的面向对象机制,指导读者如何在学会设计类和对象前先学会使用类和对象,以大量程序实例体现了面向对象的核心概念(如类、对象、重载、接口及多态性等)和封装、继承等机制,并基于解决问题的思路灵活运用各种Java程序设计技术,详细示范了一些典型算法的实现方法。
本书注重完整的程序设计实践,每一章都附有大量具有可实践性的程序实例、自测题、练习题、编程项目,以及富有趣味性的图形用户界面设计实例,以着重培养读者的软件设计能力和解决问题的能力。有些章末尾的“软件失误案例”虽然短小,但它们是来自于现实世界的惨痛教训,其目的在于培养读者(未来的程序员)“质量高于一切”的思想,强调良好的软件设计思想和严谨合理的设计规范的重要性。
各章末尾的“图形设计之路”部分,已经全部重新编写,为图形设计的教学提供了较大的灵活性,它们可作为相对独立的一部分根据需要在教学上进行取舍。
本书的更新,在于讲解如何用的开发工具JavaFX设计图形用户界面,它全面替换了以前使用的抽象窗口工具集(AWT)和Swing,使设计GUI变得更容易,功能更强大。并且还对项目题进行了调整,从而更加适应教学的要求。此外,对占本书相当篇幅的附录进行了全面更新,以反映Java语言本身的调整并与正文各章相呼应。本书还为学生和主讲教师提供了丰富的配套资源。
全书共分13章及12个附录,包括计算机系统概述、数据与表达式、类与对象、编写类、条件判断与循环(两章)、面向对象设计、数组、继承、多态性、异常处理、递归和集合,附录则主要提供术语表及练习题答案等。全书由洛基山主持翻译工作。前言、第2~4章由首都经济贸易大学刘丽丽翻译;第7~9章由西北农林科技大学闫锋欣翻译;第10~12章由北京工商大学张君施翻译;张莉翻译了第13章及附录A和附录B;附录C~F由徐景辉翻译;陈艳羽翻译了附录G~K;常征翻译了第1章、附录L以及各章的自测题、练习题、编程项目和自测题答案;陕西师范大学孟永宏翻译第5~6章和部分附录;蔡志强翻译“软件失误案例”和部分自测题;全书后由洛基山负责修订和统稿。
由于译者水平有限,并且各种专业术语在业界尚无严格统一的译法,如果译稿中有不妥或错误之处,恳请广大读者批评指正。
前 言
欢迎使用本书第九版。多年来,本书能够满足广大师生的需求并为教学服务,这使我们深感欣慰。这一版本做了进一步的内容组织和调整,完善了关键技术问题的重点分解和概念解释。
本版的改进
这一版的变化,是彻底重写了书中的“图形设计之路”部分,以充分利用JavaFX API。Oracle已经不再支持Swing。现在,JavaFX 已经成为开发图形和图形用户界面(GUI)的方法,因此本书也将采用它。
书中的更新如下:
? 涵盖JavaFX图形形状。
? 讲解JavaFX控件,包括按钮、文本框、复选框、单选钮、选项框、颜色选择器、日期选择器、滚动条以及微调器等。
? 使用Java 8的方法引用和lambda表达式来定义事件处理器。
? 探究JavaFX的类层次。
? 解释JavaFX中的属性及属性绑定。
? 优化了各章末尾的练习题以及编程项目题。
? 新增加的附录G,讲解了JavaFX的布局面板。
? 新增加的附录H,介绍了JavaFX Scene Builder软件。
关于JavaFX有两个令人激动的部分。首先,它提供了比Swing更清晰的GUI开发方法。用JavaFX开发的程序,会比用Swing开发的更短、更易理解。
其次,与Swing相比,JavaFX更遵循面向对象的核心原则。例如,所有的图形,都是用包含基本数据元素的类体现的,比如包含半径值的Circle类。第3章讲解的有关各种形状的类,都是经过精心设计的基本类,只需学生具备对类和对象的基本理解即可。
通过Java 8方法引用,为定义事件处理器提供了一种容易理解的途径。或者,学生也可以使用(底层的)lambda表达式,定义事件处理器。
关于JavaFX的布局面板,在书中的一些示例中解释;有关它的完整描述,在附录G中给出。我们认为,与Swing布局管理器相比,JavaFX布局面板更好,书中的一章里会专门解释。
书中提供的所有GUI,都是用Java代码“手工”编码出来的。对于初学者而言,这样做很重要。附录H讲解的是JavaFX Scene Builder软件,它能进行鼠标拖放操作。但是,本书正文中并没有使用它。
除了与JavaFX相关的改变,本书还更新了一些示例和讨论的内容,以满足当今的教学需要。
除了为学生提供本书,我们也很乐意听到读者对本书的评价和疑问。
本书的基石
本书是基于下面的基本思想编写的,相信这有助于使其成为一本优秀的教材。
? 真正的面向对象。一本真正介绍完全面向对象方法的教材,必须使用对象语言,即所有问题都应该用面向对象的术语来讨论。但这并不意味着必须对个程序就讨论多个类和方法的编写方式,学生应当在学会编写对象之前先了解如何使用对象。本书采用一种自然的学习进程,使学生逐步达到具有设计实际的面向对象解决方案的能力。
? 良好的程序设计实践。本书的主要目的不是教学生如何编程,而是讲解如何写出好的软件。二者是有差别的。编写软件并不是按照说明完成一套动作,一个好程序也远非仅仅是一些语句的集合。本书汇集了一些可作为良好程序设计技巧基础的实践经验,它们不仅应用于本书所有的实例,而且还在讨论中进一步强化。学生将学会如何解决问题以及如何实现设计方案。全书贯穿了软件工程基本技术的介绍,“软件失误案例”通过生动的实例,展示不遵守这些程序设计实践原则所带来的后果,进一步复习了软件工程基本技术课程。
? 示例程序。学生将通过程序实例来学习。本书通过大量已完整实现的实例来讲解特定的概念。书中穿插列举了易理解的小例子和实用的大例子,二者相辅相成,并对图形和非图形实例的采用进行了合理的选择。
? 图形与图形用户界面(GUI)。图形能够激发学生极大的学习兴趣,而且图形设计可以充当面向对象应用的绝佳实例。因此,本书每一章都安排了精心设计的几部分,称为“图形设计之路”。本书完整讲解了JavaFX API,它提供对Java图形和GUI的全面支持,是的开发工具。随着图形设计主题讨论的开展,学生将很自然地学会以适当的方式创建GUI。对于不需要涉及图形设计的学生,则可以忽略“图形设计之路”的内容。
各章概述
第1章(计算机系统概述)一般性地介绍计算机系统,包括计算机基本结构和硬件、网络、程序设计及语言翻译。本章对Java也进行了介绍,并讨论了通用程序开发的基础和面向对象编程。这一章广泛涵盖了学生所要熟悉的开发环境介绍。
第2章(数据与表达式)探讨Java程序中使用的一些基本数据类型和计算表达式的用法,还讨论了数据类型间的转换,以及如何借助标准的Scanner类与用户进行交互式输入。
第3章(类与对象)讲解预定义类的使用及其对象的创建方法,这些类和对象用于处理字符串、产生随机数、执行复杂计算和格式化输出。此外还讨论了枚举数据类型。
第4章(编写类)分析了与类和方法的编写有关的问题,包括实例数据、可见性、引用范围、方法参数和返回类型。此外还讨论了封装和构造方法。与编写类相关的其他问题在第6章讨论。
第5章(条件判断与循环)讨论用于判断的布尔表达式的用法,然后详细地讲解了if语句和while循环语句。一旦建立了循环,就可引入迭代的概念,并进一步讨论用Scanner类不断接收、解析输入数据以及读取文本文件的方法。后,介绍可用于管理大量对象的ArrayList类。
第6章(其他条件判断与循环)讨论第5章未涉及的其他Java条件语句(switch)和循环语句(do,for),包括for循环语句的增强版本。for-each循环语句也可用于处理迭代和ArrayList对象。
第7章(面向对象设计)进一步深入和扩展了关于类的设计问题的讨论,包括解决问题时需要确定类和对象的识别技术,以及类与对象间的关系。本章还探讨了静态类成员、接口以及枚举型类的设计。这一章对方法设计和方法重载也进行了讨论。
第8章(数组)详细讲解了数组以及数组的处理。将作为基本的程序设计数据结构的数组与高层次的对象管理方法进行了对比分析。此外,还讨论了命令行参数、可变长度参数表以及多维数组。
第9章(继承)讲解类的派生及其相关概念,例如类层次、重写和可见性。本章还强调了应合理使用继承性,以及在软件设计中使用继承的原则。
第10章(多态性)探讨了绑定的概念以及绑定与多态性的关系。接着,讲解了如何使用继承或接口实现多态性,并利用排序示范了多态性。后,讨论了有关多态性的程序设计问题。
第11章(异常处理)关注Java标准库中用于定义异常的类层次结构,以及定义用户异常对象的方法。同时还讨论了处理输入/输出异常时的方法,并分析了一个编写文本文件的程序示例。
第12章(递归)讲解递归的概念、递归的实现以及合理使用递归的方法,并利用几个不同应用领域的程序实例,演示了递归技术如何使得某些特定问题解决得更完美。
第13章(集合)涉及集合的概念及其基本数据结构,并进一步深入探讨了抽象概念和经典的数据结构。此外,还介绍了泛型。本章可作为CS2(计算机科学课程第二阶段)的入门性内容。
补充资料
学生的在线资
评论
还没有评论。