【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 は実体を作る
ここまで理解できれば、
オブジェクト指向の第一歩は成功です。



ディスカッション
コメント一覧
まだ、コメントがありません