前振り オブジェクト指向が何なのかという議論はいたるところで語られますが、元祖となるアラン・ケイのオブジェクト指向であったり、派生したすっぽすっぽ先生の抽象データ型のオブジェクト指向であったりと定義からしてゴチャゴチャしてなかなか収束しないことが多いです。 そもそも「オブジェクト指向」という言葉なのになぜか「クラス」が主役かのように語られることが多いのが疑問です。大切なのはクラスではなく実体化されたインスタンスでありオブジェクトであるはずです。クラスはあくまでもオブジェクトの1つでしかありません。 (メタプログラミングは置いといて)クラスはどれだけ頑張っても静的な情報しか持てないので、そこから個々のオブジェクトがどう連携してメッセージをやり取りしているかをイメージできるか、プログラミングできるか*1が1番重要であるはずです。 オブジェクトとは何か? オブジェクトとはなんでしょうか?プログラ