オブジェクト指向の考え方を具体的に知るために、たとえば次のような例を考えてみよう。
Excelの使い方でよく知られているものに、タブキー操作がある。Excelでは、タブキーを押すと、今のセルから次のセルに移動する。データを入力しているとき、いちいちマウスを握らなくてもキーボードだけで打ち込めるのでこれは便利だ。で、使っているぼくらは、「あ、タブキーを押したら次のセルに移るのね」と覚える。
Cocoaでも同じことをプログラムできる。たとえば、文字列を表示する箱(フィールド)がいくつもあるときに、タブを押して今のフィールドから次のフィールドへ移るように設定することができる。でも、ここで肝心なことがある。それは「タブキーを押したら次のフィールドに行くこと」という風にプログラムするのではない、ということだ。
なぜか。「次」がわからないからだ。「次」ってなに? それって右隣りにあるでかい箱か? それともずいぶん下にあるあのひ弱そうな箱か? いや、もしかしたら、上のほうで偉そうな顔をしているあのボタンみたいなやつかもしれないではないか。
じつはココアでは、どれを「次」にすることもできる。
まず、「ここ」で扱っているものから、「次」にしたいものに向けて、線をぐいっと引っ張ってつなぐ。つまり、「アウトレット outlet」を出す。これで「ここ」の「次」がなにかが決まる。
しかし、これだけではまだ足りない。「ここ」にとって「次」とは何かがわからないからだ。「次」って誰? 親か?子か?恋人か?愛人か? というわけで、こんどは「ここ」と「次」との関係を明らかにしてやる。「ここ」にとっての「次」とは、「『次』ボタンを押したら移動する先(nextkeyView)」である。そこで、「ここ」に、「この線は、nextkeyViewという関係である」とプログラムしておく。
つまり、第三者から見て「オブジェクトAからあるオブジェクトBに操作が移動する」と見える現象を、オブジェクトAの視点から見て「オブジェクトBは操作の移動先である」という現象として考えるのだ。
(EV記:20030509)