工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++ でのデータのカプセル化

すべての C++ プログラムは、次の 2 つの基本要素で構成されています −

カプセル化はオブジェクト指向プログラミングの概念であり、データとデータを操作する関数を結合し、外部の干渉や誤用から両方を保護します。データのカプセル化により、データ隠蔽という重要な OOP 概念が生まれました .

データのカプセル化 データをバンドルするメカニズム、それらを使用する関数、およびデータの抽象化 インターフェイスのみを公開し、実装の詳細をユーザーから隠すメカニズムです。

C++ は、クラスと呼ばれるユーザー定義型の作成を通じて、カプセル化とデータ隠蔽のプロパティをサポートします。 .クラスに private、protected を含めることができることは既に調査しました。 および一般公開 メンバー。デフォルトでは、クラスで定義されたすべてのアイテムは非公開です。たとえば-

class Box {
   public:
      double getVolume(void) {
         return length * breadth * height;
      }

   private:
      double length;      // Length of a box
      double breadth;     // Breadth of a box
      double height;      // Height of a box
};

変数の長さ、幅、高さは非公開です .これは、Box クラスの他のメンバーのみがアクセスでき、プログラムの他の部分からはアクセスできないことを意味します。これは、カプセル化を実現する 1 つの方法です。

クラスの一部を公開するには (つまり、プログラムの他の部分からアクセスできる)、public の後に宣言する必要があります。 キーワード。 public 指定子の後に定義されたすべての変数または関数は、プログラム内の他のすべての関数からアクセスできます。

あるクラスを別のクラスのフレンドにすることで、実装の詳細が公開され、カプセル化が減少します。理想は、各クラスの詳細をできるだけ他のすべてのクラスから隠しておくことです。

データのカプセル化の例

public メンバーと private メンバーを持つクラスを実装する C++ プログラムは、データのカプセル化とデータの抽象化の例です。次の例を検討してください-

ライブデモ
#include <iostream>
using namespace std;

class Adder {
   public:
      // constructor
      Adder(int i = 0) {
         total = i;
      }
      
      // interface to outside world
      void addNum(int number) {
         total += number;
      }
      
      // interface to outside world
      int getTotal() {
         return total;
      };
   
   private:
      // hidden data from outside world
      int total;
};

int main() {
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

Total 60

上記のクラスは数値を加算し、合計を返します。公開メンバー addNum および getTotal は外界へのインターフェースであり、ユーザーはクラスを使用するためにそれらを知る必要があります。非公開メンバーの合計 外の世界からは隠されていますが、クラスが適切に機能するために必要です。

戦略の設計

私たちのほとんどは、本当にクラス メンバーを公開する必要がない限り、デフォルトでクラス メンバーを非公開にすることを学びました。それは良いカプセル化です .

これはデータ メンバーに最も頻繁に適用されますが、仮想関数を含むすべてのメンバーに等しく適用されます。


C言語

  1. C++ データ型
  2. C++ 演算子
  3. C++ クラスとオブジェクト
  4. C++ クラス テンプレート
  5. Java カプセル化
  6. C++ Char データ型と例
  7. Java-カプセル化
  8. Java-データ構造
  9. C++ のストレージ クラス
  10. C++ データ構造
  11. C++ のポリモーフィズム