NetMorphプログラミングNetMorph は eToy 対応しているので、 普通は自分でSmalltalkのプログラムを書く必要はありません。このページは開発者用に書かれました。最初の例NetMorph 0.2 にはリモートからモーフを操作するための、整理された API が提供されています。 簡単なコード例です。別のイメージの ip と portが #('192.168.1.2' 37459)であると考えてください。
この旅の後で、帰ってきたモーフをインスペクトして、 #path メッセージを送ってみましょう。モーフがどこを訪れたかがわかります。 CallbackMorphのサブクラスを定義して、移動時の振る舞いをカスタマイズできます。
遠隔 PerformNetMorphでは, すべてのモーフにidがあります。idがわかっていれば、そのモーフのメソッドをリモートから呼び出せます。
Morph Proxy移動前にメソッドを後で呼び出すためにidを取っておくのは面倒でしょう。そこで簡単な操作で、モーフの抜け殻(プロキシ)を得ることができるようになっています。
プロキシに渡せる引数、返値には制限があります。Block, thisContextなどは渡せません。モーフが別のモーフを返すようになっていた場合、呼び出し側は自動的に、そのモーフのプロキシを得られるようになっています。 例,
で、リモートのWorldのプロキシが返ります。 Morph>>stepのオーバーライドMorph>>stepをオーバーライドすると、モーフが自ら動けるようになります。ということは、ネットワークエージェントも簡単に書けると言うことです。例えば、ネット上をランダムに放浪するモーフを書きたい場合、#stepは以下のようになるでしょう。:
MarkerMorphの使い方MarkerMorph は、モーフに対する「見えるポインタ」です。 これを使うとリモートからのモーフの操作が容易になります。いつもは自分で動くモーフに、外部から指令を送るような時に使えます。MarkerMorph は普通のモーフなので、#stepをオーバーライドできます。例えば時折、放浪しているモーフを呼び戻したい場合、#step を以下のように書けるでしょう。:
Morph>>leaveMarkerMorph でそのモーフを指す新たな MarkerMorph が返ります。(最初のコードに例があります)。 [:masashi | ^umezawa] Link to this Page
|