009.2. クラスを定義してみよう


サンプルソースでConsoleクラスやFileクラスを呼び出しましたが、自分オリジナルのクラスを作成することもできます。

オリジナルのくらすの使い道

コンソールアプリケーションを作った時に気付いた方もいるかもしれませんが、プログラムの開始地点はMainメソッドからです。

そして、そのMainメソッドがある場所はProgramクラスでしたね。

基本的に、クラスとは○○のための処理の寄せ集め。みたいなものなのです。

他にも、データを固めるために使うという使い道があります。例えば、RPGゲームがあって、主人公データを作りたいとします。

主人公のパラメータにはHPやMP、攻撃力とか防御力とかあると思います。それを一つ一つ変数を作って管理すると、そのゲームがどんどん複雑になるにつれて管理できなくなってしまうのです。

管理しやすくするためにクラスを使う例もあります。

こんな感じになるかな。回復の処理とかをProgramkウラスの中に突っ込みまくると複雑になりすぎます!
キャラクター用の処理はできるだけ固めて設置した方が分かりやすいです。

また、キャラが2人いたって楽に書くことができます。

HPやMPとかのデータは別々に記録されるので、バグが起こりづらいです。

作り方

設置する場所

実はコンソールアプリケーションを作る時にすでにオリジナルのクラスは作っていましたが、新しく作るとしましょう。

新しいクラスが定義できるのは以下の場所のみです。

  • namespaceの外側
  • namespaceの内側
  • classの内側

実はクラスの中にクラスを定義することもできます。使われ方は非常に限定的なのでやめましょう。

できるだけ、そのプロジェクト名の名前空間がいいです。例えばこんな感じ

 書き方

classの後にクラス名を必ず起き、その後に{  }を置きます。

もしそのクラスへのアクセスに制限をかけたい場合はアクセス修飾子をclassの前に置きましょう。これは省略可能です。
設定できる内容には以下があります。

  • public
    そのプログラムの外からもアクセスできる
  • internal
    そのプログラムのみ、どこからでもアクセスできる
  • private
    クラスの中にクラスが設置されている場合、親クラスからのみアクセスできる。

基本的にはpublicかinternal。もし外からアクセスする必要がない場合のみprivateを指定しましょう。省略した場合はprivateが仮に置かれます。

メンバーを定義する

クラスの枠組みができたらメンバーを置きます。メンバーとは変数、プロパティやメソッド、デリゲート、イベント等のことを言います。

メソッドを定義

例えばメソッドを書くならこんな感じ。

と、なります。これを呼び出すにはこのようにします。

動的メソッドはインスタンスを作成してから呼び出す必要があります。静的メソッドはインスタンスがなくても呼び出せます。

変数を定義

変数の書き方はこんな感じ。変数の使い方についてはこちら

クラスの中に直接、変数を置くことができます。

ここでの特徴はアクセス修飾子が付けれるということ。そしてこちらは、宣言と当時に代入する(初期化する)際に、メソッドの戻り値を代入することはできません。

プロパティを定義

プロパティの書き方についてはこちらを参照。例を書くとこんな感じ

 イベントの定義

イベントとは、そのオブジェクトに何かしらの影響が起きたということを他に伝えるためにあります。

イベントと同時にデリゲートを覚える必要があるのでここでは割愛させていただきます。また別の項で紹介します。

静的クラスについて

クラスにも静的というものがあります。と言っても、これはインスタンスの生成(new)ができない、そのため、動的メソッドや動的変数を設置できないというものです。

言い換えればそれだけ。インスタンスを生成する必要のない、静的(static)なメンバーしかないときは静的クラスにしましょう。

まとめ

クラスを作るときはclassを使う。メンバーには動的と静的両方入れれるけど、静的クラスは静的メンバーしか入れれない。