動作によるオブジェクトの照合

835 ワード

動作によるオブジェクトの照合
黄国強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つのケースは、いくつかのクラスのデータメンバーが完全に一致しているが、行為が完全に異なる場合であり、このような状況もパッケージ行為の思想を体現している.