ベーステンプレート

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張(SDK) > コード生成テンプレートフレームワーク > コード生成テンプレートの概要 >

ベーステンプレート

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のクラスの操作のノートに対応したソースコードを生成するテンプレートです。

 

 

参照: