Java程式設計:一種多媒體方法

《Java程式設計:一種多媒體方法》是2007年清華大學出版社出版的圖書,作者是Mark Guzdial。

基本介紹

  • 書名:Java程式設計:一種多媒體方法
  • 作者:Mark Guzdial
  • 譯者:柳西玲
  • ISBN:9787302162957
  • 類別:編程設計
  • 頁數:459
  • 定價:¥59.00元
  • 出版社:清華大學出版社
  • 出版時間:2007-11-1
  • 裝幀:平裝
圖書簡介,目錄,前言,

圖書簡介

本書不同於一般介紹編程書籍,其特點是,它從激發學生學習編程的興趣出發,讓學生處理自己的圖片、聲音,製作自己的網頁、動畫,使他們覺得編程是一件既有意義又有趣味的事情。它選擇的開發環境DrJava簡單易用,讓學生可以把精力集中到程式開發,而不是學習使用開發環境。本書的另一個特點是,它在內容順序上不同於一般的編程書籍。它在向學生介紹新概念時,都是在特寫的背景下,在學生意識到概念的用途和意義時才推出,這樣做,避免了抽象概念給學生帶來的困惑,增加了學生的學習興趣和實際套用能力。書中案例豐富,內容生動,覆蓋了Java的基礎知識及圖片、聲音、視頻等多媒體處理技術。 本書共分為6個部分,第1部分(前3章)介紹編程和Java的基礎知識;第2部分(第4~7章)介紹怎樣處理圖片;第3部分(第8~11章)介紹如何處理聲音;第4部分(第12、13章)介紹文本處理和網頁製作;第5部分(第14章)介紹製作動畫和電影;第6部分(第15、16章)介紹算法對編程的影響及JavaScript——一種嵌於網頁內的腳本語言。教師和學生可以根據需要進行取捨,靈活選擇教學和學習內容。每章末尾都提供了練習題,便於學生鞏固複習本章知識。還為有興趣的學生提供了進一步學習的指南。
本書的翻譯工作由清華大學計算機系知識工程研究室的老師完成。本研究室是國內最早致力於Java語言的研究與套用開發的單位,長期從事Java語言的教學、培訓及項目開發工作,為國家機關、部委、企業開發了多個套用項目,積累了豐富的開發經驗。

目錄

第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

前言

本書旨在向沒有編程經驗的學生介紹計算和編程。計算機教育研究中發現的一個教訓是人們不僅“學習編程”,還要學習對一些事情編程[4,17]。這些事情如何激發人們學習的積極性,對學習編程產生不同的後果[6]。有些人對學習編程感興趣僅僅出於編程的需要,而大多數人不是這樣。
遺憾的是,大多數入門級的編程書籍都認為學生有強烈的學習編程的願望。它們強調編程概念,而很少考慮使正在解決的問題有趣味和有意義。它們介紹新概念時,沒有闡明學生為什麼應該知道這些概念。
在本書中,學生將通過編寫處理媒體的程式來學習編程。學生將創建並修改圖片,如修改“紅眼”、生成底片等;還將修改聲音,如把單詞拼接成句子,把聲音倒轉產生有趣的效果;還將採用資料庫中的數據生成網頁;他們將使用電視或電影中看到的特殊效果創建動畫和電影。
在Georgia Tech學習的學生覺得這些程式很有趣而且很有啟發性。學生甚至匯報他們改編的程式,看看他們繼續下去還能做什麼。
本書是教人們為了交流而編程。人們願意交流。我們是社會成員,交流的欲望是我們的首要動機之一。計算機已經不再是單純的計算工具,而日益成為人們交流的工具。實際上,現在所有發表的文字、圖片、聲音、音樂和電影都是用電腦技術準備的。這本書集中講述怎樣像專業人士那樣處理圖片、聲音、文字和電影,但是用學生編寫的程式。
我們發現大多數人願意使用專業水平的軟體來執行這些操作。那為什麼要自己學習編寫程式完成這些操作呢?為什麼不把它留給圖像處理軟體(Photoshop)和電影軟體(iMovie)的開發人員呢?答案在於你的興趣和職業選擇。
* 如果你想成為計算機方面的專業人士,那么,理解怎樣構造相互交流的程式對你來說是值得的。將來,許多軟體都將用於交流,這是一個開始學習有用技能的很好領域。現在,大多數計算機課程都用Java教授,所以本書為你選擇了合適的語言和合適的內容來學習編程。
* 如果你將來想成為應用程式的使用者,知道一些工具如何工作,會使你成為人們所說的“超級用戶”。現在,許多常用軟體都比一般用戶知道的功能強大得多。許多交流軟體,實際上都可以通過腳本語言編程,使用戶可以在套用中定製自己的任務。要充分利用軟體提供的功能,理解軟體正在做什麼是很有幫助的。如果你知道什麼是像素,就能更好地理解操作的用途。要使用軟體的腳本工具,需要一定的編程 知識。
* 如果你是一個有創造力的人,想完全控制交流,想知道在沒有應用程式時該怎樣實現你的願望。知道怎樣使用自己的程式處理媒體意味著你可以在需要的時候做自己想做的事情。你可能想讓你的媒體說些什麼,但可能不知道怎樣讓Photoshop 或 Final Cut Pro做你想做的事情。知道怎樣編程意味著你的表達能力將不受套用軟體的限制。
* 最後,也許你對應用程式或者編程一點都不感興趣。那對你來說,學這些東西值得嗎?在Georgia Tech上過我們的媒體計算課程的學生一年以後告訴我們,課程在他們的日常生活中有意義[15]。我們生活在科技時代,許多技術都用於處理媒體中的所見所聞。如果知道一些技術怎樣工作,你就有辦法思考怎樣使用它,以及怎樣使用它改變你的認知。非計算機專業的學生完成課程一年之後告訴我們,他們現在對與計算機相關的事物有了新的自信,因為他們知道一些計算機是怎樣工作的[15]。
本書不僅僅是關於處理媒體的編程。處理媒體的程式可以很難寫,或者出現意料不到的行為。人們會提出下面這些問題:“為什麼同樣的圖片在Photoshop中過濾得快些?”“除錯太難了。有沒有一種編程式的方法易於除錯?”回答這些問題,正是計算機科學家應該做的。本書的最後幾章是關於計算,而不僅僅是編程(第15和16章)。
計算機是人類所構想的最神奇、最具創造力的設備。字面上它完全是由思維因素組成。有一個說法,“不要光夢想,而要去實現”正適合計算機。如果你能想像,你就可以在計算機上使它成“真”。把編程當作遊戲非常有趣,而且應該有趣。

相關詞條

熱門詞條

聯絡我們