よくある質問(FAQ):ソースコードの生成と読込について

  1. ソースファイルの読み込み時に、DLLEXPORTなどのキーワードがクラス名として読み込まれる
  2. Javaで、メソッドで発生する例外を定義したい
  3. ソースコードの読み込みでシーケンス図は生成されますか?(ソースコードの読み込みで生成されるのはどのような図ですか?
  4. モデル側から操作や属性を削除した場合でも、ソースコード同期でソースコード側の操作や属性が削除されずに残ってしまう
  5. 構造体を生成したい
  6. クラスライブラリの情報を利用して便利に開発する方法はありますか?
  7. ソースコードを日本語EUC(EUC-JP)で出力したい
  8. あるクラスの内部クラスとして別のクラスを定義したい
ソースファイルの読み込み時に、DLLEXPORTなどのキーワードがクラス名として読み込まれる
多くの場合、マクロ設定で対応できます。設定方法の詳細は、ヘルプファイルの「言語マクロ」のページをご覧ください。
  1. 「プロジェクト」リボン内の「ツール」パネルにある「設定」ボタンを押し、「プログラム言語のマクロ」を選択する
  2. 「言語の選択」がC++になっていることを確認して、DLLEXPORTなどの無視するキーワードを追加する
  3. 「閉じる」ボタンを押して閉じた後、再度ソースコードの読み込みを実行する
Javaで、メソッドで発生する例外を定義したい
対応する操作にタグ付き値を追加します。名前に"throws"という文字列を、値に発生する例外(xxxException)を追加します。この状態でソースコードの生成を行うと、例外の定義が反映されます。
ソースコードの読み込みでシーケンス図は生成されますか?(ソースコードの読み込みで生成されるのはどのような図ですか?
Enterprise Architectでは、ソースコードからのシーケンス図の自動生成には対応しておりません。ソースコードとの同期(入出力)は、クラス図のみの対応となっております。クラス図の操作や属性およびクラス間の継承関係が生成されます。
なお、.NETやJavaなどいくつかの言語で作成したアプリケーションを動作させて、動作結果からシーケンス図を自動生成することも可能です。詳細はドキュメント ライブラリからダウンロードできるドキュメント「シーケンス図作成機能 機能ガイド」をご覧ください。
モデル側から操作や属性を削除した場合でも、ソースコード同期でソースコード側の操作や属性が削除されずに残ってしまう
「ホーム」リボン内の「オプション」パネルにある「ユーザー」を実行し、「属性と操作」のカテゴリにある「コード生成時にモデルにない属性と操作の削除を確認する」にチェックを入れてください。コード生成時に該当する属性や操作がある場合、削除された場合の処理を決めるためのダイアログが表示され、処理方法を決めることができます。
構造体を生成したい
構造体を定義・利用するためには、以下の手順となります。
  1. 通常通りクラスを作成する
  2. 構造体のメンバーを属性として追加する
  3. クラスにステレオタイプstructを設定する(クラスのプロパティダイアログで直接入力して設定)
その後、クラス要素を対象にしてソースコード生成を実行すればstructとして出力されます。
クラスライブラリの情報を利用して便利に開発する方法はありますか?
こちらのページからダウンロードできるインストーラを利用することで、Java・MFC・.NETなどさまざまなフレームワークで定義されたクラス要素を利用することができます。
ソースコードを日本語EUC(EUC-JP)で出力したい
プロジェクトのオプションダイアログの「ソースコードの生成と読み込み」グループにある「ソースコードの文字コード」で「20932 (JIS X 0208-1990 & 0212-1990)」を指定してください。出力だけでなく、読み込む場合も同様の設定で可能になります。
なお、この「20932」が表示されないマシンの場合には、言語の追加設定を行う必要があります。Windowsの「コントロールパネル」の「地域のオプション」から設定できる「コードページ変換テーブル」一覧から「20932」を追加してください。これにより変換テーブルがインストールされます。
(その後、一覧に表示されない場合には、直接「20932」と手で入力してください。)
あるクラスの内部クラスとして別のクラスを定義したい
あるクラスの内部クラスとして別のクラス(構造体・列挙定義)を含めたい場合には、プロジェクトブラウザにおいてクラスの子要素として別のクラスを作成するか、ネストの関係で結んでください。このようにすることで、ソースコードの生成時には親クラスのソースファイル内に定義されます。