インターフェースとオブジェクトの構造

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践

http://d.hatena.ne.jp/y_nakanishi/20080902/1220329445

せっかく眠れそうもないので↑の補足。

いわゆる「インターフェース」を正しく認識するためにはオブジェクトの構造を考える必要がある。

オブジェクトの構造はカプセル化が「何で」「何を」隠蔽するのか?ということを明らかにすることで把握できる。何かを隠蔽するということは外から何かを見えなくするということだからオブジェクトには表面という構造があって、例えればボールのような構造をしているのは簡単に想像できる。

ポールは外から見れば表面しか見えないし、隠されているボールの中身は外からは見えない。だからカプセル化が成り立つわけだ。このボールの表面こそがまさしく「インターフェース」。

つまりオブジェクトはインターフェースによってオブジェクトの内側と外側が区別される。言い換えればオブジェクトはインターフェースによって定義され、インターフェースの存在しないオブジェクトは存在し得ないことがわかる。

この「オブジェクトを定義する」というのがインターフェースの一番重要な役割。

インターフェースを正しく認識すると人の頭は↓の2つの事を自然に行うようになる。

  • オブジェクトを認識すると同時にインターフェースを抽出する。
  • インターフェースを境界として内側と外側でまったく別のことをするようになる。

これはいわゆる「オブジェクト指向ができる人」は無意識にやっていたりするのですが、あまり概念としては説明されていないわけです(そーいうことを上の本に期待してたのですが)。

さらにこの2つを細分化していけば個々のテクニックにつながっていくのですが、上の本はインターフェースとは何だ?という部分には踏み込まず、2つ目の内側と外側を細分化したテクニックばかりを紹介しているわけです。

そーいうのはちょっと違うんじゃないかなーというのが9/2のエントリ。