Woman checking her email in a meeting
C#を学び始めた方が最初にぶつかる壁の一つが「クラス」の概念です。プログラミング未経験の方にとって、「クラス」という言葉は少し抽象的で難しく感じるかもしれません。しかし、クラスはC#をはじめとするオブジェクト指向型プログラミングにおいて最も重要な概念の一つです。この記事では、クラスとは何か、どのように使うのか、実例を交えながらわかりやすく丁寧に解説していきます。この記事を読めば、クラスに対する理解が深まり、よりスムーズにC#の学習を進めることができるはずです。
クラス(Class)とは、オブジェクト(物)を定義するための設計図のようなものです。現実世界のモノや概念をプログラム上で表現するために使われます。
たとえば、「車」というクラスを考えてみましょう。すべての車は「色」「メーカー」「速度」といった共通の情報(データ)を持ち、「走る」「止まる」といった共通の動作(機能)を持ちます。これをC#では、クラスという仕組みを使って表現します。
つまり、クラスはデータ(フィールド)と機能(メソッド)をひとまとめにしたものです。
では、なぜクラスが必要なのでしょうか?主な理由は以下の通りです。
実際にC#でクラスを定義する基本的な構文は以下のようになります。
public class Car
{
// フィールド(データ)
public string Color;
public string Maker;
// メソッド(機能)
public void Run()
{
Console.WriteLine("車が走ります");
}
public void Stop()
{
Console.WriteLine("車が止まります");
}
}
この「Car」クラスは、「Color」「Maker」という情報を持ち、「Run」「Stop」という動作ができます。
クラスはあくまで「設計図」なので、それだけでは使えません。実際に動かすには「インスタンス化(実体化)」が必要です。
Car myCar = new Car();
myCar.Color = "赤";
myCar.Maker = "トヨタ";
myCar.Run(); // 出力:車が走ります
このようにして、「myCar」という名前の車オブジェクトを作成し、値を設定して動作させることができます。
インスタンスを作るときに初期値を設定する便利な仕組みが「コンストラクタ」です。
public class Car
{
public string Color;
public string Maker;
// コンストラクタ
public Car(string color, string maker)
{
Color = color;
Maker = maker;
}
public void Run()
{
Console.WriteLine($"{Maker}の{Color}の車が走ります");
}
}
インスタンス化の時に値を渡すことができます。
csharpコピーする編集するCar myCar = new Car("青", "ホンダ");
myCar.Run(); // 出力:ホンダの青の車が走ります
混同しがちですが、「クラス」は設計図で、「メソッド」はクラスの中に定義される処理の単位です。たとえば、人間をクラスとすると、「歩く」「話す」といった動作がメソッドにあたります。
クラスにはアクセス範囲を定義する「アクセス修飾子」があります。
public
:どこからでもアクセス可能private
:クラスの中からのみアクセス可能protected
:クラスとその派生クラスからアクセス可能フィールドやメソッドの安全性や設計の意図を明確にするために重要な要素です。
以下は、複数のクラスを使った簡単なサンプルです。
public class Person
{
public string Name;
public void Introduce()
{
Console.WriteLine($"こんにちは、私は{Name}です。");
}
}
public class Program
{
public static void Main()
{
Person person = new Person();
person.Name = "佐藤";
person.Introduce();
}
}
このように、クラスを使えば人や物などを柔軟にプログラムに取り込むことができます。
初心者がクラスを学ぶ上で意識すべきポイントは以下の通りです。
C#のクラスは、オブジェクト指向プログラミングを理解する上で避けて通れない基礎中の基礎です。はじめは少しとっつきにくいかもしれませんが、「現実のモノをプログラムで表現する」という感覚をつかめれば、クラスの概念も自然と身についていきます。
実際に手を動かして、いくつか自分でクラスを作ってみることで、より理解が深まるでしょう。C#の世界をより楽しく、より力強く進むために、まずはクラスをしっかり身につけていきましょう!