Behaviors

前のページ
目次
次のページ


 Tekkotsuを使用して作るプログラムは、Behavior(ビヘイビア:行動、振る舞い)と呼ばれます。
 Behaviorを作るには、基本クラスBehaviorBase継承して作ります。
 Tekkotsuは、Behaviorを開始するときにBehaviorクラスのオブジェクト(インスタンス)を生成し、Behaviorを終了するとき、そのオブジェクトを消去します。
 Tekkotsuには、すでにいくつかのBehaviorが実装されており、コントローラ画面(ControllerGUI)を使用して実行できます。これらは前の第2章で実行しました。

 Behaviorは次に示す3つの重要なメンバ関数を持ちます。

メンバ関数説明
DoStart()  Behaviorを開始するときに呼ばれます。
 Behaviorで使用する変数や関数を初期化します。
 他に開始したいオブジェクトがあれば、そのDoStart()を実行します。
 必要なイベントをキャッチできるようにします。
DoStop()  Behaviorを終了するときに呼ばれます。
 他に終了したいオブジェクトがあれば、そのDoStop()を実行します。
 その他、動作中の関数があれば終了させます。
 processEvent()   イベントをキャッチします。
 キャッチしたイベントに応じて処理を実行します。

 Behaviorは、上記3メンバ関数に加えて、コンストラクタを持ちます。コンストラクタとは、C++でオブジェクトを初期化する関数のことです。つまり、Behaviorのオブジェクト自身を初期化します。多くの場合、1つのBehaviorに3つのコンストラクタが存在します。

練習: 最初のBehaviorを作ってみよう

 秀丸を開いて、下記プログラム(背景が色付きの部分)をコピーし、貼り付けてください。

#ifndef INCLUDED_SampleBehavior_h_
#define INCLUDED_SampleBehavior_h_
 
#include "Behaviors/BehaviorBase.h"

class SampleBehavior : public BehaviorBase {
public:
  SampleBehavior() : BehaviorBase("SampleBehavior") {}
 
  virtual void DoStart() {
    BehaviorBase::DoStart();
    std::cout << getName() << " is starting up." << std::endl;
  }
 
  virtual void DoStop() {
    std::cout << getName() << " is shutting down." << std::endl;
    BehaviorBase::DoStop();
  }

};

#endif

 このプログラムを次の通り保存してください。

保存する場所マイドキュメント → usXX → project フォルダ
usXXの部分は自分の入学年にしてください。
2004年入学なら us04 です。
ファイル名SampleBehavior.h
ファイルの種類C言語ヘッダーファイル(*.h)

解説

#ifndef INCLUDED_SampleBehavior_h_
#define INCLUDED_SampleBehavior_h_
    ・・・
    ・・・
#endif

 上記の部分は条件コンパイルを行っています。詳しくは、ここをクリックしてください。
 なお、SampleBehaviorの部分はファイル名と一致させてください。

class SampleBehavior : public BehaviorBase {

    ・・・
}

 上記では、基本クラスBehaviorBaseを継承した派生クラスSampleBehaviorを作っています。
 なお、SampleBehaviorの部分はファイル名と一致させてください。

public:
  SampleBehavior() : BehaviorBase("SampleBehavior") {}

 上記のpublic:は、アクセス制御キーワードの1つです。クラスSampleBehaviorに含まれる関数や変数を宣言するために用いています。つまり、public:の後に含まれる関数・変数がpublicになります。

 SampleBehavior()は、クラスSampleBehaviorのコンストラクタです。

 BehaviorBase("SampleBehavior")イニシャライザです。
   SampleBehaviorの部分はファイル名と一致させてください。

 最後の { } はコンストラクタSampleBehavior()の中身がないことを意味します。

 virtual void DoStart() {
    BehaviorBase::DoStart();
    std::cout << getName() << " is starting up." << std::endl;
  }

 virtualは、DoStart()が仮想関数であることを意味します。

 void は関数の型の1つです。ここでは DoStart() の型がvoidということになります。

  補足: 関数の型は、関数の計算結果が整数、実数、文字など、どれになるかを示します。
          例えば、整数型 int、実数型 float(または double)、文字型 char などです。
          どの型にも当てはまらない関数の型は void になります。

 BehaviorBase::DoStart(); は、クラスBehaviorBaseのメンバ関数DoStart()を実行します。
   DoStart()の中で BehaviorBase::DoStart(); を必ず書く決まりになっています。

 std::coutstd::endl に挟まれた部分が、パソコンのTelnet画面に表示されます。

 getName()は、そのクラスの名称を返します。
   つまり、クラス名(ここでは、SampleBehavior)がTelnet画面に表示されます。

 is starting up. はそのまま表示されます。
   つまり、ここでは「SampleBehaviorがスタートします」という意味の英文が表示されます。

  virtual void DoStop() {
    std::cout << getName() << " is shutting down." << std::endl;
    BehaviorBase::DoStop();
  }

 is shutting down. はそのまま表示されます。
   つまり、ここでは「SampleBehaviorがシャットダウンします」という意味の英文が表示されます。

 BehaviorBase::DoStop(); は、クラスBehaviorBaseのメンバ関数DoStop()を実行します。
   DoStop()の中でBehaviorBase::DoStop();を必ず書く決まりになっています。

Behaviorを組み込む

 組み込み方法は、ここをクリックして見てください。

コンパイルする

 コンパイル方法は、ここをクリックして見てください。

実行する

 実行方法は、ここをクリックして見てください。


前のページ
目次
次のページ