OOPのメリット(再考)
OOPのメリットの「データ型の抽象化」に関してもう少し分かりやすい表現を考えてみた。結局、以下のように考えられる。
- 書く側(supplier側)は、複数のクラスを独立して実装できる
- 呼び出し側(client側)は、違った型のクラス(のオブジェクト)を同じものとして扱える
結局、抽象化とは、中身は変化するが、書き方を同じ書き方ができるようにするというものである。
関連するものを、ばらばらに実装できるので書きやすいし、考えやすい。型の抽象化は偉大である。
Cでポリモルフィズムを表現するには、型の情報をオブジェクトが持つということと、関数ポインタがミソ。
また、JavaやC#のBox化(参照型が必要なところで値型を使うと自動変換してくれる)は、参照型か値型かの情報をオブジェクトが持っていて、言語側が自動的に分岐してくれる。