現実とオブジェクト指向とJava

オブジェクト指向の入門でよく聞くフレーズに「オブジェクト指向は現実世界をモデル化したものです」というのがある。
これ、たしかにオブジェクト指向という考え方を説明してはいるんだけど、オブジェクト指向という理論を実装したコンピュータのプログラム言語(具体的にはJavaC++)の説明としては適切でない。と常々おもっていた。のだけど、どこが適切でないのか?という点はイマイチすっきりした説明ができないでいた。
結論としては「状態と振る舞いをまとめて管理すると便利」*1というだけで別にその状態と振る舞いがまとまったものが現実世界のモノであるかどうかはどうでもよい、という理解でOKっぽい。
この本でわかりました。

Javaのココロ  

Javaのココロ  "できる"プログラマになるための111のアドバイス

ちなみに上述した内容とこの本の主題は殆ど関係なくて、主題はJavaによる開発の泥臭くそれでいてマニアックな話題なので読んで楽しい人は相当限られると思います。僕も一部を除いてあんまり楽しくなかった。

*1:ここで言う状態と振る舞いというのは、人間でいえば状態が「名前」や「性別」で、振る舞いは「歩く」や「食べる」といった動作になる。名前や性別があって歩いたり食べたりするやつのことを人間というモノとして一括して管理しましょうというのがオブジェクト指向の考え方。(の一部)