開發階段,自然免不了對需求的分析 (analysis) ,然後設計 (design) 、建置 (implement) ,接著進行測試 (testing) ,其實這順序沒有絕對,「設計」與「建置」可能只是先做個簡單版本,「測試」與「使用」說到底都是實際執行後觀察結果,「修改」等於以之前的基礎再次「設計」與重新「建置」。
我們打算開發的 Encrypt 類別 (class) 的需求已經很清楚,也就是產生一個英文小寫字母對換的陣列 (array) ,我們用 cArray 屬性 (field) 當作對這個陣列的參考 (reference) ,然後以 setArray() 方法 (method) 建立這個陣列。
我們現在正式來寫 Encrypt ,利用 API 中 Math 類別 random() 方法可以得到小於 0 隨機浮點數,我們將其乘以 10 ,然後強制轉換型態為 int ,便可使 a 與 b 得到 0 到 9 的隨幾整數
public class Encrypt { char[] cArray = new char[26]; // a 與 b 取得 0 到 9 的隨機整數值 int a = (int) (Math.random() * 10); int b = (int) (Math.random() * 10); int n = 26; char c = 'a'; int diff = 97; public void setArray() { int i, y, x, m; char r; x = c; for (i = 0; i < n; i++) { y = x * a + b; m = y % n; r = (char) (m + diff); cArray[i] = r; x++; } } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:Encrypt.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */
Math 中的 random() 也是 static 的,所以我們得由類別名稱 Math 來呼叫 (call) 。 Encrypt 中沒有寫 main() ,這是因為我們要把 main() 寫在另一個 EncryptDemo 類別中,由 EncryptDemo 來進行 Encrypt 的測試。那,總之 Encrypt 需要先編譯
命令列 (command line) 中打入編譯 (compile) 指令,無聲無息的出現下一個打指令的提示字元,這就表示我們編譯成功。那現在我們就來寫 EncryptDemo 囉
// 測試 Encrypt 的類別 public class EncryptDemo { public static void main(String[] args) { System.out.println(); Encrypt t = new Encrypt(); t.setArray(); System.out.println(t.cArray); System.out.println(); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:EncryptDemo.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */
編譯後執行,如下
嗯,看起來還不錯。接下來,我們在 EncryptDemo 中加入迴圈 (loop) ,跑十六個表格出來看看,這樣的話, EncryptDemo 需要修改如下
// 測試 Encrypt 的類別 public class EncryptDemo { public static void main(String[] args) { System.out.println(); // 印 16 次表格 for (int i = 0; i < 16; i++) { Encrypt t = new Encrypt(); t.setArray(); System.out.println(t.cArray); } System.out.println(); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:EncryptDemo.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */
記得, EncryptDemo 修改後需要重新編譯,而 Encrypt 目前沒問題,不用去動它
咦,居然有一行全部都是英文小寫字母 'e' ,有幾行的英文字母重複出現,這代表轉換公式有問題,我們接下來需要先修正數學公式。
中英文術語對照 | |
---|---|
軟體生命週期 | sofeware life cycle |
開發 | development |
使用 | use |
修改 | modification |
分析 | analysis |
設計 | design |
建置 | implement |
測試 | testing |
類別 | class |
陣列 | array |
屬性 | field |
參考 | reference |
方法 | method |
呼叫 | call |
命令列 | command line |
編譯 | compile |
迴圈 | loop |
您可以繼續參考
軟體開發
相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁
參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition
本文於 2013 年 1 月訂正
沒有留言:
張貼留言