C#
 Computer >> コンピューター >  >> プログラミング >> C#

カプセル化とは?C#での実装方法をコード例付きで解説

カプセル化とは

カプセル化(Encapsulation)は、オブジェクト指向プログラミングにおける重要な概念の一つです。クラスの内部データやメソッドを外部から隠蔽し、意図しないアクセスや変更からデータを保護する役割を果たします。

C#では、アクセス修飾子(access specifier)を使用することでカプセル化を実装します。アクセス修飾子は、クラスメンバー(フィールドやメソッド)のスコープ(有効範囲)と可視性を定義するキーワードです。

C#で使える主なアクセス修飾子

  • public:すべてのコードからアクセス可能
  • private:同じクラス内からのみアクセス可能
  • protected:同じクラスおよび派生クラスからアクセス可能
  • internal:同じアセンブリ内からアクセス可能
  • protected internal:同じアセンブリ内、または派生クラスからアクセス可能

privateによるカプセル化の具体例

カプセル化は、privateアクセス修飾子を使うことで分かりやすく理解できます。privateを指定したメンバー変数やメソッドは、他の関数やオブジェクトから隠され、そのクラスの内部からしか操作できなくなります。

次の例では、長方形を表す Rectangle クラスにおいて、length と width の2つの変数に private アクセス修飾子を指定しています。

サンプルコード

using System;

namespace RectangleApplication {
    class Rectangle {
        private double length;
        private double width;

        public void Acceptdetails() {
            length = 20;
            width = 30;
        }

        public double GetArea() {
            return length * width;
        }

        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }

    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

コードのポイント

このプログラムでは、Rectangle クラスの length と width フィールドが private として宣言されているため、Main メソッドを持つ ExecuteRectangle クラスから直接アクセスすることはできません。

代わりに、public として公開されている Acceptdetails()GetArea()Display() メソッドを経由して、これらのデータへ間接的にアクセスします。

このようにデータを隠蔽し、公開メソッドを通じてのみ操作を許可することで、データの整合性が保たれ、クラスの内部実装を後から変更しても外部コードへの影響を最小限に抑えられます。これこそがカプセル化の大きなメリットです。

  1. C#で配列を宣言する方法とは?基本構文とサンプルコードを解説

    C#で配列を宣言するには、次の構文を使用します。 datatype[ ] 配列名; それぞれの構成要素の意味は以下のとおりです。 datatype … 配列に格納する要素のデータ型を指定します。 [ ] … この変数が配列であることを示します。 配列名 … 配列につける名前を指定します。 たとえば、double型の配列「balance」を宣言する場合は次のように書きます。 double[ ] balance; なお、この段階では配列の実体(メモリ領域)はまだ確保されていません。実際に要素を格納するには、new演算子を使って配列をインスタンス化し、要素数を指定する必要があります。 続いて、

  2. Java 9のJShellでカプセル化の概念を実装する方法

    JShell(Java Shell)とはJShell(Java Shell)は、Javaの学習やコードのプロトタイピングに役立つREPL(Read-Eval-Print Loop)型の対話ツールです。入力された宣言、ステートメント、式をその場で評価し、結果を即座に出力します。コマンドラインから起動して手軽に利用できるため、小さなコード断片を素早く試すのに最適です。カプセル化(Encapsulation)とはカプセル化は、Javaにおける重要なオブジェクト指向の概念の一つで、「センシティブな(機密性の高い)データ」をユーザーから隠蔽することを目的としています。これを実現するには、クラス変数をpr