5-2.クラス-インターフェース

はじめに

本大問で作成するプログラム(演習課題も含む)を保存するためのパッケージを作成する。

  • パッケージ名
    web._05._02

本題

Xincor Quest は急ピッチで開発が進んでおり、様々なアップデートを控えている。
直近の要件としては、モンスターの作成と2次職の作成である。
まずは、モンスターの作成から取り掛かることになった。

5-2-1

下級モンスターのインターフェース作成&実装クラス作成

モンスターは大きく下級モンスター・中級モンスター・上級モンスターと3つのランクに分別される。
次のアップデートでは、下級モンスター・中級モンスターを実装する予定である。

まずは下級モンスタークラスの作成から実施することになった。
今後、多くの下級モンスタークラスを作る必要があり、その仕事を複数の人に依頼する予定である。
それに先駆け、下級モンスタークラスに実装するメソッドの仕様(メソッド名、引数、戻り値のデータ型)を統一するため、下級モンスタークラスのインターフェースを作成しよう!
また、インターフェースの作成後、インターフェースを実装(インプリメンツ)したクラスも作成してみよう。

【インターフェースの要件】

<インターフェース名>

ILowMonstar

<作成するフィールド>

なし

<作成するメソッド>

下級モンスタークラスに実装するメソッドは以下2つ。

攻撃メソッド
キャラクターに攻撃し、ダメージを与えるメソッド。
◇メソッド名
  attack
◇引数
  戦闘対象のキャラクターインスタンスを保管するMainCharacter型変数
◇戻り値
  キャラクターに与えたダメージ(整数型)
死亡判定メソッド
モンスターが死亡したかを判定するメソッド。
◇メソッド名
  isDead
◇引数
  なし
◇戻り値
  死亡したかを判定する真偽型変数
  hpフィールドが0以下であれば死亡(true)、そうでなければ生存(false)とする。
下級モンスタークラスのインターフェース

ILowMonster.java

package web._05._02; import xq._05._01.MainCharacter; /** * 5-2-1: * ILowMonsterは、下級モンスターのインターフェースです。 * 実装クラスが持つべき攻撃メソッドと死亡判定メソッドを定義します。 * * @author akira_ishii * */ public interface ILowMonster { /** * キャラクターに攻撃します。 * ダメージをキャラクターに与えます。 * * @param mainCharacter 戦闘対象のキャラクター * @return キャラクターに与えたダメージ */ int attack(MainCharacter mainCharacter); /** * 自身が死亡しているか判定します。 * * @return true:死亡 false:生存 */ boolean isDead(); }

【インターフェースを実装したクラスの要件】

下級モンスター「スライヌ」クラスを作成してみよう。

<クラス名>

Sline

<インプリメンツするインターフフェイス>

ILowMonster

<作成するフィールド>
  • 「ヒットポイントを保管するためのフィールド」を用意する。
    変数名: hp
    アクセス修飾子:自クラスからのみ参照可能
    データ型:整数型
    初期値:30
<作成するメソッド>
1. 攻撃メソッド
インターフェースの攻撃メソッドを実装する。

◇処理内容
 1. 敵に与えるダメージとして、自身のhpフィールドの0.2倍を計算する。
  ※ダメージは整数値とし、小数は切り捨てること。
 2. 引数のMainCharacterインスタンスのHPを①で計算したダメージ分減らして上書きする。

 例)
 自身の残りHPが10、MainCharacterインスタンスのHPが10とした場合、
 Monsterインスタンスへのダメージが10×0.2で2となる。
 従って、MainCharacterインスタンスのHPを2(10-2)で上書きする。
2. 死亡判定メソッド
インターフェースの死亡判定メソッドを実装する。

◇処理内容
 ①自身のhpフィールドが0以下の場合は true (死亡)を戻し、0より大きい場合は false (生存)を戻す。
3. HPのsetter・getter
他クラスからHPを参照するためのメソッド。
HPのsetメソッド, getメソッドを作成する。
インターフェースをインプリメンツして作成した下級モンスター「スライヌ」クラス

Sline.java

package web._05._02; import xq._05._01.MainCharacter; /** * 5-2-1: * Slineクラスは、下級モンスター「スライヌ」を表します。 * ILowMonsterインターフェースを実装し、ヒットポイントをフィールドに持ちます。 * Slineクラスは、ILowMonsterインターフェースで定義された攻撃メソッドと * 死亡判定メソッドを実装し、その他にフィールドのgetter・setterを持ちます。 * * @author akira_ishii * */ public class Sline implements ILowMonster { /** ヒットポイント(初期値:30) */ private int hp = 30; /** * キャラクターに攻撃します。 * ダメージ(残りヒットポイントの2割)をキャラクターに与えます。 * * @param mainCharacter 戦闘対象のキャラクター * @return キャラクターに与えたダメージ */ @Override public int attack(MainCharacter mainCharacter) { int damage = (int)(this.hp * 0.2); mainCharacter.setHp(mainCharacter.getHp() - damage); return damage; } /** * 自身が死亡しているか判定します。 * ヒットポイントが0以下の場合は死亡していると判断します。 * * @return true:死亡 false:生存 */ @Override public boolean isDead() { return this.hp <= 0; } /** * ヒットポイントを返します。 * * @return hp ヒットポイント */ public int getHp() { return this.hp; } /** * ヒットポイントを設定します。 * * @param hp ヒットポイント */ public void setHp(int hp) { this.hp = hp; } }

5-2-2

中級モンスターのインターフェース作成

続いて、中級モンスタークラスのインターフェースを作成しよう!
提出物は、作成したインターフェースとします。

【インターフェースの要件】

<インターフェース名>

任意

<作成するフィールド>

なし

<作成するメソッド>

中級モンスタークラスのインターフェースに定義するメソッドは以下5つ。

1. 物理攻撃メソッド
キャラクターに物理攻撃するメソッド。

◇メソッド名
  任意とする。
◇引数
  戦闘対象のキャラクターインスタンスを保管するMainCharacter型変数
◇戻り値
  キャラクターに与えたダメージ(整数型)
2. 魔法攻撃メソッド
キャラクターに魔法攻撃するメソッド。

◇メソッド名
  任意とする。
◇引数
  戦闘対象のキャラクターインスタンスを保管するMainCharacter型変数
◇戻り値
  キャラクターに与えたダメージ(整数型)
3. スキル攻撃メソッド
キャラクターにスキル攻撃をするメソッド。
スキル攻撃には「通常スキル攻撃」と「特殊スキル攻撃」の2種類があり、
それぞれキャラクターに与えるダメージが異なる。

◇メソッド名
  任意とする。
◇引数
  ①戦闘対象のキャラクターインスタンスを保管するMainCharacter型変数
  ②特殊スキル攻撃か通常スキル攻撃を判定する真偽型変数
   ※true:特殊スキル攻撃 false:通常スキル攻撃、と判定する。
◇戻り値
  キャラクターに与えたダメージ(整数型)
4. 自己回復メソッド
自身のHPを、キャラクターから受けたダメージの3割回復するメソッド。
100ダメージうけたら、3割の30回復する。

◇メソッド名
  任意とする。
◇引数
  受けたダメージを保管する整数型変数
◇戻り値
  なし
5. 死亡判定メソッド
モンスターが死亡したかを判定するメソッド。
◇メソッド名
  任意とする。
◇引数
  なし
◇戻り値
  死亡したかを判定する真偽型変数
  hpフィールドが0以下であれば死亡(true)、そうでなければ生存(false)とする。

Copyright © Xincor miXell Co., Ltd. All rights reserved

results matching ""

    No results matching ""