コーディング規約 第3条
■ このスレッドは過去ログ倉庫に格納されています
Data内で使用しているFileのメンバのシグネチャを変えても
Dataに一切影響がないようにするには、>541のような隠蔽だけでは
不十分です。
例えばopen に引数が追加されたら、Data::openも変更が必要です。
一方、Fileの派生クラスまたはラッパークラスを用意し、そちらに定義しておけば
シグネチャ変更の余波は、Dataに到達する前に止められます。
例:
class DataFile : public File { /*省略*/ };
class Data {
public: void SaveToFile(){
m_pFile->open();
m_pFile->write();
m_pFile->close();
}
private: DataFile* m_pFile;
};
このように、「別クラスに抽出」して「隠蔽」する事をカプセル化と言うのであり、
単に隠蔽するだけをカプセル化と言うのじゃありません。
多くの解説書でアクセス制御=カプセル化として説明してますから
誤解するのも無理は無いと思いますがね。
■ このスレッドは過去ログ倉庫に格納されています