・   「Java言語」実習 第4回

4: クラスの継承

クラスの継承を利用してクラスを設計する練習を行います。


・ 準備(学内向け):
各自のJavaの課題の作業用のディレクトリ ~/java に移動しなさいなさい。 その中で以下の作業を行いなさい。


・ 基本課題1:「スーパークラスとなる抽象クラス(1)」
生命体を表すクラスを設計します。 このクラスは、後の課題で設計するクラスの共通のスーパークラスとなります。

  1. ソースファイル Creature.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. このプログラムは単独では実行できません。次の課題に進みなさい。

・ 基本課題2:「スーパークラスとなる抽象クラス(2)」
Creatureクラスを継承して他の生命体を攻撃するクラス Attackerを設計します。 このクラスも抽象クラスです。 なぜこのクラスが必要になるかは、後の課題の中で明らかになります。

  1. ソースファイル Attacker.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. このプログラムは単独では実行できません。次の課題に進みなさい。

・ 基本課題3:「クラスの実装(1)」
Attackerクラスの抽象メソッドを実装して人間の情報を表すクラス Humanを設計します。

  1. ソースファイル Human.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. このプログラムは単独では実行できません。次の課題に進みなさい。

・ 基本課題4:「クラスの実装(2)」
Attackerクラスの抽象メソッドを実装してモンスターの情報を表すクラス Monsterを設計します。

  1. ソースファイル Monster.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. このプログラムは単独では実行できません。次の課題に進みなさい。

・ 基本課題5:「ゲームのクラスの設計(1)」
Attakerクラスのオブジェクトどおしを戦わせるゲームの元になるクラスを設計します。 Human と Monsterを共通して取り扱うために Attakerクラスが記述に用いられます。

  1. ソースファイル Battle.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. このプログラムは単独では実行できません。次の課題に進みなさい。

・ 基本課題6:「ゲームのクラスの設計(2)」
Monsterどおしの戦闘を確認するためのクラスを設計します。

  1. ソースファイル BattleTest.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. プログラムを実行して結果を確認しなさい。
  4. もう一度プログラムを実行して結果を確認しなさい。 (実行するたびに結果が微妙に変化することを確認しなさい。)

・ 基本課題7:「ゲームのクラスの設計(3)」

  1. 課題6:のプログラムを改造して、 モンスターの名前や生命力、魔法力のパラメータを変更してみなさい。 (ソースファイル名は BattleTest.javaのままでよい)
  2. javac コマンドでコンパイルをしなさい。
  3. 何度か実行してみて、結果を確認しなさい。

・ 基本課題8:「ゲームのクラスの設計(4)」
MonsterとHuman間での戦闘を確認するためのクラスを設計します。

  1. ソースファイル BattleTest2.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. プログラムを実行して結果を確認しなさい。
  4. もう一度プログラムを実行して結果を確認しなさい。 (実行するたびに結果が微妙に変化することを確認しなさい。)

・ 今週のレポート課題(学内用):
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは java4)

  1. 課題7:で作成したプログラムの実行結果(1回分)
  2. 課題8:で作成したプログラムの実行結果(1回分)

・ 応用課題:「インターフェイスの利用と多重継承」
基本課題の場合よりもさらに複雑な継承関係を考えてみましょう。 (この課題は別のディレクトリを作成して、その中で行ないなさい。) たとえば Humanクラスそのものは Attackerではなく、Humanのサブクラス Soldierのみが Attackerになりたいとします。 その場合には Attackerはインターフェイスとして設計する必要があります。

  1. このような場合の各クラスの設計についての解説 を参照しながら、基本課題の各クラスを設計し直してみましょう。
  2. ButtleTest2.javaをコンパイルし、実行を確認しなさい。

実習の目次   今週の講義の内容