【ClassPractice01】クラスとは何か?〜なぜ必要なのかから理解する〜

C#を学習していると、必ず出てくる言葉があります。

クラス

オブジェクト

new

ここでつまずく人がとても多いです。

今日は、いきなり難しい説明はしません。

まずは、

「なぜクラスが必要なのか」

から考えてみましょう。


■ 配列だけで管理してみる

例えば、

3人のプレイヤーを管理するとします。

それぞれに

  • 名前
  • HP
  • MP

があるとします。

今まで学んだ知識で書くとこうなります。

string[] names = new string[3];
int[] hp = new int[3];
int[] mp = new int[3];

names[0] = "勇者";
hp[0] = 100;
mp[0] = 30;

動きます。

ですが、ここで考えてみてください。


問題1

「勇者のHPはどれ?」

→ hp[0]

では、

問題2

「勇者の名前はどれ?」

→ names[0]


ここで重要なことに気づきます。

0番がズレたらどうなる?

もし

names[0] = "勇者";
hp[1] = 100;

と書いてしまったら?

勇者のHPは100ではなくなります。


■ データがバラバラ問題

今の状態はこうです。

名前の箱
HPの箱
MPの箱

全部バラバラ。

「1人分」がまとまっていません。


■ 1人分をまとめたい

ここで考えます。

1人分をひとまとめにできたら便利では?

そこで登場するのが

クラス

です。


■ クラスを書く

class Player
{
    public string Name;
    public int Hp;
    public int Mp;
}

これは何かというと、

Player型という「新しい型」を作った

という意味です。


■ 型とは何か?

今まで使ってきた型は

  • int
  • string
  • double

でした。

クラスとは、

自分で作れる型

です。


■ new の意味

Player p1 = new Player();

これは

Player型の実体を作る

という意味です。


■ 使ってみる

p1.Name = "勇者";
p1.Hp = 100;
p1.Mp = 30;

今度はこうなります。

p1の中に
・名前
・HP
・MP
がまとまっている

ズレません。


■ 複数作れる

Player p2 = new Player();

設計は同じでも、中身は別です。

これが

オブジェクト(インスタンス)

です。


■ ここで少しだけ例え話

クラスは

設計図

です。

new は

実際に作る

という意味です。

設計図があっても、

実際に作らなければ存在しません。


■ 今日のポイント

最初に覚えることはたった1つです。

クラスとは、データをまとめるための仕組み

それだけです。


■ よくある誤解

× オブジェクト指向は難しい

× 哲学的なもの

× 3大要素を覚えるもの

違います。

最初は、

データをきれいにまとめる道具

それだけ理解すれば十分です。


■ 次に進むために

次の段階では

  • メソッドをクラスの中に入れる
  • 処理もまとめる

という話になります。

ですが今はまだそこまでいきません。


まとめ

  • 配列だけでは管理が大変
  • 1人分をまとめたい
  • そのための仕組みがクラス
  • クラスは「自分で作れる型」
  • new は実体を作る

ここまで理解できれば、

オブジェクト指向の第一歩は成功です。


訪問数 2 回, 今日の訪問数 1回