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

C++におけるカプセル化の基本と実装方法

カプセル化(Encapsulation)とは、データとそのデータを操作するメソッドを1つのコンポーネントにまとめ、外部からの干渉から保護するオブジェクト指向プログラミングの重要な概念です。カプセル化を実現することで、「データ隠蔽(Data Hiding)」という非常に重要な概念が生まれます。

C++では、ユーザー定義型であるクラスを使用してカプセル化を実現します。クラスは、データメンバとそれらを操作するメンバ関数をひとまとめにしたものです。

以下に、C++のクラスを使ってカプセル化を表現するサンプルプログラムを示します。

実装例

#include <iostream>
using namespace std;
class EncapsulationDemo {
    private:
    int length, breath, height;
    public:
    void setValues(int l, int b,int h) {
        length = l;
        breath = b;
        height = h;
    }
    void calcVolume() {
        cout<<"Length = " << length << endl;
        cout<<"Breath = " << breath << endl;
        cout<<"Height = " << height << endl;
        cout<<"Volume = " << length*breath*height << endl;
    }
};
int main() {
    EncapsulationDemo obj;
    obj.setValues(5, 3, 2);
    obj.calcVolume();
    return 0;
}

出力結果

Length = 5
Breath = 3
Height = 2
Volume = 30

プログラムの解説

上記のプログラムでは、変数とメソッドが「EncapsulationDemo」という1つのクラスにまとめられており、カプセル化の概念が実証されています。

クラス内の lengthbreathheightprivate 変数として宣言されているため、クラス外部から直接アクセスすることはできません。一方、setValues()calcVolume()public 関数として定義されており、private 変数の初期化や、長さ・幅・高さを掛け合わせた体積の計算を行います。該当するコードは以下の通りです。

class Encapsulation {
    private:
    int length, breadth, height;
    public:
    void setValues(int l, int b,int h) {
        length = l;
        breadth = b;
        height = h;
    }
    void calcVolume() {
        cout<<"Length = " << length << endl;
        cout<<"Breadth = " << breadth << endl;
        cout<<"Height = " << height << endl;
        cout<<"Volume = " << length*breadth*height << endl;
    }
};

main() 関数では、まず Encapsulation 型のオブジェクト obj を定義します。次に setValues() を呼び出して値 5、3、2 を設定し、最後に calcVolume() を使って各値と体積を表示します。該当するコードは以下の通りです。

Encapsulation obj;
obj.setValues(5, 3, 2);
obj.calcVolume();

カプセル化のメリット

カプセル化を活用することで、以下のような利点が得られます。

  • データの保護: メンバ変数を private にすることで、クラス外部からの不正なアクセスや意図しない変更を防ぐことができます。
  • 保守性の向上: データへのアクセスが公開されたメソッド経由に限定されるため、内部実装を変更しても外部コードへの影響を最小限に抑えられます。
  • モジュール性の向上: データと操作が1つの単位にまとまることで、再利用性が高く整理されたコード設計が可能になります。
  1. C++で質素数(Frugal Number)を判定する方法【サンプルコード付き】

    この記事では、正の整数 N が与えられたときに、その数が質素数(Frugal Number)であるかどうかを判定するプログラムを C++ で作成する方法を解説します。 質素数とは? 質素数(FRUGAL NUMBER)とは、その数自身の桁数が、素因数分解による表現の桁数よりも厳密に大きい数のことです。 例:625 の場合 625 を素因数分解すると 54 となります。 625 自身の桁数:3 桁 54 の表現の桁数:2 桁 3 は 2 よりも厳密に大きいため、625 は質素数です。 最初のいくつかの質素数:125、128、243、256、343、512、625 など 問題を理解するための具

  2. C++で五胞体数(ペンタトープ数)を求める方法

    五胞体数とは? 五胞体数(ペンタトープ数)は、パスカルの三角形の第5の対角線上に現れる数列として知られています。この数列を定義するには、パスカルの三角形に少なくとも5つの数が必要となるため、数列の最初の数はパスカルの三角形の第4行である 1 4 6 4 1 から始まります。 本チュートリアルでは、n番目の五胞体数を求める方法を解説します。まずは具体的な例を見てみましょう。 入力 : 1出力 : 1入力 : 4出力 : 35 以下の図から出力を確認できます。 この問題は数列に関するものなので、解法ではまず数列のパターンを見つけることから始めます。 解法のアプローチ このプログラムでは、数列の