2012年3月23日金曜日

【Java】クラスとインスタンス with FF5

クラスとは同様の状態・振る舞いをもつオブジェクトの共通部分を集めて
1つの型を構成することです。
ここでいう状態はクラス変数(メンバ変数)などを示し、
振る舞いはメソッドを示します。

固く書いてもわかりずらいので、最近sirocoがやっているゲーム「FF5」を
例に挙げて説明してみます(笑)

FF5にはジョブというシステムがあります。
ナイト・シーフ・白魔道士などなど。
これら各ジョブをクラスに表してみます。
public class シーフ {

}
クラスの宣言は以下のようになります。

[修飾子] class クラス名 { }

上の例ではpublic(どこからでも使用できる)なシーフというクラスを宣言しています。
クラスの持つ状態や振る舞いは "{" と "}" の間にコーディングします。

ジョブには特有のアビリティがありますので、
それをメソッドとしてあらわしてみます。
public class シーフ {

 public void かくしつうろ() {
  // ダンジョンなどの隠し通路が見えるようになる
 }
 
 public void とんずら() {
  // 戦闘から逃げる。逃げられないモンスターもいる
 }
 
 public void ダッシュ() {
  // キャンセルボタンを押しながら移動すると、2倍の速度で動ける
 }
 
 public void ぬすむ() {
  // モンスターの持つ宝を盗む。失敗することもある
 }
  ・
  ・
  ・
}
メソッドの宣言は以下のようになります。

[修飾子] [戻り値の型] メソッド名 { }
メソッドの内容については、また別の機会に。

さて、上で宣言したシーフクラスは1つのオブジェクトですが、
オブジェクトそのものでは使用できず、
インスタンス化をして始めて使用可能となります。
(staticなフィールドは別ですが)

インスタンス化の例を挙げてみます。
public class TestFF5 {

 public static void main (String[] args){
  
  // シーフクラスのインスタンスsirocoを生成
  シーフ siroco = new シーフ();
  
  // とんずらメソッドの使用
  siroco.とんずら();

  // シーフクラスのインスタンスkururuを生成
  シーフ kururu = new シーフ();

  // ぬすむメソッドの使用
  kururu.ぬすむ();
 }
}
てな感じです。
変数やメソッドをクラスとして宣言し、インスタンス化することで、
sirocoとkururuのそれぞれで、オブジェクトのフィールド(変数やメソッド)を
使用できるようになります。


クラスとインスタンスについては、こんなところで。
次回以降でもう少し掘り下げて説明していきます。

。。。勿論、FF5を使ってね(笑)

0 件のコメント:

コメントを投稿