Java程序设计:一种多媒体方法

Java程序设计:一种多媒体方法"

作者:MarkGuzdial著、柳西玲等译
ISBN:9787302162957
定价:¥59
字数:千字
页数:
出版时间:2007.12.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书不同于一般介绍编程书籍,其特点是,它从激发学生学习编程的兴趣出发,让学生处理自己的图片、声音,制作自己的网页、动画,使他们觉得编程是一件既有意义又有趣味的事情。它选择的开发环境DrJava简单易用,让学生可以把精力集中到程序开发,而不是学习使用开发环境。本书的另一个特点是,它在内容顺序上不同于一般的编程书籍。它在向学生介绍新概念时,都是在特写的背景下,在学生意识到概念的用途和意义时才推出,这样做,避免了抽象概念给学生带来的困惑,增加了学生的学习兴趣和实际应用能力。书中案例丰富,内容生动,覆盖了Java的基础知识及图片、声音、视频等多媒体处理技术。

本书共分为6个部分,第1部分(前3章)介绍编程和Java的基础知识;第2部分(第4~7章)介绍怎样处理图片;第3部分(第8~11章)介绍如何处理声音;第4部分(第12、13章)介绍文本处理和网页制作;第5部分(第14章)介绍制作动画和电影;第6部分(第15、16章)介绍算法对编程的影响及JavaScript——一种嵌于网页内的脚本语言。教师和学生可以根据需要进行取舍,灵活选择教学和学习内容。每章末尾都提供了练习题,便于学生巩固复习本章知识。还为有兴趣的学生提供了进一步学习的指南。

本书的翻译工作由清华大学计算机系知识工程研究室的老师完成。本研究室是国内最早致力于Java语言的研究与应用开发的单位,长期从事Java语言的教学、培训及项目开发工作,为国家机关、部委、企业开发了多个应用项目,积累了丰富的开发经验。

前言

本书旨在向没有编程经验的学生介绍计算和编程。计算机教育研究中发现的一个教训是人们不仅“学习编程”,还要学习对一些事情编程[4,17]。这些事情如何激发人们学习的积极性,对学习编程产生不同的后果[6]。有些人对学习编程感兴趣仅仅出于编程的需要,而大多数人不是这样。

遗憾的是,大多数入门级的编程书籍都认为学生有强烈的学习编程的愿望。它们强调编程概念,而很少考虑使正在解决的问题有趣味和有意义。它们介绍新概念时,没有阐明学生为什么应该知道这些概念。

在本书中,学生将通过编写处理媒体的程序来学习编程。学生将创建并修改图片,如修改“红眼”、生成底片等;还将修改声音,如把单词拼接成句子,把声音倒转产生有趣的效果;还将采用CNN.com(美国有线新闻网络)和Amazon.com(亚马逊)使用的方式,利用数据库中的数据生成网页;他们将使用电视或电影中看到的特殊效果创建动画和电影。

在Georgia Tech学习的学生觉得这些程序很有趣而且很有启发性。学生甚至汇报他们改编的程序,看看他们继续下去还能做什么。

本书是教人们为了交流而编程。人们愿意交流。我们是社会成员,交流的欲望是我们的首要动机之一。计算机已经不再是单纯的计算工具,而日益成为人们交流的工具。实际上,现在所有发表的文字、图片、声音、音乐和电影都是用电脑技术准备的。这本书集中讲述怎样像专业人士那样处理图片、声音、文字和电影,但是用学生编写的程序。

我们发现大多数人愿意使用专业水平的软件来执行这些操作。那为什么要自己学习编写程序完成这些操作呢?为什么不把它留给图像处理软件(Photoshop)和电影软件(iMovie)的开发人员呢?答案在于你的兴趣和职业选择。

* 如果你想成为计算机方面的专业人士,那么,理解怎样构造相互交流的程序对你来说是值得的。将来,许多软件都将用于交流,这是一个开始学习有用技能的很好领域。现在,大多数计算机课程都用Java教授,所以本书为你选择了合适的语言和合适的内容来学习编程。

* 如果你将来想成为应用程序的使用者,知道一些工具如何工作,会使你成为人们所说的“超级用户”。现在,许多常用软件都比一般用户知道的功能强大得多。许多交流软件,实际上都可以通过脚本语言编程,使用户可以在应用中定制自己的任务。要充分利用软件提供的功能,理解软件正在做什么是很有帮助的。如果你知道什么是像素,就能更好地理解操作的用途。要使用软件的脚本工具,需要一定的编程   知识。

* 如果你是一个有创造力的人,想完全控制交流,想知道在没有应用程序时该怎样实现你的愿望。知道怎样使用自己的程序处理媒体意味着你可以在需要的时候做自己想做的事情。你可能想让你的媒体说些什么,但可能不知道怎样让Photoshop 或 Final Cut Pro做你想做的事情。知道怎样编程意味着你的表达能力将不受应用软件的限制。

* 最后,也许你对应用程序或者编程一点都不感兴趣。那对你来说,学这些东西值得吗?在Georgia Tech上过我们的媒体计算课程的学生一年以后告诉我们,课程在他们的日常生活中有意义[15]。我们生活在科技时代,许多技术都用于处理媒体中的所见所闻。如果知道一些技术怎样工作,你就有办法思考怎样使用它,以及怎样使用它改变你的认知。非计算机专业的学生完成课程一年之后告诉我们,他们现在对与计算机相关的事物有了新的自信,因为他们知道一些计算机是怎样工作的[15]。

本书不仅仅是关于处理媒体的编程。处理媒体的程序可以很难写,或者出现意料不到的行为。人们会提出下面这些问题:“为什么同样的图片在Photoshop中过滤得快些?”“除错太难了。有没有一种编程序的方法易于除错?”回答这些问题,正是计算机科学家应该做的。本书的最后几章是关于计算,而不仅仅是编程(第15和16章)。

计算机是人类所设想的最神奇、最具创造力的设备。字面上它完全是由思维因素组成。有一个说法,“不要光梦想,而要去实现”正适合计算机。如果你能想象,你就可以在计算机上使它成“真”。把编程当作游戏非常有趣,而且应该有趣。

目录

第1部分  入    门

第1章  计算机科学及媒体计算简介 2

1.1  什么是计算机科学 2

1.2  计算机能理解什么 5

1.3  媒体计算:为什么将媒体数字化 7

1.4  大众的计算机科学 8

1.4.1  交流 9

1.4.2  流程 9

习题 9

深入学习 10

第2章  Java简介 11

2.1  Java 11

2.1.1  Java的历史 11

2.1.2  对象和类 12

2.2  DrJava 12

2.3  Java的基本概念 15

2.3.1  数学运算符 15

2.3.2  打印语句的结果 16

2.3.3  数学表达式中的数据类型 17

2.3.4  数据类型的强制转换 18

2.3.5  关系运算符 18

2.3.6  字符串 19

2.4  变量 20

2.4.1  声明变量 20

2.4.2  在计算中使用变量 21

2.4.3  变量的内存图 22

2.4.4  对象变量 23

2.4.5  变量重用 24

2.4.6  对象的多重引用 25

2.5  概念小结 26

2.5.1  语句 26

2.5.2  关系运算符 26

2.5.3  类型 26

2.5.4  强制转换 27

2.5.5  变量 27

习题 28

深入学习 29

第3章  程序设计简介 30

3.1  编程和命名 30

3.2  文件和文件名 31

3.3  类和对象方法 32

3.3.1  调用类方法 32

3.3.2  执行对象方法 33

3.4  让小乌龟动起来 34

3.4.1  定义类 34

3.4.2  创建对象 34

3.4.3  向对象发送消息 36

3.4.4  控制对象状态 37

3.4.5  乌龟的附加功能 38

3.5  创建方法 39

3.5.1  带输入的方法 44

3.6  与媒体共事 46

3.6.1  创建图片对象 46

3.6.2  显示图片 48

3.6.3  变量替换 49

3.6.4  对象引用 51

3.6.5  播放声音 51

3.6.6  媒体命名 52

3.6.7  方法的结果命名 52

3.7  概念小结 53

3.7.1  调用对象方法 53

3.7.2  调用类方法 54

3.7.3  创建对象 54

3.7.4  创建新方法 54

对象和方法总结 55

习题 55

深入学习 57

第2部分  图    形

第4章  使用循环修改图片 60

4.1  图片怎样编码 60

4.1.1  颜色的表示法 63

4.2  处理图片 66

4.2.1  浏览图片 70

4.3  改变颜色的值 71

4.3.1  使用for-each循环 71

4.3.2  使用while循环 72

4.3.3  增加/减少红色(绿色、

蓝色) 75

4.3.4  生成日落 85

4.3.5  搞清方法的意义 86

4.3.6  变量名范围 89

4.3.7  使用for循环 92

4.3.8  变亮和变暗 93

4.3.9  创建底片 95

4.3.10  转换成灰度 95

4.4  概念小结 97

4.4.1  数组 97

4.4.2  循环 97

4.4.3  注释 98

对象和方法小结 99

习题 100

深入学习 102

第5章  在矩阵中修改像素 103

5.1  复制像素 103

5.1.1  利用嵌套循环遍历像素 103

5.1.2  镜像图片 106

5.2  复制和改造图片 112

5.2.1  复制 113

5.2.2  创作抽象拼贴画 117

5.2.3  混合图片 122

5.2.4  旋转 125

5.2.5  缩放比例 127

5.3  概念小结 133

5.3.1  二维数组 133

5.3.2  嵌套循环 133

5.3.3  方法的返回值 134

5.3.4  方法重载 135

对象与方法小结 135

习题 136

深入学习 137

第6章  不同条件下修改像素 138

6.1  有条件的像素变化 138

6.1.1  对比色彩 139

6.1.2  更换颜色 140

6.1.3  减轻红眼 143

6.2  简单的边缘检测法:有两种情况的

条件语句 144

6.2.1  否定 144

6.2.2  同时测试两种情况 145

6.2.3  两种选择的条件 145

6.2.4  简单的边缘检测 145

6.3  棕色特效与多色调分色印照片:

利用多条件语句选择颜色 147

6.4  高亮显示 153

6.5  像素结合:模糊化 155

6.6  背景剔除 157

6.7  色度键 161

6.8  概念小结 163

6.8.1  布尔表达式 163

6.8.2  连接布尔表达式 164

6.8.3  条件执行 164

习题 165

第7章  画图 169

7.1  利用Graphics类画图 169

7.1.1  用Graphics方法画图 171

7.1.2  矢量和位图表示 176

7.1.3  画文本(字符串) 178

7.2  作为特殊画图过程的程序 180

7.2.1  我们为什么要编写程序 183

7.3  利用Graphics2D进行高级制图 183

7.3.1  设置画笔的宽度 184

7.3.2  通过绘制图像来复制图片 185

7.3.3  通用缩放 188

7.3.4  切变 189

7.3.5  用GradientPaint画图 190

7.3.6  接口 191

7.3.7  用AlphaComposite混合

图片 192

7.3.8  剪辑 194

7.4  概念小结 196

7.4.1  包 196

7.4.2  预设的Java类 196

7.4.3  继承 197

7.4.4  接口 197

对象和方法摘要 197

习题 198

第3部分  声    音

第8章  修改声音样本 202

8.1  声音编码 202

8.1.1  声音的物理性 202

8.1.2  探测声音 205

8.1.3  对声音进行编码 206

8.2  处理声音 209

8.2.1  打开声音并处理样本 210

8.2.2  使用MediaTools查找声音 212

8.2.3  引入循环 214

8.3  改变音量 216

8.3.1  增大音量 217

8.3.2  真的可以工作吗 218

8.3.3  减小音量 221

8.3.4  使用for循环 222

8.3.5  搞清方法的意思 223

8.4  规格化声音 224

8.4.1  生成剪辑 226

8.5  概念小结 228

8.5.1  数组 228

8.5.2  循环 228

8.5.3  条件执行 229

对象与方法汇总 230

习题 231

深入学习 234

第9章  用值域修改样本 235

9.1  对声音中的不同片段进行不同

的处理 235

9.2  创建声音剪辑 237

9.3  拼接声音 239

9.4  倒置声音 245

9.5  镜像声音 246

9.6  概念小结 247

9.6.1  循环的范围 247

9.6.2  从方法返回值 247

习题 248

深入学习 250

第10章  通过组合片段创建声音 251

10.1  用叠加方式组合声音 251

10.2  声音的混合 252

10.3  创建一段回声 254

10.4  如何用键盘采样 257

10.5  叠加合成 262

10.5.1  创建正弦波 262

10.5.2  用静态法创建声音 263

10.5.3  叠加正弦波 265

10.5.4  验证结果 266

10.5.5  方波 267

10.5.6  三角波 268

10.6  现代音乐合成 269

10.6.1  MP3 270

10.6.2  MIDI 270

10.6.3  私有方法 272

10.7  概念小结 274

10.7.1  类方法 274

10.7.2  私有方法 275

10.7.3  用多个方法创建程序 275

习题 276

深入学习 277

第11章  创建类 278

11.1  识别对象和字段 278

11.2  定义一个类 279

11.2.1  定义字段 280

11.2.2  继承方法 281

11.2.3  重写继承方法 283

11.2.4  默认字段初始化 284

11.2.5  构造函数的声明 284

11.2.6  调试器的使用 286

11.3  重载构造函数 289

11.4  创建和初始化一个数组 289

11.4.1  计算成绩平均值 290

11.4.2  在调试器中使用单步

测试 292

11.5  创建访问器(获取器)和修改器

(设置器) 295

11.5.1  创建访问器(获取器) 295

11.5.2  创建修改器(设置器) 296

11.6  创建main方法 298

11.7  Javadoc注释 299

11.7.1  类注释 299

11.7.2  方法注释 299

11.7.3  构造函数注释 300

11.7.4  生成文档 300

11.8  创建另一个类 301

11.8.1  添加构造函数 302

11.8.2  添加访问器和修改器 302

11.9  通过继承方式重用类 304

11.9.1  动态(运行时)绑定 309

11.10  概念小结 309

11.10.1  声明一个类 309

11.10.2  字段 310

11.10.3  构造函数 310

11.10.4  数组 310

11.10.5  使用调试器 311

11.10.6  Javadoc注释 311

习题 311

第4部分  文本、文件、网络、数据库和单一媒体

第12章  创建和修改文本 316

12.1  文本和单一媒体 316

12.2  字符串:字符序列 317

12.2.1  统一字符编码标准

Unicode 318

12.2.2  String方法 318

12.2.3  用Split界定字符串 321

12.2.4  不带有字体的字符串 323

12.3  文件:保存字符串和其他事务的

地方 323

12.3.1  读取文件 324

12.3.2  处理异常 324

12.3.3  使用ArrayList 328

12.3.4  写文件 332

12.3.5  生成套用信函 334

12.3.6  修改程序 335

12.4  其他有用的类 344

12.4.1  另一个有趣的类:

Random类 346

12.5  网络:从网页获取文本 348

12.6  使用文本在媒体间转换 353

12.7  概念小结 359

12.7.1  异常 359

12.7.2  读写文件 359

12.7.3  从互联网上读取 360

12.7.4  import语句 360

12.7.5  while循环 360

方法概要 361

习题 362

第13章  为网页制作文本 366

13.1  HTML:网页的标记 366

13.2  用程序生成HTML 370

13.2.1  从中创建网页 375

13.2.2  从其他网页创建网页 377

13.2.3  为主页添加随机性 379

13.3  数据库:存储文本的地方 380

13.3.1  键值映射 381

13.3.2  下传 382

13.3.3  泛型 384

13.4  关系数据库 387

13.4.1  SQL 388

13.4.2  准备开始:驱动程序和

连接 388

13.4.3  查询数据库 392

13.4.4  使用数据库创建网页 395

13.5  概念小结 397

13.5.1  HTML 397

13.5.2  助手方法 397

13.5.3  抛出异常 397

13.5.4  未命名包 398

13.5.5  HashMap 398

13.5.6  泛型 398

13.5.7  迭代器 398

13.5.8  JDBC和SQL 398

习题 399

深入学习 401

第5部分  电    影

第14章  编码、处理和创建电影 404

14.1  生成基于帧的动画 405

14.2  与视频帧合作 413

14.2.1  视频处理举例 413

14.3  概念小结 419

习题 419

第6部分  计算机科学中的一些议题

第15章  速度 422

15.1  聚焦计算机科学 422

15.2  如何使程序快速 422

15.2.1  计算机真正理解什么 422

15.2.2  编译器和解释器 424

15.2.3  Java的特殊情况 431

15.2.4  如何让解释程序比编译

程序更快 432

15.2.5  使搜索更快 433

15.2.6  永远不能结束或无法编写的

算法 436

15.2.7  为什么Photoshop比Java

程序做得更快 437

15.3  怎样能使计算机快速 438

15.3.1   时钟速率和实际计算 438

15.3.2  存储:什么使计算机

变慢 439

15.3.3  显示 440

15.4  概念小结 440

习题 440

深入学习 442

第16章  JavaScript:一种网页编程语言 443

16.1  Javascript的语法 443

16.2  网页内的JavaScript 444

16.3  JavaScript的用户界面 447

16.4  用JavaScript的多媒体 451

16.5  概念小结 452

习题 453

深入学习 453

附录A  Java快速参考 454

A.1  变量 454

A.2  声明方法 455

A.3  循环 456

A.4  条件 457

A.5  操作符 457

A.6  转义字符 458

A.7  类 458

A.8  字段 458

A.9  构造函数 459

A.10  包 459

参考文献 461

Java程序设计:一种多媒体方法

目  录

X

IX

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个