次のステップでは、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メソッドが含まれます。