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言語