掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     C言語のソースから継承関係を図表化することはできますか?


フラット表示 前のトピック | 次のトピック
投稿者 トピック
sugimoto
投稿日時: 2008-4-28 10:41
EA Administrator
投稿: 1895

C言語のソースから継承関係を図表化することはできますか?

C言語のソースから継承関係を図表化することができますか?

クラス図で継承の関係を作成し、C言語に出力を行いました。
C言語のソースを編集後、EAを保存し、そのプロジェクトを一端閉じ、
また開くと、継承の関連線が消えてしまっていた。

一方で、EAでクラス間に継承関係を持たせて出力し、CソースをF12で開いて
更新したり、プロジェクトを開きなおしたところ、保存される場合もありました。

継承の関係は、具体的なC言語のソースコードには反映されていないが、
関数ポインタ等の仕組みをつかって継承の概念を実装しています。

そこで、いくつか質問があります。

○ご質問1

マニュアルには「クラスの属性が構造体として表現され、クラス間の
関連が反映されます。クラス間の汎化関係は反映されません。」とある一方で、
汎化させようとすると、オーバーライドする関数を選択するダイアログが表示され、
サポートしてくれるのかとも思いました。

○回答1

モデル上では、プログラム言語を問わず、UMLモデリングを行うことが可能です。
これは、クラスのプロパティ画面で、言語をCにしている場合も同様です。

そのため、”汎化させようとすると、オーバーライドする関数を選択する
ダイアログが表示され”とありますが、こちらは、UMLモデリングでは可能
ですので、この動作はEAの意図通りになります。


○ご質問2

どういう場合に、継承関係を保存してくれるのか、具体的なポリシなどわかりますでしょうか?

○回答2

C言語の場合は、ヘルプにありますように、モデルでクラス要素間に
汎化の関係があっても、その情報はソースコードには反映されません。

また、ソースコード読み込みにおいても、汎化の関係を生成は行いません。

現在、一度、ソースコードを読み込んで、ソースコードの編集を行い、
再度読み込むという手順で進められているのではないかと思います。

この場合、汎化の接続元であるクラスを読み込んだ場合は汎化が消え、
汎化の接続先であるクラスを読み込んだ場合は、そのまま汎化が残って
いるのではないかと思います。

こちらは、接続元に該当の情報がないため、このような動作を行っており、
このことはC言語の汎化に限らず、Java等でも同様の動作になります。


○ご質問3

継承関係が現時点のビルドでは未完成の場合、各クラス間の関連をUMLの
図表で保っておくには、どういう手段がありますか?
集約以外には、ありませんでしょうか?
継承の関係を保持するのが難しい場合、普通の関連線でも構いませんので、
なんとかCソースとクラス図の関連の同期ができませんでしょうか?

○回答3

こちらは接続の意味合いは考慮せず、クラス間に接続を引き、ソースコード
生成・編集・読み込みを行ってもその情報を残したいということと思います。

この場合、接続の種類に「関連」や「集約」を選択した場合は、
ソースコードの生成後、ソースコードの編集、読み込みを行っても
モデル上は、接続が残ります。

ご確認のほど、よろしくお願いいたします。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » C言語のソースから継承関係を図表化することはできますか? sugimoto 2008-4-28 10:41