岩月と申します。

05/11/03 に IWAOKA Masahiro<iwaoka / tuat.jac-net.com> さんは書きました:
> オブジェクトを主体として考えるならば、第三者(Cat)によって戦わさ
> れてる(上の例)というよりは、"mike" が "tama" と戦う(例えば
> mike.fight(tama))の方が自然だと思います。baby の例も同様。

私も同意しますが、小波さんのお考えもわかる気がします。
mike.fight(tama) では mike へ tama が働きかけているようにも、
その逆のようにも見えます。なんとなく二つのオブジェクトの処理に流れが
感じられるというか。
なので Cat.fight(mike, tama) のように第三者的に判断を下すような
メソッドがあっても不自然ではないと思います。

ただ、Cat.fight では対象となるクラス自身にメソッドを定義しているので
あまりうまみが無いような気もします。たとえば
(激しく適当な例ですが) 泣き声.fight とか かけっこ.fight などのように
fightの実装を別モジュールで用意すれば用途が広がりますし、
「二つを同じように扱う」という意図もはっきりすると思います。
必要であれば Cat に include すれば良いわけですし。

# などと書いているうちにるびきちさんも同様のことをおっしゃってますね。

--
IWATSUKI Hiroyuki <URL:mailto:don / na.rim.or.jp>