[Squeak-ja: 3872] Re: Object特異的な情報を含むメッセージの発信について

Hiromichi Tsurui tsurui @ med.juntendo.ac.jp
2008年 5月 10日 (土) 20:05:57 JST


阿部さん、山宮さん、早速のお返事ありがとうございます。

例として、月と地球の運動をシミュレートすることを考えています。それぞれは、インスタンス変数として、質量、現在位置及び現在の速度を持つとします。月は、現在の地球の位置と質量(これは一回伝達されれば十分ですが)の情報が得られると、自身の質量、位置、速度から微小時間後の位置、速度が求まります。地球に関しても同じことです。この微小時間のメッセージのやり取り繰りを返すことにより有限時間での両者の動きをシミュレートしたいと考えているわけです。端的に言って、地球がその質量及び位置を月へ、月がその質量及び位置を地球へ直接に伝達する方法はないのでしょうか、という質問です。assureUniClass, compile: classified:を用いますと、(まだ十分把握できてい 
ないのですが)、間に介在するものが、月の位置を月から聞き出して地球に教え、地球の位置を地球から聞き出しつきに教える、という形になるような気がいたします。より一般的には、Object間で直接情報のやり取りをする方法はあるのでしょうか、ということになります。



鶴井



> 山宮です。
>
> Hiromichi Tsurui wrote:
>> Object Aからobject BへAに関する情報を含むメッセージを送り、その情報に基
>> づいてBがある変化をする、というような場合、どのように記述するべきでしょ
>> うか?Object特異的な情報を含むメッセージをそのObjectから発信する方法につ
>> いてです。何冊かの本を読んだのですがはっきり触れていませんでした。
>
> 「メッセージ」や、「Object特異的」と言った言葉は、一般で使われる意味と
> Smalltalk 言語の文脈の使われ方が違う時がありますので、
> Object A, B やメッセージの具体例を挙げて頂くか、背景にある問題を教えて
> 頂ければお話が分かりやすくなると思います。
>
> -- 
> Takashi Yamamiya := http://metatoys.org/



> こんにちは、阿部です。
> ここでいう「Bがある変化をする」とは、単にBの属性値が変化するだけでなく、Aの情報をもとにBの振る舞いが変わるという解釈でよいでしょうか。
> また、オブジェクト特異的ということなので、Bのみが変化するのであって、Bが属するクラスおよびそのインスタンスは変化しないということですね。
> そのような場合、Squeak Smalltalkのインスタンスに、assureUniClassメッセージを送ることでインスタンス特異的クラスを得ることができます。このクラスに特異的メソッドを追加するには、compile:classified:を送ります。このとき、compile:の引数はソースコードの文字列、classified:の引数は任意のメソッドカテゴリ(プロトコル)の文字列です。したがって、このソースコードにAの情報を含めれば目的は達すると思われます。
> 詳しくは以下の鷲見さんの解説を参照してください。
> http://d.hatena.ne.jp/sumim/20060420/p1
>
> なお、2004年末の議論は、マルチエージェントの扱いに関するもので、今回の話とは直接関係ないと思います。
>
> //abee
> --
> 阿部 和広  EMAIL abee @ squeakland.jp
>
> 08/05/10 に Hiromichi Tsurui<tsurui @ med.juntendo.ac.jp> さんは書きました:
>>
>> Object Aからobject
>> BへAに関する情報を含むメッセージを送り、その情報に基づいてBがある変化をする、というような場合、どのように記述するべきでしょうか?Object特異的な情報を含むメッセージをそのObjectから発信する方法についてです。何冊かの本を読んだのですがはっきり触れていませんでした。2004年12月末から2005年1月に掛けてのKondo
>> Fumito, Kazuhiro ABE, Takashi
>> Yamamiyaさんたちの議論はこの問題に関するものだと思うのですが、殆んど文字化けしていて読めませんでした。あるいは、Smalltalkにはこのような機能はないのでしょうか?




Squeak-ja メーリングリストの案内