天龍八部之 Java 類別、屬性與方法

作者 | 2017-12-14

假設你是個導演,當你想拍攝一幕「洪七公說了一聲看招後,使出降龍十八掌」的戲,應該如何做到呢?導演應該先設計好洪七公這個角色,再找一個場地與演員來真實地演出這場戲。

設計階段就是類別的設計,真實演出時,就是產生物件並呼叫方法。

設計洪七公類別之前先提醒,為了容易瞭解,我會在這個範例中的類別名稱、屬性與方法名稱使用中文,但是建議日後設計類別時,為避免日後國際化問題,應避免使用中文為類別名稱或方法名稱。

設計構思階段

洪七公也是個人,而人都有姓名與體力,因此先設計「人」類別是為了日後若有其他角色時,可以重覆使用。而「洪七公」類別則繼承了人的特色,筆者為「人」類別設計姓名與體力兩個屬性,又加了一個方法「說」,這個方法可以接收一個字串後印出。

接下來設計洪七公類別,由於洪七公也應該有「人」的所有屬性與方法,筆者將洪七公繼承了「人」類別,並設定其姓名,由於練武之人體力較佳,因此應改變父類別(人)的體力為200。又因洪七公擁有絕世武功,我新增了一個新的方法叫「降龍十八掌」,類別設計如下:

演出階段

接下來可以演出先前「洪七公說了一聲看招後,使出降龍十八掌」這幕戲了,筆者新增一個具有main方法,可測試的類別叫Tester,用來演出這場戲。先以一個演員hong,依照劇本所設計的洪七公來演出:

執行的結果為:

進階設計

假如筆者的需求是設計有關遊戲的對戰,遊戲中有歐陽峰與洪七公兩個角色,歐陽峰擁有體力180,內力值是400,發出蛤蟆功後自己會降低體力值40與內力值50,而對方會失去體力值80。而洪七公擁有的體力是200,內力值是500,發出降龍十八掌時自己會降低體力值60與內力值80,而對方會失去體力值120。整理如下表:

說明洪七公歐陽峰
預設體力值200180
預設內力值500400
使出大絕招消耗體力值6040
使出大絕招消耗內力值8050
對方失去體力值12080

「歐陽峰使出蛤蟆功攻擊洪七公後,洪七公受傷後也使出降龍十八掌回擊」

由於設計過程比起上一節要來得複雜,先將兩個類別的架構整理後,再進行類別的實際設計:

洪七公類別

上述程式碼為類別新設計一個新的屬性(第2行)與新的方法(第12至18行),第12行的方法降龍十八掌(人 p)接收一個人物件,才能在該方法中操作被攻擊人的體力值。第14,15行扣除洪七公自己的體力與內力值,第16行則扣除被攻擊人的體力值,最後第17行印出被攻擊人被扣除後所剩餘的體力值。

歐陽峰類別

上述程式碼為類別新設計一個新的屬性(第2行)與新的方法(第12至18行,第12行的方法蛤蟆功(人 p)接收一個人物件,才能在該方法中操作被攻擊人的體力值。第14,15行扣除歐陽峰自己的體力與內力值,第16行則扣除被攻擊人的體力值,最後第17行印出被攻擊人被扣除後所剩餘的體力值。

實例操作程式

遊戲場景演出「歐陽峰使出蛤蟆功攻擊洪七公後,洪七公受傷後也使出降龍十八掌回擊」,在此設計一個Tester2類別,於main方法內演練實例,程式碼如下:

執行結果如下:

 

相關文章:

Category: Java

關於 Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 , 為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *