4.6. グラフィカルObserver Swarmの構築

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