SSブログ

クラス継承やインターフェース実装の図解 [勉強]

本日(08/19)は、本当なら13章「例外処理」に進むハズだったんですけど、「もっとクラス継承とインターフェースの場数を踏みたい」とリクエストして、「クラス継承とインターフェス実装」の課題をすることになりました。

課題は図解にすると以下の通り。
20100819_java.JPG

Characterクラスはabstractクラス(抽象クラス)で、Characterクラス内のメソッドもabstractメソッド(抽象メソッド)でした。
それをサブクラスのYushaクラスとMaouクラスで継承して、さらにそれぞれのサブクラスにインターフェースを実装する。(サブクラスはpublicにする)

 

サブクラスをpublicに設定したら、実装したインターフェースの各メソッドもpublicにしないとダメだYOってコンパイラに言われたりして・・・・・・。 

(全てのクラスやインターフェイスなどのファイルたちは、RPGフォルダ内に保存されています)
最後にRPGクラスで、YushaクラスとMaouクラスのインスタンスを利用して、勇者と魔王を1人ずつ名前とHP(ヒットポイント)を設定して作成。
RPGクラスのmainメソッドでは、勇者の行動(攻撃、特技攻撃、魔法攻撃、逃げるなど)を選択し、魔王にダメージを与え、勇者のターンエンド。魔王のターンでは魔王の行動(攻撃、魔法攻撃)をランダム選択させて勇者にダメージを与え、魔王のターンエンド。
どちらかのHPが0以下になるまで、戦いを続けるという感じにしました。

攻撃や特技攻撃、魔法攻撃のそれぞれのダメージはMath.random()*??+1にして、int型でダメージ値をmainメソッドに戻して、戻ってきたダメージ値を相手のHPから引いて・・・という感じだったかな。

あ、Priestインターフェースは私のオリジナルで追加しましたが、実際の課題ではKnightインターフェースとWizardインターフェースだけでした。
私は・・・勇者の名前を"元祖ロト"にしてHPを500に設定、魔王の名前を"ゾーマ"にしてHPを1000に設定して、RPGクラスを実行したところ・・・・・・
勇者がどんな攻撃をしても、魔王の各攻撃ダメージ値を高く設定しすぎたせいもあって、必ず勇者がHP0になって死んでいました。(T-T;;

その後、勇者の各攻撃ダメージ値を少し高目に設定したり、魔王の各攻撃ダメージ値を少し低く設定したり・・・あれこれ試行錯誤すること数十回。
6時限目が終わった後に、ようやく勇者が魔王を倒すことに成功しました。

 

あー、今日もかなり頭をフル回転させました。
おかげで、クラスの継承およびインターフェースの実装は、昨日(08/18)よりも理解度がUPしましたよ。よかった、よかった。
明日(08/20)からは、例外処理かなぁ~。

 


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。