オレオレOOP

田辺さん曰く。

それを踏まえた上で、質問なのですが、
Isoparametric さんが、新人にオブジェクト指向が何たるかを
教えるときに、何をポイントとして説明されますか。

何を知りたいかと言うと、Isoparametric さんの
オブジェクト指向」の核のイメージです。
それがわかると、kmaebashi さんとの齟齬が
よりはっきりするのかなと思います。
また、Cのマルチプルインスタンス
オブジェクト指向を明確に区別する理由がわかると思います。

自分が重きを置くのは、
凝縮度、結合度、そして振る舞いです。

クラス化することは構造体+関数よりも、
より高い凝縮度を実現します。

それはデータと呼び出し側のコードの結合度をインターフェイスによってより低められるからです。
構造体+関数というインターフェイスから、
一歩二歩三歩、もっともっと先に進んだものが、
クラスのメンバ関数やメソッドではないか、と考えています。
これらを適切に定義することにより、
オブジェクトの責任範囲が明確になり、
内部の実装の凝縮度を高め、
同時に外部に対する結合度を低めることに繋がります。
そして、オブジェクトはそのポインタ(参照)が何であれ適切に振る舞います。


即ち、「相互作用」を健全化することです。
そういう意味ではマルチプルインスタンス些末なことでしかない、と考えています。
自分は、ですよ。自分は。

(これらにメッセージだとか言語機能としてのインターフェイスが使われるとかはまた別のお話)