< 前へ | 次へ >

レッスン 5: ステートチャートの作成

このレッスンでは、2 つのステートチャートを作成します。ステートチャートは、アクター、ユースケース、およびクラスの振る舞いを定義します。 これには、アクターなどがその存続期間にわたってなりうる状態、および状態から状態に遷移する原因となるイベントおよび操作が含まれます。ここでのステートチャート図は、モデル内の 2 つのクラス・オブジェクトであるボタンとセンサーの振る舞いを定義します。これらの図は各状態間の遷移を表示しますが、それは遷移矢印によって示されます。

センサー・クラスのステートチャートを作成するには、以下の手順を行います。

  1. Rational® Rhapsody® を開始し、車両センサー・モデルが開いていない場合はこれを開きます。
  2. Rational Rhapsody ブラウザーで、「Design」パッケージを展開し、Sensor クラスを右クリックして、「新規追加」> 「ダイアグラム」> 「ステートチャート」と選択します。ステートチャート要素が、ブラウザーに追加されます。
  3. 描画ツールバーで、 をクリックします。
  4. 描画領域の左上隅近辺をクリックし、右下隅までドラッグして、大きな長方形を描画します。
  5. デフォルト名を「Active」と変更し、Enter を押します。
  6. 「Active」状態の内部に 2 つの状態を描画し、それぞれ、「Idle」および「Sensing」という名前にします。
  7. 「デフォルト遷移」ボタン 「デフォルト遷移」ボタン をクリックし、「Idle」状態の左側をクリックします。
  8. デフォルトの遷移線を「Idle」状態に接続します。
  9. 「遷移」ボタンをクリックして、「Idle」状態の右境界線を右クリックし、遷移を「Sensing」状態まで描きます。
  10. この遷移に「evToggle」と名前を付け、Ctrl + Enter を押します。
  11. 別の遷移を「Sensing」から「Idle」まで描き、これに「evToggle」という名前を付けます。
  12. Sensing」状態からそれ自体に戻るように別の遷移線を描きます。
  13. 手順 12 で描いた遷移線をダブルクリックし、「フィーチャー」ダイアログ・ボックスを開きます。
  14. 「トリガー」ボックスに、「tm(1000)」と入力します。
  15. 「アクション」フィールドで、Enter を押し、2 つのコード行、「++pulse;」と「itsDisplay.show(pulse);」を入力します。
  16. 「OK」をクリックします。作成したダイアグラムは、次の図のようになっているはずです。
    「Sensor」ステートチャート図

「Button」ステートチャートの作成

次に、ボタン・クラスを定義する第 2 のステートチャートを作成します。このボタンには、「up」、「down」、「held」という 3 つの状態があります。
  1. ブラウザーで、「Design」パッケージを展開し、Button クラスを右クリックして、「新規追加」> 「ダイアグラム」> 「ステートチャート」と選択します。ステートチャート要素がブラウザーに追加されます。
  2. 3 つの状態を描画し、これらに「Up」、「Down」、「Held」と名付けます。
  3. デフォルトのコネクターを「Up」状態に接続します。
  4. Up」から「Down」に向けて遷移を追加し、「evPress」と名付けます。
  5. Down」から「Up」に向けて第 2 の遷移を追加し、「evRelease」と名付けます。
  6. 2 番目の遷移をダブルクリックして、「フィーチャー」ウィンドウを開きます。
  7. 「アクション」フィールドで、Enter を押し、「itsSensor->GEN (evToggle);」と入力します。
  8. evRelease」という名前で第 3 の遷移を「Held」から「Up」に向けて追加し、「OK」をクリックします。
  9. 第 4 の遷移を「Down」から「Held」に向けて追加します。
  10. 4 番目の遷移をダブルクリックして、「フィーチャー」ウィンドウを開きます。
  11. 「トリガー」ボックスに、「tm(1000)」と入力します。
  12. 「アクション」フィールドで、Enter を押してスペースを開け、次に「itsSensor->GEN(evReset);」と入力して、「OK」をクリックします。
作成したダイアグラムは、次の図のようになっているはずです。

「Button」ステートチャート図
レッスンのチェックポイント

このレッスンでは、以下のことを習得しました。
  • ステートチャートによるモデル内の振る舞いの定義
  • ステートチャートの作成方法

次のレッスンでは、モデルに対するコード生成を行います。

< 前へ | 次へ >

フィードバック