動作によるオブジェクトの照合
835 ワード
動作によるオブジェクトの照合
黄国強2017/12/19
C++の勉強はパッケージから始まります.では、何をパッケージしますか?もちろん、データをカプセル化したり、これらのデータを操作したりする関数です.データを常にカプセル化するため、多くの開発者はこの観念をデフォルトで確立します.すなわち、カプセル化はデータをカプセル化します.実はこの観念は間違っている.
地下鉄のブレーキの例を挙げます.
ブレーキには2つの状態があり、通過可能と通過不可です.2つの設計案があります.
設計案1:
設計案2:
上記2つのシナリオのうち,シナリオ2はオブジェクト向けの考え方をより体現しており,また,シナリオ2の3つのクラスにはデータメンバーがなく,3つのクラスがカプセル化されているのが行為である.もう1つのケースは、いくつかのクラスのデータメンバーが完全に一致しているが、行為が完全に異なる場合であり、このような状況もパッケージ行為の思想を体現している.
黄国強2017/12/19
C++の勉強はパッケージから始まります.では、何をパッケージしますか?もちろん、データをカプセル化したり、これらのデータを操作したりする関数です.データを常にカプセル化するため、多くの開発者はこの観念をデフォルトで確立します.すなわち、カプセル化はデータをカプセル化します.実はこの観念は間違っている.
地下鉄のブレーキの例を挙げます.
ブレーキには2つの状態があり、通過可能と通過不可です.2つの設計案があります.
設計案1:
class CGate
{
public:
CGate(void);
~CGate(void);
protected:
bool m_bPass;
};
設計案2:
class CGate
{
public:
CGate(void);
virtual ~CGate(void);
};
class CGatePass : public CGate
{
public:
CGatePass (void);
virtual ~CGatePass (void);
};
class CGateNoPass : public CGate
{
public:
CGateNoPass (void);
virtual CGateNoPass(void);
};
上記2つのシナリオのうち,シナリオ2はオブジェクト向けの考え方をより体現しており,また,シナリオ2の3つのクラスにはデータメンバーがなく,3つのクラスがカプセル化されているのが行為である.もう1つのケースは、いくつかのクラスのデータメンバーが完全に一致しているが、行為が完全に異なる場合であり、このような状況もパッケージ行為の思想を体現している.