『オブジェクト指向でなぜつくるのか』を読んで


オブジェクト指向でなぜつくるのか』を読んだ。今まで自分自身、オブジェクト指向に関しては、わかっているつもりだがなんとなくすっきりしないモヤモヤっとした部分があった。この機会にもう一度整理しておきたいということで読んでみた。


オブジェクト指向に関する入門書、導入書としては今まで読んだ中で一番分かりやすかった。特に分かりやすい説明でなるほどと感じたのが以下の2点。


著者は、オブジェクト指向は現実世界をそのままソフトウェアとして表現したものではないということを述べている。現実世界の表現として例えようとすると逆に混乱のものだと。



私自身も、今まで現実世界をオブジェクトとして表そうとした場合にこの違和感、ギャップみたいなものを感じていた。特に紛らわしいのは、継承を実際の親子関係として表現してしまったりする場合オブジェクト指向では、継承されると親クラスの性質は小クラスにすべて引き継がれるが、実際の世界では、子供を産んだとしても親の性質や能力がすべて受け継がれるというわけではない。また、オブジェクト指向の世界ではクラス定義を元にインスタンスを生成することで新たな物体が産まれるため、この例えを使ってしまうと、クラスの定義の継承とオブジェクトの生成がごっちゃになってしまう


ただ、役割分担という視点では現実世界と必ずしも異なるものではない。現実世界と同じ部分、異なる分がどこであるのかを明確に意識することでオブジェクト指向の設計がしやすくなるのではないかと思う。


また、3章では、プログラミングの進化の過程でいかにしてオブジェクト指向プログラミングが産まれたかということが記述されているが、この説明がとても良かった。機械語からアセンブリ言語、高級言語オブジェクト指向言語へと進化していく中で、どのような課題があって、それがどのように改善されていったのかが良く分かった。この流れを確認することにより、今後のプログラミング言語の発展の方向性、全体の流れを俯瞰しやすくなった気がする。


また、その進化がハードウェアのスペック向上と密接に関連しているという点も納得。確かに、プログラミングは処理効率が最優先という時代ではオブジェクト指向プログラミングが導入されていたとしてもあまり意義は無かったかもしれない。



なんか読んでてとても面白い本だった。自分が共通化、再利用大好き人間だということを改めて認識できた。