イベントのセマンティクス

イベントは 1 つのオブジェクトから別のオブジェクトへ送信されたときに生成され、ターゲット・オブジェクト・スレッドのキューに登録されます (スレッドの区分化は本書の範囲外です)。

キューの先頭に到達したイベントは、ターゲット・オブジェクトに送信されます。オブジェクトに送信されたイベントは、ステートチャート内のイベント伝搬のセマンティクスおよび run-to-completion セマンティクスに応じてオブジェクトによって処理されます。処理された後、イベントは存在しなくなり、実行フレームワークが暗黙的に削除します。

注: イベントは、属性の型として使用できます。

内部イベント

オブジェクトが自身にメッセージを送信すると、内部イベントが発生します。内部イベントを生成するには、以下のように、送信操作から宛先オブジェクトを省略します。

GEN(warmEngine(95))

プライベート・イベント

フレンドシップを使用して、どのクラスがどのクラスへのイベントを生成できるかを制御できます。この方法を使用すると、信頼できるクラスのみからイベントがくることを保証できます。イベント要求とキューイング関数は、フレームワーク基底クラス OMReactive 内で デフォルトでパブリックになっている gen() メソッドによって制御されています。 フレンドシップを使用してイベントの生成を制御したい場合は、Share¥oxf¥OMReactive.h 内の最初の gen() メソッドをプロテクテッド可視性にします。この処理は、一回限り実行します。 2 番目の gen() メソッドは、トレース/アニメーション設定に使用されるため、変更しないでください。

各アプリケーション・クラス内で、イベントを生成する必要があるクラスにフレンドシップを許可してください。フレンドシップを許可しないと、プログラムはコンパイルできなくなります。


フィードバック