C#入門⑱ クラスとは ── データと処理を、ひとつにまとめる
前回まで、変数・制御構文・メソッドと、プログラミングの基礎をやってきました。
今回からは、プログラミング第三の山場、オブジェクト指向に入ります。その入り口、クラスです。
ここは多くの人がつまずくところですが、あせらず、ひとつずつ進めば大丈夫です。
クラスとは、関係するデータと処理を、ひとつにまとめた「設計図」です。
バラバラのデータを、まとめたい
たとえば、「人」の情報をプログラムで扱うとします。名前、年齢、身長。今までの知識だと、こう書きます。
string name = "山田";
int age = 20;
double height = 170.5;
3つの変数で、ひとりの人を表しています。でも、2人目、3人目が出てくると、どうでしょう。
string name2 = "田中";
int age2 = 25;
double height2 = 165.0;
name2、age2… と、変数がどんどん増えて、ごちゃごちゃになります。「どの変数が、誰のものか」が分からなくなってきます。
「名前・年齢・身長は、ひとりの人のものとして、まとめて扱いたい」。そう思いますよね。それを実現するのが、クラスです。
クラスは「設計図」
クラスは、よく「設計図(せっけいず)」にたとえられます。
たとえば「人」という設計図を作ります。「人には、名前があって、年齢があって、身長がある」と、どんなデータを持つかを決めた設計図です。
この設計図さえあれば、そこから「山田さん」「田中さん」と、具体的な人を何人でも作れます。たい焼きの型(設計図)から、たい焼きを何個でも焼けるように。
設計図そのものは、たい焼きではありません。あくまで「型」です。この区別が、後で大事になります。
書き方を見てみる
「人」を表すクラスを作ってみます。
class Person
{
public string Name;
public int Age;
public double Height;
}
形を見てみましょう。
class Person… 「Person(人)」という名前のクラス(設計図)を作る{ }の中に、このクラスが持つデータを書くpublic string Name;… 「Name(名前)という文字列のデータを持つ」
これで、「人は、名前・年齢・身長を持つ」という設計図ができました。
(public は「外から使えますよ」という印です。今は、おまじないだと思って大丈夫です。)
設計図から、実物を作る
設計図だけでは、まだ「人」はいません。設計図から、実物を作ります。
Person taro = new Person();
taro.Name = "山田";
taro.Age = 20;
taro.Height = 170.5;
Console.WriteLine(taro.Name); // 山田
new Person()… Person の設計図から、実物をひとつ作るtaro… その実物につけた名前taro.Name = "山田"… taro の名前に「山田」を設定(ドット.でつなぐ)
taro.Name、taro.Age のように、「だれの、なに」という形で、データがきれいにまとまりました。バラバラの name2、age2 とは大違いです。
そして、設計図はひとつでも、実物は何人でも作れます。
Person hanako = new Person();
hanako.Name = "田中";
hanako.Age = 25;
同じ設計図から、taro と hanako、別々の人ができました。
なぜ、まとめると良いのか
クラスの良いところは、「関係するものが、ひとつにまとまる」ことです。
名前・年齢・身長は、バラバラの変数ではなく、「ひとりの人のデータ」として、ひとまとめになりました。
プログラムが大きくなるほど、これが効いてきます。「商品」「注文」「お客さん」…現実のものを、そのままクラスとして表現できる。現実の世界を、プログラムの中に持ち込める。それがオブジェクト指向の発想です。
つまずきポイント
ここでいちばん大事なのが、「設計図」と「実物」は違うということです。
class Person { ... } // これは設計図(型)。まだ人はいない
Person taro = new Person(); // new して、初めて実物ができる
class Person を書いただけでは、まだ誰も存在しません。たい焼きの型を作っただけで、たい焼きはまだ焼けていない状態です。
new して初めて、実物が生まれます。この「設計図」と「実物」の区別が、次回以降の土台になります。今はっきりさせておきましょう。
まとめ
クラスは、関係するデータと処理をまとめた設計図。
class Person // 設計図を作る
{
public string Name;
public int Age;
}
Person taro = new Person(); // 設計図から実物を作る
taro.Name = "山田"; // ドットでアクセス
- バラバラのデータを、ひとつにまとめられる
- クラスは「設計図」、
newで作るのが「実物」 - ひとつの設計図から、実物は何個でも作れる
次回は、クラスが持つデータ(フィールド)と、それを安全に扱う プロパティ の話です。

