C# オブジェクト指向プログラミング①

こんにちは、ゆたんぽです。

今回は、C#の記事の続きで「オブジェクト指向プログラミング」について詳しく記事を書いていきます。

オブジェクト指向プログラミングは、プログラミングのパラダイムの1つで、プログラムをオブジェクト(物)の集まりとして扱うことを特徴とします。

C#では、オブジェクト指向プログラミングを使って、大規模なプログラムを効率的に開発することができます。

この記事では、C#におけるオブジェクト指向プログラミングについて詳しく解説します。

クラスとオブジェクト

C#のオブジェクト指向プログラミングでは、クラスという概念が重要です。

クラスとは、同じ種類のオブジェクトを生成するための設計図のようなものです。

たとえば、クラスを定義することで、「人」というオブジェクトを生成することができます。クラスには、オブジェクトが持つ属性(プロパティ)や操作(メソッド)を定義します。属性は人で説明すると年齢や性別などその人を表す性質みたいなもので、操作は「こんにちは!と話す」や「10歩歩く」など人でいえば行動を表すことができます。

一方、オブジェクトとは、クラスから生成された実体のことです。たとえば、「人」というクラスから生成された「田中太郎」というオブジェクトがあったとします。このオブジェクトは、クラスで定義された属性や操作を持っています。

例えば、属性は年齢:30歳、性別:男で、操作は、「挨拶をする」、「散歩する」などを持つことができます。

まさに、現実世界のものをプログラム上で表すことができるのです。

そのため、最初オブジェクト指向をわからなければ、現実世界をプログラム上で表すことなんだと大まかに理解して進めばよいかと思います。

私はこの説明が一番腑に落ちました。

クラスの定義

C#でクラスを定義するには、classキーワードを使います。以下は、「人」というクラスを定義する例です。

class Person
{
    public string Name;
    public int Age;
    public void SayHello()
    {
        Console.WriteLine("こんにちは、私は" + Name + "です。");
    }
}

上記の例では、Personというクラスを定義しています。このクラスには、NameとAgeというプロパティと、SayHelloというメソッドが定義されています。

プロパティとは、前日した通りオブジェクトが持つ属性のことです。上記の例では、NameとAgeという2つのプロパティを定義しています。人は必ず名前と年齢を持っていますのでその属性を表すものです。

publicキーワードが付いているため、どこからでも情報をとれる状態になっています。

メソッドとは、オブジェクトが持つ操作のことです。上記の例では、SayHelloというメソッドを定義しています。このメソッドは、Consoleに「こんにちは、私は○○です。」というメッセージを出力するものです。○○に名前を入れることができるようになっています。メソッドには、引数を指定することもできます。

オブジェクトの生成と利用

クラスを定義したら、実際にオブジェクトを生成して使うことができます。以下は、「人」というクラスからオブジェクトを生成する例です。

Person person = new Person();
person.Name = "田中太郎";
person.Age = 30;
person.SayHello();

上記の例では、Personクラスからpersonというオブジェクトを生成しています。その後、NameとAgeの値を設定し、SayHelloメソッドを呼び出しています。

Person person = new Person()において、new を使うことでPersonで定義したクラス(設計図)をpersonという名前で生成することができます。

person.Name = “田中太郎”で、Nameプロパティに名前を入れています。

以下も同様です。

最後にSayHelloメソッドを読み出して自分の名前を読み上げることを行います。

このようにしてクラスを利用することができます。

継承

C#では、既存のクラスを拡張して新しいクラスを作ることができます。これを継承と呼びます。継承を使うと、既存のクラスの機能を引き継ぎつつ、新しい機能を追加することができます。

継承は、既存のクラスから新しいクラスを作成することによって実現されます。新しいクラスは、既存のクラスを「基本クラス」として指定します。新しいクラスは、基本クラスのフィールド、プロパティ、およびメソッドを自動的に継承し、それらを利用できます。

以下は、Personクラスを継承した、Studentクラスを定義する例です。

class Student : Person
{
    public string SchoolName;
    public void Study()
    {
        Console.WriteLine("勉強します。");
    }
}

上記の例では、Personクラスを継承したStudentクラスを定義しています。Studentクラスには、SchoolNameというプロパティと、Studyというメソッドが追加されています。

これらは一見、Personクラスで定義したNameやAgeのプロパティ、SayHelloメソッドがないように見えますが、実際に利用することができます。

継承によって、クラスの階層構造を作成できます。これにより、類似した機能を持つクラスをグループ化し、コードをより簡単に管理できます。また、コードの再利用性も向上します。例えば、基本クラスに一般的な機能を実装し、それを複数の派生クラスで再利用することができます。

まとめ

今回は、オブジェクト指向プログラミングについて説明してきました。

オブジェクト指向とは何か、クラスの定義、使い方、継承まで説明してきました。

ここまでで基礎的なことは理解できるようになると思います。

私がC#始める際に一番理解が難しかったのがこのオブジェクト指向です。プログラミング言語もあまり学習してこなかった私には何の利点があるのかわかりませんでした。

しかし、現在はこのオブジェクト指向によって、効率的にプログラムを設計することができていますので、ぜひ利用していただきたいです。

オブジェクト指向には、「ポリモーフィズム、カプセル化」の部分で、すごく利点がわかるようになるので、次回以降で説明していきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です