シミュレーション中にオブジェクトを生成

<< 目次を表示 >>

ページ位置:  シミュレーション > 振る舞いモデルのシミュレーション > クラスとインスタンス >

シミュレーション中にオブジェクトを生成

シミュレーション対象のモデルにおいて利用するクラスやオブジェクトをモデリングすることができます。これらのオブジェクトは、グローバルオブジェクト、つまりシミュレーション実行中は常に参照できる状態となります。シミュレーションを実行するとオブジェクトは自動的に生成され、実行中はいつでも利用できます。

 

シミュレーション内でオブジェクトを生成する方法としては、次の3つがあります。

 

動的にオブジェクトを作成すると、クラスに対するアクティビティのように、そのオブジェクトの内部オブジェクトをインスタンス化し、その内部オブジェクトのプロパティを操作することができます。

 

 

手動でオブジェクトを生成する

手動でオブジェクトを生成する方法の場合には、以下のいずれかの手順になります。

 

シミュレーションモデルでは、実行状態などの値をオブジェクト要素に対して設定します。

 

 

CreateObjectアクションを利用してオブジェクトを生成する

CreateObjectアクションを利用して、オブジェクトを実行時に生成することもできます。

#

操作方法

1

CreateObjectアクションは、ツールボックスからアクション要素をドロップした際に表示されるメニューで「オブジェクトの生成」を選択するか、要素のプロパティダイアログの「追加属性」グループにあるkindの値をCreateObjectに設定します。

2

アクションの分類子として生成するクラスを指定し、アクションピンを追加します。

3

生成するオブジェクトと結ぶアクションのピンとオブジェクトフローで結びます。

アクション間の呼び出しは、コントロールフローで結びます。

 

4

この状態でシミュレーションを実行すると、CreateObjectアクションが実行されると、指定したクラスのオブジェクトを生成します。 生成したオブジェクトは、アクションピンを経由してオブジェクトフローの先にあるアクションピンに渡されます。また、ローカル変数サブウィンドウにその値が表示されます。

 

 

JavaScriptを利用してオブジェクトを生成する

アクションの効果の欄に、以下のような内容を入力することで、オブジェクトを破棄できます。

 

sim.newObject = sim.CreateObject("ClassName");

 

あるいは

 

sim.newObject = new SimObject("ClassName"); (natural JavaScript)

 

なお、このような生成処理を実行するためには、対象のクラスは生成するアクション要素と同じパッケージに含まれている必要があります。

 

CreateObjectアクションでオブジェクトを生成すると、それ以降の処理で参照・利用することができます。下の例では、sim.object1という名前でオブジェクトを生成し、そのオブジェクトをAction2で利用しています。(属性に値を設定しています。)

 

 

 

内部オブジェクトのインスタンス化

上で説明したように、オブジェクトはJavaScriptかCreateObjectアクションを利用してインスタンス化できます。同様に、JavaScriptか振る舞い呼び出しアクションで、内部オブジェクトのインスタンス化ができます。

 

この例では、JavaScriptを利用し、まずClass1のインスタンスとしてtestObjectを作成しています。Class1はアクティビティ要素とダイアグラムを持っています。このActivity1の第1引数に5を、第2引数に"test"を設定して呼び出しています。param1の値をbufという変数に格納しています。

 

 

 

参照: