イベント
あるクラスの状態の変化などを知らせる信号。クラス乃至インスタンスによってイベントは発生(トリガ)され、別のクラスやオブジェクトに対して動作の切っ掛けを与えることができる。この時、イベントをトリガした側をセンダ、そのイベントに反応する側をハンドラと呼ぶ。
例)FOR ALL INSTANCES
一人の人が、複数の携帯電話を持つ場合。
人クラス(ハンドラ) → ○
一つの携帯だけではなく、全ての携帯の呼び出しに反応しないといけない。センダインスタンス個別指定だと、携帯の数だけ、SET HANDLER が必要。全ての携帯に反応させたいのであれば、今後携帯が増える可能性もあるので、FOR ALL INSTANCES でまとめてしまう。反応したくない携帯があるのであれば、別途SET HANDLERのACTIVATION オプションを使うと良い。
イベントの使い方
1.イベントの定義
クラス定義の中で、EVENTS イベント名. で、定義を行う。2.イベントのトリガ
メソッド内でイベントをトリガしたいタイミングで、RAISE EVENT イベント名.を、記述する。3.ハンドラメソッドを定義
イベントに反応させたいメソッド(ハンドラメソッド)の定義を行う。普段のメソッド定義の後ろに、FOR EVENT イベント名 OF センダクラス名 を追加する。パラメータの設定は、イベント定義後に行う。4.ハンドラメソッドをインスタンスに割当て
イベント処理を行わせたいインスタンスに対して SET HANDLER ハンドラメソッド名 FOR インスタンス指定 を、記述する(インスタンス生成時でも可)。今後生成される(センダ側)インスタンスなども含め、全てのインスタンスに反応させたい場合は ALL INSTSNCE オブションを記述する。他にオプションとして、ACTIVATION ’スペース or X’がある。ACTIVATION を使うと、割り当て(スペース)と割当て解除(X)を個別で行うことができる(主に、割当て解除に利用)。例)FOR ALL INSTANCES
一人の人が、複数の携帯電話を持つ場合。
- インスタンス数
人クラス(ハンドラ) → ○
一つの携帯だけではなく、全ての携帯の呼び出しに反応しないといけない。センダインスタンス個別指定だと、携帯の数だけ、SET HANDLER が必要。全ての携帯に反応させたいのであれば、今後携帯が増える可能性もあるので、FOR ALL INSTANCES でまとめてしまう。反応したくない携帯があるのであれば、別途SET HANDLERのACTIVATION オプションを使うと良い。
2008年10月29日(水) 15:34:59 Modified by chocolate_mousse