next up previous contents
: クラスによるモーフの実装方法 : ユーザインターフェース : 必要な知識   目次

PlayerとMorphの関係

タイルでスクリプトするまではモーフに対応するPlayerXXクラスは存在しないのに、スクリプトを組もうとすると突然PlayerXXというクラスが自動的に生まれて、組んだスクリプトをメソッドとして持ってしまうという事が起こる。また、ビューワで新しい変数を追加すると、自動的にPlayerXXに「get変数」や「set変数:」が生まれる。これを理解するためにPlayerとMorphの関係を理解しなければならない。

Morphicは、Selfというプロトタイプベースのオブジェクト指向環境の上で構築されたGUIフレームワークで、Selfのオブジェクトを視覚的に制御・構築しやすいように工夫されたものである。これをSqueak/Smalltalkに移植したのがSqueak版Morphicである。視覚化や操作面での処理に関しては、クラスベースのSmalltalkでも問題なく実装できる。ただ、Morphのインスタンスはインスタンスであるために、プロトタイプベースのオブジェクトのように独自のメソッドを持つことができない。つまり、タイルを並べて新しくスクリプトを作っても、Morphクラスのメソッドとして持つことはできないのである。そこで、PlayerXXというクラス(メソッドを持つことができるクラスオブジェクト。実際にはその唯一のインスタンスがプレイヤーとなる)と一対一に対応させることで、従来のインスタンスでまかなえる部分はMorphインスタンスが、それを超える作成したスクリプトおよび変数の所有はパートナーとなるPlayerXXクラスが受け持つ、という実装になっている。

プレイヤーは指定したMorphクラスをコスチュームとして纏うことで、そのMorphクラス独自の機能を持つことができるようになる。図8.1でMoprh,Player,コスチュームの関係を分かりやすく示した。

図 8.1: プレイヤーはモーフを纏って、その機能を持つ
\includegraphics[scale=0.85]{images/costume.eps}



Deguchi Lab. 平成20年3月5日