うーん。タイトル変えるべきでしたでしょうか。
こんなにコメントがつくとは思ってなかったもので(^^;;…
というわけで、遅れましたが勝手にタイトルいじっちゃいます。
まずければ再度変えてやってください。
>全ての処理は究極はオブジェクト間のメッセージ(メソッドの起動)の
>やり取りで実現されるはずです。
そういう(世間でよく言われてる)捉え方って、
なんというか、メタというか下流というかインフラを見すぎて
ワケわかんなくなってるだけじゃないか?と
最近思っています。
メソッドの起動はいいんですが、
「だから何?」
「で、それによって何をするのか?」
ってのを大まかに分類したほうがいいんじゃないかと
最近は思っています。
もちろんあまり細かく分類しすぎたらドメイン内部の問題に立ち入ってしまう
(越権行為)んで、それじゃ不味いのですが、
なんかこう、ちょうど良い位置に切り口が有るような気がしてます。
例えば、そのメソッド起動によって、
- オブジェクトは作られたり消されたりするのか
- オブジェクトの状態は遷移するのかしないのか
-- オブジェクトの参照関係は変化するのかしないのか
- IO(オブジェクト系の外との情報のやり取り)は有るのか無いのか
…少なくとも上記のような観点でメソッドを分類することは
必要じゃないかと感じてます。
#最近ハマってるのは檜山正幸さんのJanusとかいう奴
# http://www.chimaira.org/docs/indexCSiSEng.htm です。
#実に面白いです。
#近年の「普通の」OOPのどこに無理が有るのかが凄く鮮やかに読み取れるというか。
#実務で(つまり普通のUML&Javaで;-P)の使うチャンスの有無はさておき、一読おすすめ
っす。
で、引数とかによるオブジェクトやり取りに注目したく思っているのは、
オブジェクトを渡すことで、
「参照関係の変化」が生じる(ということが一般的である)
のじゃないか?と思ったせいです。
#そうそう。上記の檜山さんの「アメナブル」という概念を、意識しています。
#つまり、メソッドは最低でも「アメナブルか否か」で分類するくらいのことは
#したほうが良いんじゃないか?という「危機感」を感じてるものでして…。
私の感覚では、オブジェクト指向って、
オブジェクトがオブジェクト「を」投げ合うというか、やり取りしあうというか、
そう見ることで初めて「動く」ものとして捉えられるんじゃないかな、
という感じなんです。
てゆーか、オブジェクト指向じゃなくても、そうでしょうけどね。
>中間の工程で、データの流れをどのように表現するとよいのか、
>また、そもそも表現する必要があるのかは、難しくてまだ分かりません。
オブジェクトのやり取りは、データの流れとは限らないんで(^^;。
あと、
どこから先に見つかる(みつじさんの上記の言葉でいえば「分かる」)かは
状況というかドメイン次第なんだろうとは思います。
つまり、ドメイン次第では、「やり取り」が先に見えちゃうことも有るだろうな、と。
やり取りが先に見えるケースで、
かつ「データの流れというわけじゃないんだけどな」というケースとして、
「野球」なんかはどうでしょう?
なんたって、
「ピッチャー」と「キャッチャー」は「ボール」をやり取りしてます。はい(^^;
まあ、キャッチボール(のボール)がそのまま
メソッド(の引数)にマッピングできるかどうかは
怪しいですが、
逆にいえばそういうのは設計や実装の段階に(つまり後で)
考えりゃいいんじゃないかなー。
そうそう。
もう1つ球技ネタで言うならば、
オブジェクト指向はビリヤードのようなものだろうな、
と私は思っています。
玉同士(やキュー)の衝突がMessageSendingに相当するんですが、
衝突の結果として玉が「動き」ますよね。位置や速度や「どの玉と接してるか」関係が変
わる。
あの感じです。
衝突だけ注目しても無意味というか微視的すぎていて、
衝突の結果として玉は「無事では済まなく」なるわけです(つまり動く)。
(檜山氏いうところの「物理系」って奴かなあ。)
しかも衝突は単発じゃなく文字通り玉突き追突することで、各玉が複雑に動く。
(正にシーケンス図やコラボレーション図が「リアルタイムでアニメする」ようなイメージ
ね)
その「衝突」と「動く」との絡みっぷりが、オブジェクト指向なのだろうなあと。
#なので、動的と静的の取り扱いをわざわざ別の図でやらないとならないUMLは、
#そういう意味でもストレス感じます。
動くのですから、オブジェクトは的から逃げていくことも有るわけです。
われらの言葉でいえば、あるMessageSendingの対象として適切な存在であるかどうか?が
リアルタイムに刻々変化していく感じです。
__________________________________
Do You Yahoo!?
Upgrade Your Life
http://bb.yahoo.co.jp/