Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

UML Design(設計)9 〜AP設計 クラス図の作成1〜

前回作成した、役割分担よりクラスの一覧ができたので、クラスに何をさせるのか?を考えていきます。作成したクラス一覧は以下の通りです。

  • A. TextRPGクラス(Main)
  • B. Titleクラス(Command)
  • C. CharactorCreatorクラス(Command)
  • D. Dungeonクラス(Command)
  • E. Utilクラス
  • F. Commadクラス: コマンドの数だけ作る

f:id:Takunoji:20190910212523p:plain

ここで、注意しておきたいのが、A〜Dのクラスは全てFのクラスに入るところです。

Fのクラスは、インターフェースクラス・・・インタフェースを実装するクラスにするのでUtilクラス以外は全てCommandクラスのカテゴリに入ります。

f:id:Takunoji:20190911205449p:plain

コードで書くと下のような感じになります。

public class TextRPG {
public static void main(String[] args) {
// メインクラス
TextRPG main = new TextRPG();
// コマンドインターフェースクラス
CommandIF cmd = null;
// 標準入力
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
// 入力コマンドから完全クラス名取得
String className = main.getProperty(input);
// クラスオブジェクト取得
Class<CommandIF> clazz = Class.forName(className);
// クラスのインスタンス取得
cmd = clazz.newInstance();
// コマンドクラスの「execute()」実行
cmd.execute();

          ・
          ・
}
}

 

上のように、完全クラス名からクラスのインスタンスを取得する方法でコマンドクラスを取得、実行する形で実装しようとしています。

上記の処理の詳細はこちらの記事を参照してください。

メインメソッドを修正しないでコマンドを追加する方法

サンプルコードはGitにアップしてあります。

PracticeJava1/Lv3_3_RefactorLv2.java at master · ZenryokuService/PracticeJava1 · GitHub

<実行結果>

 

クラス図

まずは、初めのメインクラス=TextRPGクラスのクラス図を作成しました。

f:id:Takunoji:20190913081831p:plain

ここでのポイントは、メインメソッドを持っているところです。

「TextRPG」はクラス名、Properties, firstFlgがある部分はフィールド変数下の部分はメソッドです。

これがクラス図の最小単位になります。このクラスが他のクラスとどのような関係を作り、想定する機能を実現するのか?

これを考えるのが設計になります。

続きは次回に。。。

 

でわでわ。。。