カプセル化とか「オブジェクトは自分自身について知っている
とよい」的なOOの考え方って、良い設計を行う妨げになってるん
じゃないかと思うときがある。

例えばオブジェクトの比較なんかはC++でもjavaでも、比較方法は
比較対象となるオブジェクトのメソッドとして実装することが
言語仕様で決められてるわけだけど、対象物の比較なんてのは
第三者が行うことだし文脈によって方法も変わってくるから、比較
対象であるところのオブジェクトが定義するべきじゃない。つまり
実現方法が間違ってるんじゃないかと思うのよ。

で、何でこうゆう設計になってしまったのかなーと考えてみると、
冒頭に書いたようなことが原因ではないかと思うわけ。同じような
問題には、オブジェクトの文字列化やメモリ割り当ての方法なんかも
ある。

つーわけで、少なくとも現在のOOには改善の余地があると思うし、
このような問題がOOに解決できないものなら「OOは捨て」てのもアリ
かとも思うようになってきたんだけど、他の人の意見も聞いてみたく
なったんで何か意見くだちい。