009. クラス(構造体)の役割とは


オブジェクト指向プログラミングでは、クラスや構造体が出てきます。しかし、それは何のためにあるものなのかいまいちわかりにくいものがありますよね。

クラス(構造体)はメソッドや変数の定義

例えばゲーム等でとある敵がいます。

その敵は画面上に何体も出てくる者です。例えばマリオのクリボーと例えてみましょう。

あるクリボー1に対して必要なデータは何があるでしょう

  1. そのクリボーが存在する位置(座標)
  2. 何か特殊能力を持っている(デカクリボーとか)
  3. その敵の体力(マリオの場合一撃なので関係ないかも)

いろいろパターンはあり得ると思います。

画面上に存在するクリボーは1体とは限りませんし、制限がなければドカンから出てくるクリボーは無限に現れると思います。

しかし、これを管理しようとするとオブジェクト指向以外ではかなり煩雑になるのです。

例を見てみましょう。これはオブジェクト指向を利用しない場合の例です。ちょっと極端な書き方ですが

極端な例ですが、このように管理する必要があります。(普通は配列を作ってもう少しマシにしますが面倒なことに変わりないです。)

しかも、操作するクリボーによって扱いべき変数が変わります。面倒臭すぎませんか?

クラスとは定義

さて、クラスを使うとどのようになるのでしょうか。

例を見てみましょう。

このようにコンパクトにまとめることができます。

なおメモリの中ではこのようになっています。

d5

このようにまとまってメモリの中には格納されるのです。こうすることで綺麗なコードが書けますし、バグりにくいコードが書けるというわけです。

クラス内のメソッド

例えば、クラスの中にLevelという変数があり、LevelUpというメソッドがあるとします。

LevelUpとはLevelを1上げるメソッドとします。するとこのようなコードになりますね

クラス内のメソッドで、自分のオブジェクトのデータをいじる際はthisを元になるオブジェクトとして指定します。もちろん省略しても可能ですが、極力省略しないでください。

このクラスを利用したコードの例を見ましょう。

クラス内のメソッドを利用する際は、元になるオブジェクトの後に.(ドット)をつけてからメソッドを指定します。