オブジェクト指向について(その2)
はじめに
前回のエントリでオブジェクト指向について,ミニ四駆を例に例えて記述したが,我ながら例えが悪かったと思ったので,リベンジという訳ではないが,再度記述.クラスやインスタンスといった用語についての修正は特にしないので,私なりの解釈ではあるが,興味のある方がいれば前回の記事を参照していただければと思う.
例:RPGのモンスター
では今回は何に例えるか.RPGのモンスター,その中でもドラゴンを例に記載する.
●属性(データ)
ゲームに出てくるドラゴン(に限った話ではないが)は,「HP」や「MP」といった数値データを持っている.また,「Level」というデータも持っているし,「名前」というデータも持っている.
●操作(メソッド)
ドラゴンは勇者一行に(かきづめか何かで)「攻撃」してくるし,時には勇者たちの攻撃から「身を守る」行動もとるだろう.また,「火炎ブレス」で炎の息を吐いて攻撃もしてくるだろう.あるいは,負けそうだと判断すると「逃げる」かもしれない.
Dragonクラスの作成
以上の点から,ドラゴンに関するデータや操作をまとめた「Dragonクラス」を定義する.↓以下のような感じになるだろうか.
Class Dragon {
int hp, mp, level;
String name;
public void attack() {
System.out.println("攻撃!");
}
public void defence() {
System.out.println("防御!");
}
public void fire_breath() {
System.out.println("炎の息攻撃!");
}
public void run_away() {
System.out.println("逃走した!");
}
}
Dragonクラスのインスタンス生成
ドラゴンに関するデータや振る舞いをDragonクラスで定義した.クラスとは,ある概念が持つデータや振る舞いをまとめた雛形ともいえる.
クラスからインスタンスを生成するためには,new演算子を用いる.
たとえば,レッドドラゴン(red_dragon)というインスタンスをDragonクラスから生成するためには,以下のように記述する.
Dragon red_dragon = new Dragon();
これにより,Dragonクラスのデータや振る舞いを持つレッドドラゴンというインスタンスが生成された.インスタンスが振る舞い,つまりメソッドを実行するためには,ドット演算子を使う.
例えば,レッドドラゴンに攻撃をさせたい場合は
red_dragon.attack();
というように,インスタンス名.メソッド名という具合に記述する.
オブジェクト指向の特徴として,生成したインスタンスごとに振る舞いを定義することができる点が挙げられる.例えば,「レッドドラゴンには攻撃させ,ブラックドラゴンには防御させたい」場合は,以下のように記載すればよい.
red_dragon.attack();
black_dragon.defence();
おわりに
前回の記事のリベンジがてら,オブジェクト指向に対する私のイメージを,RPGのモンスター(その中でもドラゴン)を例に記述した.前回の記事にも記述したが,私はオブジェクト指向を極めている訳ではなく,むしろ勉強中の身である.これからも(気が向けば)備忘録がてら記事を投稿していくつもりではありますが,もしご指摘点などあれば,こっそり教えて頂ければ幸いです….