掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     ステートマシン図の構造体について


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2008-8-29 13:35

ステートマシン図の構造体について

ステートマシン図の構造体についての質問です。

アクティブクラスの下にステートマシン図を置きコード生成すると
ステートマシン図のステートマシンの構造体の名前がアクティブクラスの構造体の名前と同じになります。
例えばアクティブクラス名をClassA、ステートマシンをClassASmにした場合、
こちらとしては構造体名がそれぞれClassA、ClassASmになることを期待しておりますが
実際には両方ともClassAになります。
このまま、使うと当然コンパイルエラーになってしまいますので違う名前にする方法がありましたら教えてください。
tkouno
投稿日時: 2008-8-29 14:18
EA Administrator
投稿: 3939

Re: ステートマシン図の構造体について

ご迷惑をおかけし申し訳ございません。

ご指摘の問題ですが、言語はどの言語を利用していますでしょうか?

基本的には、どの言語でも、アクティブクラスに関連する
構造体は自動的に名称が決まり、アクティブクラスの
子要素として生成される※ようになっているかと思います。
(※:構造体がアクティブクラスと同じソースに生成される)

お手数をおかけし申し訳ございませんが
もう少し詳細な情報をお寄せ下さい。

未登録ゲスト
投稿日時: 2008-8-29 14:44

Re: ステートマシン図の構造体について

>ご指摘の問題ですが、言語はどの言語を利用していますでしょうか?
使用している言語はC言語です。

>基本的には、どの言語でも、アクティブクラスに関連する
>構造体は自動的に名称が決まり、アクティブクラスの
>子要素として生成される※ようになっているかと思います。
>(※:構造体がアクティブクラスと同じソースに生成される)
私が生成したものはそのようなっておらず
アクティブクラスとステートマシン図が別々のファイルで生成されます。

以下の手順で作成しております。間違っている箇所があれがご指摘ください。
1.クラス図を作成し親クラスを定義
2.ステートマシン図を作成しステートマシンを定義
3.親クラスをアクティブクラスに変更し、「追加設定>子ダイアグラムを作成」にチェックを入れる。
4.プロジェクトブラウザを使って2のステートマシン図を1のクラス図の下に配置する。
5.プロジェクトブラウザのクラスを右クリックし、
「アドイン>RealTime UML>実行可能クラスの変換と生成」を選択し、ソースコードを生成する。
このときに1のクラス図にステートマシンのクラスが生成されるが、
親クラスとステートマシンのクラスが同じ名前になっている。
6.最後にまとめてコード生成すると親クラスとステートマシンの構造体が別々のファイルに生成される。
確認してみると同じ名前になっている。
tkouno
投稿日時: 2008-8-29 15:08
EA Administrator
投稿: 3939

Re: ステートマシン図の構造体について

ご指摘の内容を拝見し、指摘されている内容が
理解できました。

この、RealTimeUMLアドインは、MDA(Model Driven Architecture)の考え方を
利用して作られています。

このMDAは、
・プラットフォーム非依存のクラス(PIM)
 (シンプルにいうと、設計クラス)
から
・プラットフォーム依存のクラス(PSM)
 (同じく、実装クラス)
を自動生成し、そのPSMのクラスから、ソースコードを生成します。

ご指摘の手順での1番でのクラスは、PIMのクラス(設計クラス)であり
5番で生成されるクラスは、PSMのクラス(実装クラス)です。


つまり、5番のクラスと1番のクラスは同じものなのです。
よって、1番のクラスはソースコード生成は行わず
5番のクラスのみをソースコード生成する、ということです。
(設計クラス+ステートマシン図の情報=実装クラス)

手順の5番で生成する際には、1番のクラスの位置とは
全く別の位置に生成して下さい。1番のクラスに設定した
属性や操作は、自動的に5番のクラスにもコピーされるはずです。

この説明でご理解いただけましたでしょうか?
私自身、この説明がベストかどうかわかりませんので
不明な点があれば、遠慮無くご質問ください。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ