オブジェクト指向ってこういうこと?(2) オブジェクト間参照
私的に悩んでいた点の1つですが・・・・
結論。
”オブジェクトから他のオブジェクトを参照”は、NGが基本
「あるオブジェクトの中で、別のオブジェクトのメソッドを参照したい」場合、
こうして外に出してやり取りするのが、やはり正しい気がします。
- 「チャンネルを変える」ヒトの動作は「リモコンをテレビに向けてチャンネル1ボタンを押す」
- リモコンの仕事は、「”チャンネルを1チャンネル(何が”1チャン”かはテレビ側設定依存)に変更して”命令を赤外線に変換して発信」
- 「チャンネルを変えたい」ヒトは、上記の通り「リモコンをテレビに向けている」=前記、「$television」に、「remoteControle($command);」をコールする に該当
- テレビの仕事は、「”赤外線情報を受信して(処理詳細略)”チャンネル1”を表示する」
「赤外線、発信。ぴ」
で、リモコン側の物事は完結してるので、
リモコンオブジェクトの中でテレビオブジェクト呼んでメソッド使ったり、またはその逆しては、
基本、いけないのです。
もし、「extendsなどの関連がない異なるオブジェクト間で情報やり取り」の必要があるなら、
独自プログラムなら、たぶん、上のように地の文。
フレームワークでなら、モデル辺りで。
コールする関数(メソッド)の引数に入れたりすべきなのだろうと。
「リモコンを、テレビのない環境で押して」も、チャンネルは変わらない。
リモコンを、「テレビに向けて」押す。
この「テレビに向けて」が、引数設定して、関数(メソッド)コールなのだろうと。
・・・・すみません。この辺。自分では腑に落ちてるつもりですが、
ツッコマれると怪しくなるかもしれません。*1
*1:「わかったような」理郎w