Java面向事件编程

Java面向事件编程
作 者: 布鲁斯
出版社: 清华大学出版社
丛编项: 国外经典教材·计算机科学与技术
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 算法语言
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Kim B.Bruce,是波莫纳学院的计算机科学教授,他从麦迪逊的威斯康星大学获得博士学位,曾在威廉斯学院和普林斯顿大学任教。他还在一些国家级的计算机科学课程委员会担任职务,并且由于在计算机科学教育领域做出的突出贡献而获得2005 SIGCSE奖。Andrea Pohoreckyj Danyluk是威廉斯学院的计算机科学副教授,她从哥伦比亚大学获得博士学位,并曾为ACM/IEEE计算课程特别工作组做出过贡献。Thomas P. Murtagh是威廉斯学院的计算机科学教授,他从康奈尔大学获得博士学位,并曾任教于珀德尤大学。他曾经出版过计算机科学教学法和课程设计,以及有关编译器优化到操作系统设计等方面主题的论著。

内容简介

《Java面向事件编程(计算机科学与技术)》旨在帮助学生首先掌握对象和事件——这样他们很快就可以开始使用Java来完成一些重要的编程任务。《Java面向事件编程(计算机科学与技术)》由计算机科学教育领域的三位顶级专家编写,其中包括2005年SIGCSE奖得主Kim Bruce,这几位专家从根本上重新思考了究竟该如何讲授Java以及其他面向对象语言这一问题,《Java面向事件编程(计算机科学与技术)》正是他们共同努力的结晶。为了给学生提供“训练车轮”,他们需要尽早开始使用复杂的Java特性,《Java面向事件编程(计算机科学与技术)》作者引入了一个完整的面向对象图形库。使用该库时,学生可以立即着手编写简单的图形和动画程序,而且能够看到他们所编写代码的实际结果。与传统教学方式相比,学生能够更快地了解核心的Java特性,而且在具有必要的知识储备后,可以快速掌握一些诸如并发之类的强大Java特性。《Java面向事件编程(计算机科学与技术)》的对象优先方法、内容和特点已经在世界上许多顶级大学、四年制学院和两年制学院的教学实践中系统地得以证实。这些特点包括◆ 牢牢着眼于使用GUI组件的事件驱动的编程:学生通过体验单击环境来认识编程的方式;◆ 逐步、完整地涵盖所有典型的基础知识,包括数组、字符串、递归、文件、排名、搜索、继承性等;◆ 一种讲授异常的有效方式;◆ 一个有关面向对象设计基础知识的初级读本;◆ 每章中间都包含有习题,用于评估学习进度;◆ 每章末尾具有复习题和编程题,强化在该章学习的关键概念和技术;◆ 附录解释了如何浏览并阅读Java API。

图书目录

第1章 什么是编程 1

1.1 在并不了解的情况下 2

1.2 Java编程语言 5

1.3?Java初体验 6

1.3.1 简单的响应程序 7

1.3.2 "Class"和其他关键字 8

1.3.3 关于方法的介绍 9

1.4 编程工具 11

1.5 绘图原始命令 14

1.5.1 图形坐标系统 14

1.5.2 构建图形对象 16

1.6 其他事件处理方法 19

1.6.1 鼠标事件处理方法 19

1.6.2 begin方法 20

1.7 错误分析 21

1.8 小结 23

1.9 本章复习题 24

1.10 编程题 25

第2章 Java中的名称 26

2.1 命名和修改对象 26

2.1.1 修改器方法 26

2.1.2 实例变量声明 28

2.1.3 为变量名指定含义 29

2.1.4 注释 30

2.1.5 其他的修改器方法 31

2.1.6 习题 33

2.2 非图形类对象 35

2.2.1 颜色类 35

2.2.2 Location类 37

2.3 画布上的层次 40

2.4 访问鼠标的位置 41

2.5 在方法之间共享参数信息 42

2.6 小结 47

2.7 本章复习题 47

2.8 编程题 48

第3章 处理数字 50

3.1 访问器方法介绍 50

3.2 访问画布的数值属性 52

3.3 表达式和语句 53

3.4 算术表达式 55

3.5 数值实例变量 58

3.6 初始值设定项 60

3.7 命名数值变量 61

3.8 显示数值信息 63

3.8.1 将数字作为Text显示 64

3.8.2 使用System.out.println 65

3.8.3 混合文本和数字 67

3.9 随机数 69

3.10 小结 71

3.11 本章复习题 72

3.12 编程题 73

第4章 进行选择 76

4.1 一个简单的例子:使用if语句统计选票 76

4.2 if 语句 79

4.3 了解条件 81

4.4 在多个选项之间选择 84

4.5 有关Boolean表达式的更多内容 87

4.6 嵌套条件 90

4.7 小结 94

4.8 本章复习题 95

4.9 编程题 97

第5章 基本类型、运算符和字符串 99

5.1 运算符和方法调用 100

5.2 不同但相等 103

5.3 运算符和优先级规则 105

5.4 Double类型 106

5.4.1 Java需要多种数值类型 107

5.4.2 使用double和int的算术 108

5.4.3 显示double值 111

5.4.4 将有理数称为double的原因 112

5.4.5 选择某种数值类型 113

5.5 数值信息的方便来源 113

5.5.1 确定时间信息 113

5.5.2 高级数学计算 115

5.6 字符串 119

5.7 本章复习题 122

5.8 编程题 124

第6章 类 126

6.1 一个没有类的例子 126

6.2 编写FunnyFace类 129

6.2.1 实例变量 130

6.2.2 方法和参数 130

6.2.3 编写访问器方法 131

6.2.4 构造函数 132

6.2.5 组装到一起 134

6.3 加入方法到FunnyFace 136

6.3.1 加入一些类似已编写方法的方法 137

6.3.2 间接定义方法 137

6.3.3 使用this作为参数 139

6.4 另外一个例子:实现Timer类 140

6.5 局部变量 142

6.6 重载方法和构造函数 145

6.7 小结 148

6.8 本章复习题 148

6.9 编程题 149

第7章 控制结构 151

7.1 重复过程和while循环 151

7.2 使用while循环的更多例子 155

7.3 可以计数的循环 157

7.4 嵌套循环 158

7.5 控制结构风格指导意见 161

7.6 第摩根法则和复杂的boolean表达式 164

7.7 简化条件语句的语法 166

7.8 switch语句* 172

7.9 小结 174

7.10 本章复习题 174

7.11 编程题 175

第8章 声明和作用域 178

8.1 访问控制:public和private 178

8.2 使用实例变量、参数和局部变量 181

8.3 标识符的作用域 183

8.4 使用static 186

8.5 小结 187

8.6 本章复习题 187

第9章 活动对象 189

9.1 动画 189

9.2 活动对象 190

9.3 Image和VisibleImage 192

9.4 与活动对象交互 194

9.5 使活动对象影响到其他的对象 197

9.5.1 与非活动对象交互 197

9.5.2 构建其他活动对象的活动对象 198

9.6 不带循环的活动对象 201

9.7 使动画效果更平滑 202

9.8 有关计时的更多提示 203

9.9 小结 205

9.10 本章复习题 205

9.11 编程题 206

第10章 接口 207

10.1?提供灵活性的接口 207

10.1.1 第一个例子 207

10.1.2 将对象和类与接口相关 208

10.1.3 使用接口 212

10.1.4 接口的其他特性 214

10.1.5 小结 215

10.2 在objectdraw库中使用接口 215

10.3 扩展接口* 218

10.4 小结 220

10.5 本章复习题 220

10.6 编程题 221

第11章 Java中的图形用户界面 223

11.1 文本字段 223

11.1.1 加入文本字段到窗口中 225

11.1.2 从文本字段获得信息 226

11.2 Java中的按钮和事件 227

11.2.1 创建和加入按钮 228

11.2.2 处理事件 228

11.3 在程序中使用GUI组件的步骤

??? 清单 229

11.4 组合框 230

11.5 面板和布局管理器 235

11.5.1 面板 235

11.5.2 有关布局管理器的更多

????内容 238

11.6 其他GUI组件 240

11.6.1 滑块 240

11.6.2 标签 243

11.6.3 JTextField和JTextArea 244

11.7 处理击键和鼠标事件 247

11.7.1 击键事件 247

11.7.2 鼠标事件 249

11.8 小结 250

11.9 本章复习题 252

11.10 编程题 253

第12章 递归 254

12.1 递归结构 255

12.1.1 嵌套矩形 255

12.1.2 使用递归结构来创建并

????搜索数据集合 263

12.1.3 设计递归结构 266

12.1.4 为什么能够奏效 268

12.1.5 花菜图案 269

12.2 递归方法 274

12.2.1 快速求幂 275

12.2.2 汉诺塔 277

12.3 小结 280

12.4 本章复习题 280

12.5 编程题 281

第13章 Java中的一般循环 282

13.1 确定循环模式 282

13.2 计数和for循环 283

13.2.1 使用for循环的例子 284

13.2.2 for循环的其他变化形式 287

13.3 do-while循环 288

13.4 避免循环错误 289

13.4.1 循环次数相差1的错误 289

13.4.2 无限循环 290

13.4.3 在终止条件中使用double类型 291

13.5 小结 292

13.6 本章复习题 293

13.7 编程题 294

第14章 数组 295

14.1 声明数组名称 295

14.2 创建数组 296

14.3 使用数组:一个三角类 300

14.4 Java 1.5中的增强型for循环 303

14.5 收集数组信息 304

14.5.1 超速驾驶驾驶员计数 306

14.5.2 绘制直方图 307

14.6 包含变量大小的集合 311

14.6.1 并行数组和对象数组 313

14.6.2 跟踪集合的大小 314

14.6.3 加入项目到数组 315

14.6.4 显示结果 316

14.7 添加和删除数组元素 322

14.7.1 加入某个元素到一个顺序

????数组 322

14.7.2 从数组删除某个元素 328

14.8 小结 330

14.9 本章复习题 331

14.10 编程题 335

第15章 多维数组 338

15.1 一般的二维数组 338

15.1.1 声明数组的数组 339

15.1.2 创建数组的数组 339

15.1.3 对数组的数组进行索引 341

15.1.4 遍历二维数组 342

15.1.5 超越二维:扩展日历程序 344

15.2 矩阵 347

15.2.1 魔力方块 348

15.2.2 声明和构建矩阵 348

15.2.3 遍历矩阵 348

15.2.4 填充魔力方块 351

15.2.5 数字图像平滑 353

15.3 小结 357

15.4 本章复习题 357

15.5 编程题 359

第16章 字符串和字符 362

16.1 小字符串和大字符串 362

16.1.1 空白字符串 362

16.1.2 长字符串 363

16.2 有用的String方法集锦 365

16.2.1 创建一个URL字符串 365

16.2.2 使用indexOf来查找

????子字符串的位置 365

16.2.3 处理小写和大写 367

16.2.4 剪切和粘贴字符串 369

16.2.5 修整字符串 371

16.2.6 比较字符串 372

16.3 字符 374

16.3.1 字符和字符串 375

16.3.2 对字符进行操作 377

16.4 小结 379

16.5 本章复习题 381

16.6 编程题 383

第17章 继承 385

17.1 特殊化扩展 385

17.2 使用extends 386

17.3 protected和public 391

17.4 设计用于扩展 394

17.5 继承的层次结构 397

17.6 重写方法定义 401

17.6.1 object类以及equals和toString方法 403

17.6.2 使用super访问重写的方法 403

17.6.3 动态方法调用 405

17.6.4 有计划的废弃 406

17.6.5 抽象类和抽象方法 410

17.7 小结 411

17.8 本章复习题 411

17.9 编程题 417

第18章 异常 420

18.1 异常处理程序 421

18.2 异常是对象 424

18.3 异常传递 424

18.4 处理多个异常 426

18.5 异常子类 427

18.6 检查异常和未检查异常 429

18.7 抛出异常 432

18.8 小结 433

18.9 本章复习题 434

18.10 编程题 436

第19章 流 438

19.1 文本流 439

19.1.1 书签文件:一个示例 439

19.1.2 创建一个Writer 441

19.1.3 通过Writer发送数据 442

19.1.4 PrintWriter 445

19.1.5 构成Writer类 446

19.2 Reader 447

19.3 编写一个应用程序 451

19.4 处理文件系统 455

19.5 Socket和流 459

19.5.1 客户和服务器 459

19.5.2 网络协议 460

19.5.3 创建和使用Socket 461

19.5.4 从服务器接收信息 462

19.5.5 从Web页面提取信息 465

19.6 小结 468

19.7 本章复习题 469

19.8 编程题 473

第20章 查找和排序 475

20.1 查找 475

20.1.1 线性查找 476

20.1.2 数组的递归处理方式 476

20.1.3 线性查找的复杂度 478

20.1.4 二叉查找 478

20.2 使用先验条件和后验条件 482

20.3 排序 483

20.3.1 选择排序 484

20.3.2 选择排序的复杂度 487

20.3.3 插入排序 488

20.3.4 插入排序的复杂度 490

20.3.5 归并排序 491

20.3.6 归并排序的复杂度 494

20.4 查找和排序的复杂度的影响 496

20.5 小结 497

20.6 本章复习题 497

第21章 面向对象设计简介 498

21.1 什么是面向对象设计 498

21.2 属性和行为 499

21.2.1 为对象的属性建模 499

21.2.2 对行为建模 499

21.3 设计基本原理 500

21.3.1 设计步骤1:确定要建模

????的对象 500

21.3.2 设计步骤2:列出每种对象的属性和行为 500

21.3.3 设计步骤3:用实例变量对属性建模 502

21.3.4 设计步骤4:用方法对行为建模 504

21.3.5 设计:细化的过程 507

21.3.6 填充细节 507

21.3.7 设计过程总结 513

21.4 增量式测试和调试 514

21.4.1 开发和测试各个类 514

21.4.2 把各部分组装起来:测试控制器 516

21.5 不对现实世界建模的类 517

21.5.1 动画式藏豆赌博游戏 518

21.5.2 确定不代表现实世界实体的类 518

21.5.3 完成动画式藏豆赌博游戏的设计 518

21.5.4 填充动画式藏豆赌博游戏的细节 522

21.6 编写注释的指导原则 524

21.7 封装和信息隐藏 526

21.7.1 嵌套矩形:一个图形对象类 526

21.7.2 封装和抽象之间的

????重要关系 529

21.8 小结 529

21.9 本章复习题 530

21.10 编程题 530

附录A 编程风格指导原则 532

A.1 加注释 532

A.2 空白行 533

A.3 名称 533

A.4 格式 533

附录B objectdraw API总结 534

B.1?WindowController 534

B.1.1?在Controller或WindowController

的扩展中定义的方法 534

B.1.2 在WindowController的扩展中

定义的方法 534

B.1.3 在扩展Controller或

WindowController的类中

调用的方法 534

B.2 ActiveObject 535

B.2.1 在ActiveObject的扩展中

定义的方法 535

B.2.2 在扩展ActiveObject的类中

调用的方法 535

B.3 Drawable对象 535

B.3.1 Drawable对象的构造函数 535

B.3.2 用于所有Drawable对象

的方法 537

B.3.3 仅用于Line的方法 537

B.3.4 用于矩形、椭圆形、VisibleImage

和Text对象的方法 538

B.3.5 仅用于矩形、椭圆形和

VisibleImage的方法 538

B.3.6 仅用于Text对象的方法 538

B.4 辅助类 538

B.4.1 辅助对象的构造函数 538

B.4.2 用于Location对象的方法 538

B.4.3 用于RandomIntGenerator

对象的方法 539

B.4.4 用于RandomDoubleGenerator

对象的方法 539

B.5 类型和接口层次结构 539

B.5.1 几何对象的子类层次结构 539

B.5.2 几何对象的子接口层次结构 539

B.5.3 控制器的子类层次结构 540

附录C 浏览Java API 541

C.1 objectdraw文档简介 541

C.2?获取关于某个类的信息 542

C.2.1 关于构造函数和方法的汇总

信息 542

C.2.2 关于构造函数和方法的详细

信息 544

C.3 何时应该查阅API 545

C.4 其他Java API 546

附录D 不使用objectdraw编程 547

D.1 扩展JApplet而不是Controller 547

D.2 扩展JApplet而不是

???WindowController 548

D.3 Java线程可以代替ActiveObject 549

D.4 Java图形 550

D.5 随机数生成器 553

D.6 应用程序与Java小程序 553

D.6.1 将Java小程序修改成应用

程序 554

D.6.2 从JFrame中运行Java

小程序 555