1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オブジェクト指向について

Last updated at Posted at 2021-09-23

クラス

C#でオブジェクト指向プログラミングする上での基礎。

namespace Material
{
    class Material
    {
        //プロパティ 
        public int Code { get; private set; }
        public string Name { get; private set; }
        public int Mass { get; private set; }

        //コンストラクタ 
        public Material(int code, string name, int mass)
        {
            this.Code = code;
            this.Name = name;
            this.Mass = mass;
        }

        //メソッド 
        public int GetMass()
        {
            return Mass * 2;
        }
    }
}

①プロパティ

 
setアクセサ
 
クラスの外部からの値の変更の処理。
例では、private(非公開)のため、
コンストラクタ以外でプロパティの値が
設定できないようになっています。  
 
getアクセサ
 
クラスの外部からの値の取得の処理。

②コンストラクタ

クラス名と同じ名前の特殊なメソッド。
インスタンスを初期化するためのメソッドとなります。

③メソッド

処理の塊。

オブジェクトの利用

namespace Material
{
    public class Test
    {
        static void Main(string[] args)
        {
            //インスタンスの作成 
            Material materialA = new Material(1,"物質A",100);
            //プロパティの利用 
            int mass = materialA.Mass;
            //メソッドの利用 
            int massDouble = materialA.GetMass();
            Console.WriteLine(mass);
            Console.WriteLine(massDouble);
        }
        
    }
}

①インスタンスの作成

newをすることでメモリにmaterialAのオブジェクトが作成されます。
この時、Materialクラスのコンストラクタが呼び出され、引数の値がコンストラクタに渡されます。

②プロパティの利用

Materialクラスに定義されているMassプロパティの値を取得します。

③メソッドの利用

Materialクラスに定義されているGetMassメソッドで計算された値が返ってきます。

※サンプルコードでの出力結果は以下となります。

Console.WriteLine(mass);の結果が100
Console.WriteLine(massDouble);の結果が200

継承

継承とは

すでに定義されているクラスをもとに、

その性質を受け継ぎ、拡張や変更を加えて

新たなクラスを作成(派生する。ともいう)

    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }

        public string GetProfile()
        {
            return "氏名:" + FirstName + LastName + Environment.NewLine + "年齢:" + Age;
        }
    }

上記のPersonクラスを継承し、

社員番号と所属部署を加えた

Employeeクラス(社員クラス)を定義します。

    //
    public class Employee : Person
    {
        public int Id { get; set; }
        public string DivisionName { get; set; }
    }

①クラス名にコロン(:)を付け、その後に継承元のクラスを指定します。

 
継承元
 
スーパークラスまたは「基底クラス」
 
継承して定義したクラス
 
サブクラスまたは「派生クラス」
    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee
            {
                Id = 100,
                DivisionName = "開発部",
                FirstName = "テスト",
                LastName = "太郎",
                Age = 34,

            };
            Console.WriteLine("部署:{0} ID:{1}", employee.DivisionName, employee.Id
                + "のプロフィール" + Environment.NewLine + employee.GetProfile());
        }
    }

継承を使えばEmployeeクラスを1から作る必要がなくなります。
継承は、一般的に「is a関係」が成り立つときに使用されます。
(社員は人である、三角形は図形である・・・等)

参考文献
この記事は以下の書籍を参考にして執筆しました。

実戦で役立つ
C#プログラミングのイディオム/定石&パターン

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?