ここでは astah* の編集APIを利用したサンプル「C++リバースプログラム」を解説します。
本アプリケーションを用いて、C++ソースコードから astah*モデルを作成できます。
- 動作に必要な環境
- 対応項目の詳細 (このページ)
- Doxygenのダウンロード、インストール、設定
- 本プログラムの設定 -Config.propertiesファイル
- クラス図を自動作成する
- サンプルプログラムをコンパイルするには
未対応の項目
現在、次の項目は未対応のためリバースできません。
- B & operator=(sonst B &)
- extern
- 英語以外(例:日本語)を含むクラス、属性、操作等(doxygen1.5.7以降で解消済み)
- 英語以外(例:日本語)のパスを含むファイル
対応項目の詳細
- クラス、属性、操作の情報を定義を含めて取込みます。
- [バージョン 6.3以降] stdパッケージに含まれないクラス、テンプレートを持つコレクションクラスの場合(std::list<Child>, std::list<Child,allocator<Child>>, std::set<Child>, std::queue<Child>, std::vector<Child>, std::stack<Child>, std::map<string, Child>)は関連として出力され限定子、制約({ordered},{unique})、多重度を設定するように改善しました。(【本プログラムの設定 - Config.propertiesファイル】のjude_cplus_types_for_attributeより優先されます。)
| ソースコード(親クラスの属性のタイプ) | 親関連端の限定子 | 子関連端 | 多重度 | 制約 |
|---|---|---|---|---|
| std::list<Child> | なし | Child | * |
{ordered} |
| std::list<Child,allocator<Child>> | なし | Child | * | {ordered} |
| std::set<Child> | なし | Child | * | {unique} |
| std::queue<Child> | なし | Child | * | {ordered} |
| std::vector<Child> | なし | Child | * | {ordered} |
| std::stack<Child> | なし | Child | * | {ordered} |
| std::map<string, Child> | key:string | Child | なし | なし |
| ユーザー定義テンプレートクラス<Child> | なし | ユーザー定義テンプレートクラス<Child> | なし | なし |
| ユーザー定義クラス[] | なし | ユーザー定義クラス | * | なし |
| デフォルトモデル | astah* professional(astah* UML)インストールフォルダ\template\project\C++.astaをデフォルトモデルとして読み込みます。このファイルがない場合、デフォルトモデルを読み込みません。C++.astaはastah* professional(astah* UML)インストール時に配備され、std配下の主要なクラスを含みます。 |
| ~destructor() | 操作(名前: ~から始まる名前、戻り型: " ") |
| enum |
|
template <class T=B> |
[JUDE 5.4.xまで]
|
| int b[2][2] = {{1,2},{3,4}} | 属性(名前:b、型:int、多重度:2 , 2、初期値:{{1,2},{3,4}})が生成される |
| int *p | [JUDE 5.4.xまで]
|
| int **p | [JUDE 5.4.xまで]
|
| int p = &a | 属性(名前:p、型:int、初期値:&a)が生成される |
| int (*pf)(int) |
関数ポインタにあたるクラス(名前:int (*)(int))が作成され、そのクラスには、操作(名前:function、型:int、パラメタ:int arg0)が生成される。 |
| int (*pa)[3] | クラス(名前:int (*))が生成される。参照元クラスには、属性(名前:pa、型:int (*、多重度3))が生成される。 |
| int add(int,int) | int add(int arg1, int arg2) |
| static | [属性] ベースタブのStatic、[操作]ベースタブのStatic |
| struct | [クラス] ステレオタイプタブの <<struct>> |
| union | [クラス] ステレオタイプタブの <<union>> |
| void fun(int a=1,int b=3,int c=5) | void fun(int a,int b,int c)と解釈。パラメタの初期値は設定されない |
| クラス内に存在しない属性 | クラス(名前:Global)、その中に属性が作成される |
| クラス内に存在しない操作 | クラス(名前:Global)、その中に操作が作成される |
| プリミティブ型 | [JUDE 5.4.xまで] クラスとしてリバース [JUDE 5.5以降] [astah* 6.0以降] プリミティブ型としてリバース |
| typedefで宣言された型 | 宣言元の型が使用される |
| friend | [JUDE 5.5以降] [astah* 6.0以降] [クラス] 言語タブのfriend、[操作] 言語タブのfriend |
| const |
[JUDE 5.4.xまで] [JUDE 5.5以降] [astah* 6.0以降] |
| mutable | [JUDE 5.5以降] [astah* 6.0以降] [属性] 言語タブのmutable Doxygen 1.5.7.1までは memberdefタグのmutable属性に常に noが設定されるためコンバートできない。yesにするとコンバートの結果に反映される。 |
| volatile | [JUDE 5.5以降] [astah* 6.0以降] [属性]言語タブのvolatile |
| explicit | [JUDE 5.5以降] [astah* 6.0以降] [操作]言語タブのexplicit |
| inline | [JUDE 5.5以降] [astah* 6.0以降] [操作]言語タブのinline |
| virtual | [JUDE 5.5以降] [astah* 6.0以降] [操作]言語タブのvirtual |


