Javaソース・コードの生成およびリバース・エンジニアリング

JDeveloperで作成した、モデル化されたJavaクラスから、Javaソース・ファイルを生成できます。モデル化されたJavaクラスおよびJavaインタフェースを、既存のJavaソース・ファイルからリバース・エンジニアリングすることも可能です。

注意: デフォルトでは、新規のクラス図でモデル化されたクラスまたはインタフェースに対してJavaソース・コードが生成されます。Javaの生成オプションの設定に関する詳細は、「モデル化されたクラスからのJavaソース・コードの生成」を参照してください。

Javaクラスの生成

クラス図でモデル化されたJavaクラスおよびJavaインタフェースから、Javaのクラス定義およびインタフェース定義を生成できます。クラス属性はフィールドとして生成され、操作はメソッド・スタブとして生成されます。誘導可能な関連の終端は、その多重度に応じてprotectedフィールドまたはprotected配列のいずれかとして生成されます。汎化は、extends文として、実現関係はimplements文として生成されます。

注意:  モデル化された要素からJavaソース・コードを生成すると、作成されたソース・ファイルは自動的にナビゲータ・ペインに配置されます。

Javaソース・コードのリバース・エンジニアリング

クラス・モデルのほとんどの要素は、Javaソース・コードからリバース・エンジニアリングできます。リバース・エンジニアリングが可能なのは、クラス(内部クラスを含む)、インタフェース(内部インタフェースを含む)、属性、操作、汎化および一部の関連です。

リバース・エンジニアリングされたJavaクラスが、すでにダイアグラム上にモデル化されているインタフェースを実装した場合、そのクラスとインタフェースの間には自動的に実現関係がモデル化されます。

クラス間の関連をリバース・エンジニアリングするためには、Javaソースで関連を表すフィールドの前に、@association <association_name> destination_classnameというJavadocタグを付けておく必要があります。Javaソースでのフィールドのタイプがコレクション型(Listなど)の場合、その関連の終端の多重度は、モデル化された関連では*として定義されます。たとえば、orderEntryパッケージに属するOrderクラスとOrderItemクラスの間の関連を定義する場合、次のようなJavadocタグを使用します。

/**
*
*@association <orderEntry.OrderEntryItems> orderEntry.OrderItem
*/
private List m_items;

注意: Javaソース・コードからモデル化された要素をリバース・エンジニアリングすると、モデル化された要素は自動的にナビゲータ・ペインに配置されます。

モデルとコードの同期

モデル化されたJavaクラスまたはJavaインタフェースからJavaソース・ファイルを生成する際、あるいはモデル化された要素をJavaソース・コードからリバース・エンジニアリングする際、モデル化されたJavaクラスと、生成されたJavaソース・ファイルは同期化されます。モデルとソース・ファイルとの同期化により、モデルに対するすべての変更が自動的にソースに反映され、ソースに対するすべての変更が自動的にモデルに反映されます。

ダイアグラムとソース・コードの表示を切り替えたり、明示的に保存を実行するたびに、ダイアグラム上で行った変更はすべて自動的にソース・コードに反映され、同様にソース・コードで行った変更はすべて自動的にダイアグラムに反映されます。

注意: クラス・モデラーを使用してモデル要素からJavaソースを生成し、その後、生成されたソース・ファイルの名前の変更、移動または削除を行った場合、次にそのモデル要素の定義を変更したときに、クラス・モデラーはモデル化された要素からスケルトンJavaクラスを再生成します。ただし、状況により再生成されない場合があります。生成されたJavaソース・ファイルの名前の変更または移動を行う際は、あらかじめソース・ファイルのバックアップを作成することをお薦めします。

コード生成アイコン

モデル化されたJavaクラスまたはJavaインタフェースからJavaコードを生成すると、またはJavaコードからモデル化されたJavaクラスまたはインタフェースをリバース・エンジニアリングすると、ダイアグラム上の要素の左上隅にアイコンが表示されます。

Generated code icon


関連項目

モデル化されたクラスからのJavaソース・コードの生成
Javaソース・コードのリバース・エンジニアリング
生成されたJavaソース・コードの再編成について
クラス・モデル要素へのJavadocコメントの追加