| << 目次を表示 >> ページ位置: Enterprise Architectの拡張 > ソースコード生成のカスタマイズ > コード生成テンプレートの概要 > ベーステンプレート | 
Enterprise Architectのコード生成テンプレート機能は、さまざまな「ベーステンプレート」から構成されています。それぞれのベーステンプレートは、テンプレートが対応するUMLの構成からオブジェクト指向言語のソースコードに変換するために利用します。
追加情報
ベーステンプレートは階層的な構成になっていて、プログラム言語によって変えられるようになっています。
一般的な階層構造はC#やJavaのように、ヘッダファイルを持たないものです。下の図ではテンプレートをクラスとしてモデリングしたものです。この階層構造はC++やDelphiではもう少し複雑になります。これらの言語では実装テンプレートが追加されます。
それぞれのベーステンプレートはコード生成のために修正する必要性がある場合もあります。その場合には、それぞれのテンプレートは対応するプログラム言語(あるいは製品)ごとに修正します。例えば、ClassBodyテンプレートはC++やC#、Javaなどで異なります。テンプレートを修正することで、UMLの要素に対応したコードを生成できます。
ベーステンプレートを特定のプログラム言語のために修正したら、更に以下のような修正も必要になります。
この種の修正作業は例えばC#の操作に必要です。ステレオタイプ<<property>>は、通常の操作とは別のテンプレートが必要になります。OperationBody テンプレートではこのための修正が必要になります。
CTFは、いくつかのベーステンプレートから構成されてます。それぞれのベーステンプレートはUMLおよびプロジェクト内のさまざまな情報をプログラム言語のコードに変換します。下の表はベーステンプレートの一覧とその簡単な説明です。その次の表はコード生成のために利用されるテンプレートで、インターフェースと実装が分かれているものを示しています。
| テンプレート | 説明 | 
| Attribute | UMLの属性に対応したメンバー変数を生成するためのトップレベルテンプレートです。 | 
| Attribute Declaration | メンバー変数の宣言を生成するための属性テンプレートです。 | 
| Attribute Notes | メンバー変数のノートを生成するためのテンプレートです。 | 
| Class | UMLのクラスを生成するためのトップレベルテンプレートです。 | 
| Class Base | 親クラスがモデル内に存在しない場合のクラスの名前や継承関係についてのコードを生成するテンプレートです。 | 
| Class Body | クラスの本体を生成するためのテンプレートです。 | 
| Class Declaration | クラスの宣言部分を生成するテンプレートです。 | 
| Class Inherits | クラスの継承(汎化)関係を示す宣言文を処理するためのテンプレートです。 | 
| Class Interface | インターフェースクラスがモデル内に存在しない場合のインターフェースに対応したソースコードを生成するためのテンプレートです | 
| Class Notes | クラスのノートを生成するためのテンプレートです。 | 
| Class Parameter | クラスの継承(汎化)関係を示す宣言文を作成する際に、テンプレートパラメータを処理するためのテンプレートです。 | 
| File | ソースファイルを生成するためのトップレベルテンプレートです。 C++のような言語の場合には、ヘッダファイルになります。 | 
| Import Section | 外部の依存関係を生成するためのテンプレートになります。 | 
| Linked Attribute | UMLの関連から派生した属性を生成するためのトップレベルテンプレートです。 | 
| Linked Attribute Notes | 属性のノートを生成するためのテンプレートです。 | 
| Linked Attribute Declaration | 属性の宣言を生成するためのテンプレートです。 | 
| Linked Class Base | 汎化による親クラスについての情報を生成するためのテンプレートです。 | 
| Linked Class Interface | 実現によるインターフェースについての情報を生成するためのテンプレートです。 | 
| Namespace | UMLのパッケージから名前空間を生成するためのトップレベルテンプレートです。すべてのプログラム言語で名前空間をサポートしているわけではありませんが、このテンプレートはそれぞれの言語に応じた情報を生成します。 例えば、Javaの場合にはパッケージ構成についての情報を生成しています。 | 
| Namespace Body | 名前空間の本体に対応するソースコードを生成するためのテンプレートです。 | 
| Namespace Declaration | 名前空間の宣言部分を生成するためのテンプレートです。 | 
| Operation | UMLのクラスの操作に対応したトップレベルテンプレートです。 | 
| Operation Body | 操作の本体に対応したテンプレートです。 | 
| Operation Declaration | 操作の宣言に対応したテンプレートです。 | 
| Operation Notes | 操作のノートに対応したテンプレートです | 
| Parameter | 操作のパラメータを生成するためのテンプレートです。 | 
次の表は、C言語やC++などのようにヘッダファイルと実装ファイル(ソースファイル)の2つがある場合に利用するテンプレートです。実装ファイル側の内容を記述するためのテンプレートです。
| テンプレート | 説明 | 
| Class Impl | クラスの宣言を生成するトップレベルテンプレートです | 
| Class Body Impl | クラスのメンバーの実装を生成するテンプレートです。 | 
| File Impl | 実装ファイルを生成するためのテンプレートです。 | 
| File Notes Impl | ソースファイルのノートを生成するためのテンプレートです。 | 
| Import Section Impl | 外部の依存関係を生成するためのテンプレートです。 | 
| Operation Impl | UMLのクラスの操作に対応したソースコードを生成するテンプレートです。 | 
| Operation Body Impl | UMLのクラスの操作の本体に対応したソースコードを生成するテンプレートです。 | 
| Operation Declaration Impl | UMLのクラスの操作の宣言に対応したソースコードを生成するテンプレートです。 | 
| Operation Notes Impl | UMLのクラスの操作のノートに対応したソースコードを生成するテンプレートです。 | 
参照: