次のステップでは、model swarmを定義し、グラフィカルなobserver Swarmを準備します。HeatbugのこのコードはHeatbugObserverSwarmにあります。observer swarmの構造は、model swarmを構築するときのそれとほとんど同じです。
@interface HeatbugObserverSwarm : GUISwarm {
int displayFrequency; // パラメータは1つ:頻度の更新
id displayActions; // データ構造をスケジュール
id displaySchedule;
HeatbugModelSwarm * heatbugModelSwarm; // 我々が観測しているSwarm
// 多くの表示オブジェクト。まずはウィジット
XColormap * colormap; // 色を割り当て
ZoomRaster * worldRaster; // 2つめの表示ウィジット
EZGraph * unhappyGraph; // グラフウィジット
// 次に、より高い順位の表示とデータオブジェクト
Value2dDisplay * heatDisplay; // 熱を表示
Object2dDisplay * heatbugDisplay; // heatbugを表示
}
|
繰り返しますが、我々は入力パラメータ(表示頻度)、スケジュールデータ構造、そして内在するオブジェクト(model swarm、表示ウィジット)を持っています。HeatbugObserverSwarmが総称Swarmクラスのサブクラスでなく、具体的にはGUISwarmサブクラスであることは注目すべき例外です。つまり、HeatbugObserverSwarmにはユーザがstopできるようにするコントロールパネルや、また実行中のすべてをセットする特殊なgoメソッドが含まれます。