オブジェクト指向は分類学

物を選んでから何かをさせる - オブジェクト指向のお話のなかで、ファイルを選んで→削除操作、みたいなものだという分かりやすい説明がなされています。
僕が結城さんの本(増補改訂版Java言語で学ぶデザインパターン入門)のjavaのコードをPerlに置き換えながら、そもそもなぜオブジェクト指向でないといけないのか、という事に対して漠然と思ったのは、「これは分類学なんだな」ということでした。

手続き型のプログラムをたくさん書いていると、よく似た処理をまとめたくなってきます(特にそうはならない勤勉なプログラマを除いて)。
例えば、ユーザーのデータをデータベースから引っ張り出して、その人が本登録済みかどうかを判定する、という処理を毎回書いているうちに、どこか1箇所に書いて、全ての場所からその処理を使いまわしたいと思うのは自然な流れです。
この「処理を1箇所にまとめる」という時にどうまとめるのか?
例えばユーザー本登録チェックモジュールみたいなのを作って毎回呼び出すとか、色々方法がありますが、その色々な中で生き残って色々な可能性に耐えているのが、「物=オブジェクトを元に分類する」ということなんだなあ、と感じたのが僕の理解でした。

つまり、「ユーザー」というオブジェクトを作って、そのユーザーに「あなたは本登録済みですか?」と聞くのが分かりやすく、現実世界の概念に似ているために、分類が行いやすく、また、多くの開発者の中で共有しやすいんだろうなあと思います。

実際に開発をやっていると、何がオブジェクトになれるのか、とか、どのオブジェクトが処理を行うのが自然なのか、みたいな疑問がしょっちゅう出てくるわけですが、こういう問題をあれこれ考えるのは「この世の中は何でできているのか?」というパズルを解いているみたいで、個人的に楽しく感じています。