8-2 專題研討:物件方法
8-2-1 範例研討:製作時間運算工具 (A)程式功能:Ex8_1.java 許多應用系統需要相關時間計算工具,譬如:兩個時間點之間相差多久(timeInterval())、一個時間點再過後某些時間之後是何時(timeAfter())、以及一個時間點之前的某些時間數,又應該是何時(timeBefore())。時間運算是屬於 60 進位方式,不同於一般 10 進位計算。請製作上述 3 種時間工具,並測試其運算結果,期望操作介面如下:
(B) 製作技巧研討: 製作此系統可區分為下列 3 個主題: (1) 時間物件格式(Time.class):需製作一個時間類別,規劃時間物件的規格;利用此類別所產生的物件變數之間,才可以做運算處理(於 timeTool.java)。 (2) 時間運算工具類別(timeTool.class):此類別內包含所需的時間計算器(或稱方法),再利用它產生(new)物件方法,就可以做運算處理事項。本範例包含下列四個工具(於 timeTool.java): (a) getTime():輸入時間字串(時/分/秒),轉換成時間物件格式(時、分、秒)並回傳。 (b) timeAfter():輸入現在時間點與之前時間量,回傳之前的相當時間點(時、分、秒)。 (c) timeBefore():輸入現在時間點與之後時間量,回傳之後的相當時間(時、分、秒)。 (d) timeInterval():輸入兩個時間點(時、分、秒),回傳之間的距離時間量。 (3) 編譯主程式(Ex8_1.class):測試所製作的工具是否可用。 (C)程式範例:timeTool.java 吾人利用 timeTool.java 檔案製作 Time 與 timeTool 兩只類別;兩類別的功能如圖 8-2 所示。
圖 8-2 Time 與 timeTool 類別的功能
(D)程式範例:Ex8_1.java 完成 Time 與 timeTool 兩類別之後,吾人利用 Ex8_1 範例驗證這兩類別所產生的物件,觀察其功能是否滿足所需。圖 8-3 為兩類別產生物件的情況,利用 Time 類別產生了 now 物件,該物件內具有 now.hour、now.minute 與 now.second 等 3 個變數成員,則利用這些成員記錄時間的時、分與秒。同樣的,timeTool 類別產生 tool 物件後,該物件具有 tool.getTime()...等 4 個方法成員,也利用這 4 個方法庫計算時間長短。
圖 8- 3 Time 與 timeTool 類別產生物件
程式重點說明: (1) 第 11 行:『timeTool tool = new timeTool();』。利用 timeTool 類別產生物件工具 tool(包含 4 種方法),但 timeTool.class 必須存在於同一目錄下。 (2) 第 12 行:『Time now = new Time();』。利用 Time 類別產生物件變數 now(包含 3 個變數成員),但 Time.class 必須儲存同一目錄下。 (3) 第 21 行:『now = tool.getTime(time_S);』。呼叫 tool 物件下的 getTime() 物件方法,傳回 Time 格式的物件。 (4) 第 29 行:『time_B = tool.timeBefore(now, time_T);』。呼叫 tool 物件下的 timeBefore() 方法。 (5) 第 40 行:『time_B = tool.timeAfter(now, time_T);』。呼叫 tool 物件下的 timeAfter() 方法。 (6) 第 51 行:『time_B = tool.timeInterval(now, time_T);』。呼叫 tool 物件下的 timeInterval() 方法。 如果依照上述技巧製作本系統,編譯後應該具有下列檔案:
8-2-2 自我挑戰:遊樂場計費系統 (A)程式功能:PM8_1.java 『Karoror 線上遊戲』係採用按上線時間收費方法,遊戲者上線後開始計時,下線後在計算上線時間多寡計費,以每 30 秒 1 元計算。該公司需要一套收費資訊系統,因此在網路公開招標,期望參與投標者需製作一套雛型管理系統,應具有:設定目前時間、顯示上線遊戲者、開始遊戲、結束遊戲等功能;期望操作介面如下:
(B)製作技巧提示: 系統必須提供登錄每位遊戲者上線的起始時間。當某位遊戲者下線時,計算當時時間與他的起始之間的相差值,得到他上線的時間,依此計算出上線費用。吾人可利用 Ex8_1 範例所建立的 timeTool(timeInterval() 方法)物件來計算兩點差距的差距。另外,主程式虛擬碼提示如下:(Time.class 與 timeTool.class 需與主程式存在於相同目錄下)
|
翻轉工作室:粘添壽
Java 程式設計(二) 含物件導向
翻轉電子書系列:
|