【C#】クラスの作成方法と使い方【初心者向け解説】

C#,プログラミング言語

この記事ではC#におけるクラスの作成方法と使い方ついて解説します。

クラスはC#の重要な概念「オブジェクト指向」の肝となる考え方です。
C#プログラミングでとても大切な考え方になります。しっかり理解しましょう。

本記事をご覧頂くと下記内容が理解できます。

この記事で学べること
C#のクラスの概念と使い方

クラスの作成方法
クラス作成時の注意点
・クラスのメリット

筆者

疑問点や質問には何でも答えようと思っています。
この記事の不明点はこちらからお問い合わせ下さい

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

C# クラスとは?概念と使い方を解説

この章ではクラスの使い方と概念についてお話しします。

C# クラスの概念

クラスとは「データ」と「処理」を1つにまとめたものです。
現実社会をデータと処理に分け意味のあるひと固まりにまとめたものが「クラス」です。

例えば車をクラスにした「車クラス」があると仮定します。
この車クラスをデータと処理に分けると下記のようになります。

データと処理から構成されるのが「クラス」

車は上記のようにデータと処理に分けることができます。

車クラス
◆データ◆
・燃料/走行距離/最高速度/幅/長さ/車種 etc
◆処理◆
・走行する/給油する/ライトを点灯する etc

クラスはこのように、現実社会の物体をデータと処理に整理したもの
という認識をして頂ければ幸いです。

車クラス以外の例は下記の通りです。

クラス例
・勇者クラス(データ:HP,MP,属性、処理:攻撃,守る,逃げる)
・店舗クラス(データ:住所,広さ,売上、処理:開店する,閉店する)
・データベースのテーブルをクラスにまとめる。

上記例の勇者クラスはRPGなどでよく見かけます。
皆さんにもイメージしやすいのではないでしょうか?

このようにクラスは、「データ」と「処理」を一つにまとめたものなのです。

クラスの詳しい概念はこちらを参照してください。

C# クラスのプログラム実装方法

車クラスのプログラムを見て実際の使い方を確認してみましょう。

//車クラス。データ(変数)にfuelとmileageを持つ。処理(メソッド)にRunとRefuelingを持つ
public class Car
{
    int fuel; //燃料
    double mileage; //走行距離

    public void Run(double distance)
    {
        //クラスのメソッドを生成する。
        this.mileage = this.mileage - distance;
        Console.WriteLine(distance + "km走行しました。");
    }
    public void Refueling(int fuel)
    {
        this.fuel += fuel;
        Console.WriteLine(fuel + "L給油しました");
    }
    public Car()
    {
        // コンストラクタ(インスタンス化時に実行される。)
        this.fuel = 30;
        this.mileage = 0.0;
    }
}

上記のプログラム例のように
int fuel; //燃料
double mileage; //走行距離
と、データは変数として宣言。
int型変数やdouble型変数、String型変数などで定義します。

一方処理はメソッドとして宣言します。
public void Run(double distance){}
public void Refueling(int fuel){}

クラスの実装方法
public クラス名(){
変数の宣言
メソッド(){}
public クラス名(){}

}

メソッドについて知りたい方はこちら

このようにクラスを実装するときは、データは変数で宣言し、処理はメソッドを作成します。

C# クラスからオブジェクトを作成する

クラスを使用するためには「オブジェクトを生成する」必要があります。

static void Main(string[] args)
{
	//メイン処理。
    Car car1 = new Car(); //クラスからオブジェクト(車)を作成
    Car car2 = new Car();
    Car car3 = new Car();
}

//車クラス。データ(変数)にfuelとmileageを持つ。処理(メソッド)にRunとRefuelingを持つ
public class Car
{
    int fuel; //燃料
    double mileage; //走行距離

    public void Run(double distance)
    {
        //クラスのメソッドを生成する。
        this.mileage = this.mileage - distance;
        Console.WriteLine(distance + "km走行しました。");
    }
    public void Refueling(int fuel)
    {
        this.fuel += fuel;
        Console.WriteLine(fuel + "L給油しました");
    }
    public Car()
    {
        // コンストラクタ(インスタンス化時に実行される。)
        this.fuel = 30;
        this.mileage = 0.0;
    }
}

上記のプログラムはクラスからオブジェクトを生成するプログラムです。

クラスを使用するためにはまずオブジェクト(物体)を生成します。

オブジェクト(物体)とは、クラスから生み出される物体一つ一つ
イメージは下記の通りです。

車クラスからオブジェクトを生成する

車のデータと処理を保存した「車クラス(public class Car)」からオブジェクト(物体)を生成しています。

クラスという現実社会をデータと処理に分けたいわば設計図を用いて、オブジェクトを1つ1つ生成
オブジェクトを作ることで初めて、メソッド(処理)を呼び出せ、クラス内の変数(データ)を使用できます。

このようにクラスからオブジェクトを生成することをインスタンス化と言います。

クラスからオブジェクトを生成する方法
クラス名 変数名1 = new クラス名();
クラス名 変数名2 = new クラス名();※オブジェクトは複数生成できる。

C# クラスのコンストラクタとは?

クラスのコンストラクタについても解説します。

コンストラクタとは、オブジェクトを生成した瞬間に実行されるメソッドです。
オブジェクト内の変数を初期化するために使用されます。

クラスのデータ(変数)を初期化するのがコンストラクタ
static void Main(string[] args)
{
	//メイン処理。
    Car car1 = new Car(); //クラス(設計図)からオブジェクト(車)を作成
}

//車クラス。データ(変数)にfuelとmileageを持つ。処理(メソッド)にRunとRefuelingを持つ
public class Car
{
    int fuel; //燃料
    double mileage; //走行距離

    public Car()// コンストラクタ(インスタンス化時に実行される。)
    {
        this.fuel = 30;
        this.mileage = 0.0;
    }
}

コンストラクタは上記プログラムのpublic Car(){}内の処理を指します。
メイン処理4行目で「Car car1 = new Car()」を実行した際にコンストラクタが呼び出され、
this.fuel = 30;
this.mileage = 0.0;
が実行され、変数car1のデータに値が設定されます。

コンストラクタ
public クラス名(){初期化する変数などを記載}

C# クラスのメリット

クラスのメリットは下記の通りです。

クラスのメリット
・現実世界の物体をデータと処理にまとめ、プログラム化することができる。
・意味あるひと固まりなので、データの意味が明確になる。

・データをまとめて処理できる
・オブジェクトを1つずつ作れる
・DBのテーブル構造と互換性が良い

C# クラスを使用したプログラムの実装

実際にプログラムを動作させ、クラスの処理を確認してみましょう。
皆さんもプログラムを実行させてください。

プロジェクトの作成方法はこちら(左記サイトの①プロジェクトの作成をご確認ください) 

C# クラスを使ったプログラムの実装

C# クラスを使ったプログラム

プログラムのコピペは下記から

using System;

namespace LecturerBeginner
{
    class Program
    {
        static void Main(string[] args)
        {
            Car car1 = new Car(); //クラス(設計図)からオブジェクト(車)を作成
            Car car2 = new Car(); //オブジェクトは何個でも作成可能。
            car1.Refueling(40);//オブジェクトからメソッドを呼び出す。メソッドの処理が実行される。
            car1.Refueling(40);
            car2.Refueling(40);//オブジェクト毎にfuel(燃料)の値が違う。

            car1.Run(23.4); //オブジェクトからメソッドを呼び出す。メソッドの処理が実行される。
        }

        public class Car
        {
            int fuel; //燃料
            double mileage; //走行距離

            public void Run(double distance)
            {
                //クラスのメソッドを生成する。
                this.mileage = this.mileage - distance;
                Console.WriteLine(distance + "km走行しました。");
            }
            public void Refueling(int fuel)
            {
                this.fuel += fuel;
                Console.WriteLine("合計" + this.fuel + "Lです");
            }
            public Car()
            {
                // コンストラクタ(インスタンス化時に実行される。)
                this.fuel = 30;
                this.mileage = 0.0;
            }
        }
    }
}

上記のプログラムを実行すると下記の結果が得られます。

プログラムの実行方法

プログラムを実行する際はビルドをした後に「デバック」⇒「デバックなしで開始」を選択。

C# クラスを使ったプログラムの実行結果

プログラムの実行方法はこちら(左記サイトの③プロジェクトの実行をご確認ください)

C# クラスを用いたプログラムの解説

この項では「C# クラスを用いたプログラムの実装」のプログラム解説をします。

クラス(設計図)の実装方法

public class Car
{
    int fuel; //燃料
    double mileage; //走行距離

    public void Run(double distance)
    {
        //クラスのメソッドを生成する。
        this.mileage = this.mileage - distance;
        Console.WriteLine(distance + "km走行しました。");
    }
    public void Refueling(int fuel)
    {
        this.fuel += fuel;
        Console.WriteLine("合計" + this.fuel + "Lです");
    }
    public Car()
    {
        // コンストラクタ(インスタンス化時に実行される。)
        this.fuel = 30;
        this.mileage = 0.0;
    }
}

上記プログラムでクラスを実装しています。

データの定義
int fuel; //燃料
double mileage; //走行距離

メソッドの実装
//走行するメソッド
public void Run(double distance)
{
//クラスのメソッドを生成する。
this.mileage = this.mileage – distance;
Console.WriteLine(distance + “km走行しました。");
}
//給油するメソッド
public void Refueling(int fuel)
{
this.fuel += fuel;
Console.WriteLine(“合計" + this.fuel + “Lです");
}

コンストラクタ
public Car()
{
// コンストラクタ(インスタンス化時に実行される。)
this.fuel = 30;
this.mileage = 0.0;
}

上記のようにクラスを実装する際は「データの定義」「メソッドの実装」「コンストラクタ」をプログラムに記載します。

クラスからオブジェクトを生成する

Car car1 = new Car(); //クラス(設計図)からオブジェクト(車)を作成
Car car2 = new Car(); //オブジェクトは何個でも作成可能。

実装したクラスからオブジェクトを生成しています。

クラスからオブジェクトを生成する際は、
クラス名 変数名 = new クラス名();
と記載します。

ここではcar1とcar2とオブジェクトを2つ生成しています。

クラスからオブジェクトを生成する(インスタンス化)
Car car1 = new Car(); //車オブジェクトを1つ生成。
Car car2 = new Car(); //二つ目の車オブジェクトを生成。※この2つは別のデータ。

オブジェクト内のメソッドを実行する

static void Main(string[] args)
{
    Car car1 = new Car(); //クラス(設計図)からオブジェクト(車)を作成
    Car car2 = new Car(); //オブジェクトは何個でも作成可能。
    car1.Refueling(40);//オブジェクトからメソッドを呼び出す。メソッドの処理が実行される。
    car1.Refueling(40);
    car2.Refueling(40);//オブジェクト毎にfuel(燃料)の値が違う。

    car1.Run(23.4); //オブジェクトからメソッドを呼び出す。メソッドの処理が実行される。
}

上記プログラムでは、クラスから生成したオブジェクトのメソッドを呼び出しています。

オブジェクトからメソッドを実行する
car1.Refueling(40);
car1.Refueling(40);
car2.Refueling(40);
car1.Run(23.4);

上記プログラムをイメージ化したものが下記の画像です。
イメージを見て処理の内容を確認してみましょう。

オブジェクトからメソッドを実行する(メイン処理)
C# クラスを使ったプログラムの実行結果

クラスの使い方まとめ

以上がC#におけるクラスの使い方でした。

クラスとは
・現実社会の物体をデータと処理に分割したもの。
・オブジェクトを1つずつ生成できる。
・言わば設計図のようなもの。
・データをまとめたい時に使用される。

プログラミングにおいて頻繁に実装するデータ構造になるので理解しておきましょう。

以上です。お疲れさまでした。

筆者

C#プログラミング始めやすいように下記にC#を学ぶための完全ガイドを作成しています。
気軽にC#の勉強を始めてみてください!!

C#プログラミングを学んでみたい方向けの完全ガイドを下記に掲載します。
⇒C#初心者向けプログラミング完全ガイド

お時間ある方はカリキュラムを学んでみましょう。

プログラミングで挫折しかけている方へ

おすすめのC#教材(補助教材として)

C#,プログラミング言語

Posted by 9noike