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; /** * 5-2-1 * 下級モンスターのインターフェイスです。 * * @author akira_ishii * */ public interface ILowMonster { /** * 攻撃をします。 * ダメージ(残りヒットポイントの2割)をメインキャラクターに与えます。 * * @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; /** * 5-2-1 * 下級モンスター「スライヌ」のクラスです。 * * @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; } /** * 死亡しているか判定します。 * * @return true:死亡 false:生存 */ @Override public boolean isDead() { return this.hp <= 0; } /** * HPを返します。 * * @return hp ヒットポイント */ public int getHp() { return this.hp; } /** * 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. 死亡判定メソッド
モンスターが死亡したかを判定するメソッド。
◇メソッド名
  isDead
◇引数
  なし
◇戻り値
  死亡したかを判定する真偽型変数
  hpフィールドが0以下であれば死亡(true)、そうでなければ生存(false)とする。

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

results matching ""

    No results matching ""