OOPにおいてカプセル化という概念は非常に重要である.カプセル化を怠っていればどのような悲劇が起こりえるか,以下の例を見れば明白である.
class otaku_no_heya { private: std::vector<gyaruge> todana_no_naka_no_gyaruge; std::vector<cd> todana_no_naka_no_gyaruge_sound_track; public: figure rika_vigne[5], watashi_no_oniityan[6], suzu_no_figure; std::vector<comic> hondana_no_moe_manga; poster kotoko_no_poster, haru_no_ashioto_no_poster, short_circuit_no_poster, clanyad_no_poster[5], clover_hearts_no_poster; std::vector<magazine> manga_time_kirara, manga_time_kirara_charat, dengeki_daiou, dengeki_moeou, colorful_pure_girl; sheet nagisa_tousindai_sheet; calender nagasarete_airantou_no_calender, clover_hearts_no_calender; book cpu_no_tsukurikata, moeru_houritsudokuhon_hibi_no_seikatsu_hen, moeru_houritsudokuhon_digital_jidai_no_houritsu_hen, unix_network_kanri_guide, kaiseki_mahou_shoujo_misaki_chan, moetan_cover_uragaeshi; }; otaku_no_heya my_room; shoubou_setsubi_tenken.intrude(my_room);
このように,カプセル化を怠っていると第3者が容易に実装の詳細を知りえてしまうのである.intrudeメンバ関数の中でどのような恐ろしい事態が発生するのかは想像に難くない.具体的にどのような悲劇が起きるかの例を挙げることすら,今の私には恐ろしくてとてもできない.
ちなみに,つい先ほどこのコードが近々実行されるであろうという通達があった.考えられる悲劇を回避するべくotaku_no_heyaクラスをリファクタリングしようと頑張ったがかなり厳しい.何か役に立つかとASIN:4894712288て読んでみたが,私の今の状況に役に立ちそうなことは一切書いていなかった.さすがのMartin Fowlerも「privateに入れられるメンバの数が制限される」という非常に特殊な状況は想定外だったようである.もうだめぽ.
ちなみに最初に言い忘れていましたが,OOPというのは「オタクのお部屋はパラダイス」の略なのであしからず.