ステートチャート継承の計画

継承ステートチャートを持つクラスは、継承元のクラスとは異なるパッケージに存在できます。ステートチャートを持つクラス (リアクティブ・クラス) はステートチャートを持たないクラスを継承できます。リアクティブ・クラス (ステートチャートを持つ) の複数の継承はサポートされません。 派生クラスは複数のプリミティブ・クラスから継承できます。リアクティブ・クラスの継承階層の並べ替えはサポートされません。

このタスクについて

状態、遷移、トリガー、ガード、およびアクションにはそれぞれ別の継承規則があります。

サブクラスでの状態の構造は、スーパークラスの同じ状態の細分化です。 この構造により、状態継承が厳密に保たれます。すべての状態とその階層が、サブクラスのステートチャートによって継承されます。

派生ステートチャートに状態を追加できますが、追加する状態がスーパークラスのステートチャート内の階層を破壊しないことが条件です。したがって現実には、通常の状態に継承サブ状態を含めることはできません。

以下の例では、リーフ状態 s2 が詳細化され、Or 状態になりました。右側の s1 状態と s2 状態は、継承した状態です。

ステートチャートの継承 - 例 1

継承した状態には AND 線を追加できます (コンポーネントの追加)。継承した Or 状態を And 状態に変換すると、Or 状態が And 状態になり、コンポーネントの 1 つがそのサブ状態を含むようになります。この変換は、先に述べた規則の例外です。ここでは、直交コンポーネントを導入することで、状態階層が修正されます。 サブ状態の親を変更するコンポーネントは、「main」として指定されます。以下の例では、s2 が And 状態になります。s3s4 を含んでいるコンポーネントがメイン・コンポーネントです。コンポーネントの名前は、And 状態の名前と同じになります。

ステートチャートの継承 - 例 2

以下のアクションに注意してください。


フィードバック