encapsulation c
C ++でのカプセル化の完全な概要:
抽象化については、前のチュートリアルで詳しく説明しました。抽象化は、私たちが知っているように、実装の詳細をユーザーから隠し、ユーザーが必要とするインターフェースのみを公開します。
このチュートリアルでは、OOPのさらに別の重要な機能であるカプセル化について説明します。抽象化とカプセル化は密接に関連しています。実際、カプセル化されたコードは抽象化に役立つと言えます。言い換えれば、カプセル化と抽象化は密接に結びついています。
=> 専門家による完全なC ++コースについては、こちらをご覧ください。
初心者のためのコンピュータプログラムを作成する方法
したがって、カプセル化と抽象化の間には非常に細い線があるため、これら2つの概念について一緒に説明できます。
学習内容:
カプセル化とは何ですか?
データのカプセル化とは、データと、このデータを操作する関数またはメソッドを1つのユニットにバインドして、外部からの干渉や誤用から保護するプロセスを指します。
これは重要なオブジェクト指向プログラミングの概念であり、「」として知られるさらに別のOOP概念につながります。 データの隠蔽 」。カプセル化はデータとそのメンバーを隠しますが、抽象化は必要な詳細またはインターフェースのみを外の世界に公開します。
ある意味で、抽象化は隠されたデータの「抽象的なビュー」を外の世界に提示します。したがって、カプセル化と抽象化は密接に関連しているという声明をすでに出しました。
C ++のクラスは、データメンバーをバンドルするクラスであり、これらのデータメンバーを操作する関数は、private、public、protectedなどのアクセス指定子とともにカプセル化を表します。クラスとオブジェクトに関する以前のチュートリアルで、アクセス指定子についてはすでに説明しました。
また、デフォルトでクラスメンバーがプライベートであることもわかっています。クラスメンバーをプライベートとして宣言し、クラスメンバーにアクセスするメソッドをパブリックとして宣言するとき、私たちは本当にカプセル化を実装しています。同時に、パブリックメソッドの形でデータの抽象的なビューを外の世界に提供します。
英語吹き替えの無料アニメストリーミングサイト
カプセル化の実装
C ++でのカプセル化は、データとこのデータを操作する関数をバンドルするクラスとして実装されます。ほとんどの場合、データはプライベートとして宣言されているため、クラス外からはアクセスできません。メソッドまたは関数はパブリックとして宣言されており、クラスのオブジェクトを使用してアクセスできます。
ただし、プライベートメンバーに直接アクセスすることはできません。これはデータ隠蔽と呼ばれます。これが行われると、データは保護され、データが宣言されている特定のクラスの関数によってのみアクセスできます。
// Example program #include #include using namespace std; //example class to demonstrate encapsulation class sampleData{ int num; char ch; public: //getter methods to read data values int getInt() const{ return num; } char getCh() const{ return ch; } //setter methods to set data values void setInt(int num) { this->num = num; } void setCh(char ch){ this->ch = ch; } }; int main() { sampleData s; s.setInt(100); s.setCh('Z'); cout<<'num = '< 出力:
num = 100
ch = Z

上記のプログラムでは、2つのメンバー変数をgetterメソッドとsetterメソッドとともにクラスにバンドルしています。これはカプセル化の例です。
外の世界からアクセスできないように、2つの変数(numとch)をプライベート変数として宣言しました。これらは、パブリックとして宣言した関数にのみアクセスできます。したがって、クラス内のプライベート変数としてデータメンバーを非表示にしました。
C ++でのカプセル化をよりよく理解するために、別の例を見てみましょう。
#include #include using namespace std; //Accounts class: includes salary info for a particular employee class Accounts{ int empId; double salary, basic, allowances, deductions; public: Accounts(int empId):empId(empId){} //read salary info void readEmployeeInfo(int empId){ cout<<'Enter basic for the employee'< basic; cout<>allowances; cout<>deductions; } //calculate salary double calculateSalary(){ salary = basic+ allowances - deductions; return salary; } //display details void display(){ salary = calculateSalary(); cout<<'Employee: '< 出力:
従業員の基本を入力1:10000
手当:4324.43
控除:1000
従業員:1
給与:13324.4
java配列を逆にする方法

これは、カプセル化のさらに別の例です。上に示したように、アカウントデータとこのデータを操作するすべての関数を単一のクラスAccountsにバンドルするクラスAccountsがあります。 main関数では、このクラスのオブジェクトを作成し、関数にアクセスして必要な情報を取得できます。
他のクラスが従業員の詳細がアカウントデータにアクセスしたいと言っている場合、直接アクセスすることはできません。クラスAccountsのオブジェクトを作成する必要があり、公開されているアイテムにのみアクセスできます。このように、カプセル化を使用して、データのアクセス制御を保証し、データの整合性も保証します。
カプセル化と抽象化の違い
抽象化とカプセル化は密接に結びついています。カプセル化は、データとそのデータを操作するメソッドを一緒にバンドルすることにより、抽象化を支援します。
カプセル化 抽象化 データを非表示にします 実装を非表示 データとメソッドをバンドルします 必要なものだけを公開する抽象的なインターフェースをユーザーに提供します 抽象化の支援 コードの再利用とセキュリティを支援します。 データメンバーとメソッドへのアクセスを定義するアクセス指定子を持つクラスとして実装されます インスタンス化できない抽象クラスおよびインターフェースとして実装されます。
結論
カプセル化は、データを非表示にする方法を提供するため、OOPの最も重要な機能の1つです。これにより、データの安全性が高まり、悪意のある使用からデータが保護されます。
カプセル化は抽象化に役立つため、必要なインターフェイスのみをエンドユーザーに公開し、それに応じて他の詳細を非表示にすることができます。このチュートリアルでは、C ++での抽象化とカプセル化の概念について説明しました。
次のチュートリアルでは、C ++での継承について例を挙げて説明します。
=> 独占的なC ++トレーニングチュートリアルシリーズについては、こちらをご覧ください。
推奨読書