モデルとソース コードとの同期
モデリングの概念 への移動
目次
同期の種類
モデリング機能では、さまざまなモデリング プロジェクトでさまざまな同期を行うことができます。
- デザイン プロジェクト
- デザイン プロジェクトでは、モデリング機能により、[モデル ビュー]のモデル ツリーと[ダイアグラム]ビューのすべての種類のダイアグラムとの同期が保たれます。
- 実装プロジェクト
- 実装プロジェクトでは、モデリング機能により、実装モデリング プロジェクトをさまざまに表現した次のものの間で常に同期が保たれます。
- [モデル ビュー] -- モデリング プロジェクトに含まれるすべての項目の階層ツリー。
- [ダイアグラム]ビュー -- モデリング ダイアグラム。クラス図はソース コードと同期が保たれます。
- ソース コード -- 実装プロジェクトに含まれるクラスやインターフェイスといったプログラミング構造の、Delphi または C++ のソース コード。
- クラス図以外の種類のダイアグラムについては、モデリング機能では、[モデル ビュー]のモデル ツリーと[ダイアグラム]ビューのすべての種類のダイアグラムとの同期が保たれるだけです(デザイン プロジェクトと同じです)。
モデリング ビューの間の同期
モデリング機能では、IDE のいくつかのビュー機能を使ってモデルを管理しています。主なビューは、[モデル ビュー]、[ダイアグラム]ビュー、および[オブジェクト インスペクタ]です。モデリング機能では、これらのビューを緊密に連携させて使用しています。このいずれかのビューでモデル要素を変更すると、モデリング機能によってその変更が他のビューにも即座に反映されます。
- [モデル ビュー]
- [プロジェクト マネージャ]がファイルを中心に表示するのに対して、[モデル ビュー]はプロジェクトの論理構造をツリー形式で表示します。プロジェクト グループ内の各プロジェクトは、[モデル ビュー]に表示されるモデル ツリーの最上位ノードになります。各プロジェクトのツリー ノードの中には、UML パッケージのノードがネストされています。UML パッケージを展開すると、そこで宣言されている型(クラス、インターフェイスなど)やダイアグラムが現れます。
- [ダイアグラム]ビュー
- モデリング機能では、[ダイアグラム]ビューを使って、モデル内で定義されたダイアグラム(クラス図など)を表示します。[モデル ビュー]でダイアグラム ノードをダブルクリックすると、そのダイアグラムが[ダイアグラム]ビューで開きます。
- [オブジェクト インスペクタ]
- モデリング機能では、[オブジェクト インスペクタ]を使って、[モデル ビュー]または[ダイアグラム]ビューで選択したモデル要素のプロパティを表示します。
ソース コードと UML モデルとの同期
実装プロジェクトの UML モデルとそのプロジェクトの Delphi または C++ ソース コードとのリアルタイム同期は、モデリングの主要機能です。
モデリングのソース コード同期は、以下のものを指します。
- ソース コード ビジュアライゼーション
- Delphi または C++ のソース コードを読み取って、コード内の宣言を UML 表記法にマッピングし、そのマッピングをグラフィカルなビューに表現する機能です。
- ソース コード生成
- それとは逆の、グラフィカルなモデルを表す Delphi または C++ ソース コードを生成する機能です。
モデリング機能では、ソース コード内の特定の構造(クラスの宣言やインターフェイスの実装)を対応する UML 要素にマッピングし、それを[ダイアグラム]ビューのクラス図や[モデル ビュー]のモデリング プロジェクト ツリーに表示します。このように、ソース コード同期によってソース コードのグラフィカルなビュー(モデル ツリーやクラス図)が表示され、そのモデル ツリーやクラス図にはソース コードが直接反映されます。
ソース コード同期は、次のモデリング機能を指します。
-
- Delphi または C++ プロジェクトのモデリング サポートを有効にすると、モデリング機能は Delphi または C++ プロジェクトの既存のソース コードを解析し、適切なモデリング エンティティを生成して実装プロジェクトに変換します。 生成されるモデリング エンティティには、[モデル ビュー]で管理されるモデル ツリーや、[ダイアグラム]ビューで管理されるクラス図が含まれます。
-
- コード エディタで Delphi または C++ のソース コードを変更すると、モデリング機能により、[ダイアグラム]ビューの適切なクラス図や[モデル ビュー]のモデル ツリーの適切な要素が、すぐさま自動的に更新されます。 更新されたダイアグラムやモデル ツリーは、ソース コードの最新の状態を常に反映しているという意味で "本物" だといえます。
-
- 注意! クラス名を変更するなど、コード エディタで Delphi または C++ のソース コードを直接変更した場合には、モデリング機能でその変更を正しく把握できない可能性があります。把握できるようにするには、リファクタリング操作を使用してください。
-
- モデリングでは、ダイアグラム作成画面でアプリケーションを設計する機能も提供しています。
- モデリング機能により、モデル ツリーやクラス図で行われた変更が、既存の Delphi または C++ のソース コードに即時にマッピングされます。
-
-
- 新しいクラス図を作成したり既存のクラス図を変更すると、モデリング機能により、対応する Delphi のソース コードが即座に更新され、クラス図との同期が取られます。
-
-
-
- 変更は[ダイアグラム]ビューのクラス図や[モデル ビュー]のモデル ツリーで直接行うことができ、その変更はモデリング機能により Delphi のソース コードに即座に反映されます。
- ダイアグラム作成画面で、名前の変更、メンバの追加、リンクの新規作成、パターンの適用などを行うと、それに合わせて実際のソース コードが変更されます。
-
クラス図
クラス図は、UML の静的構造図の一種です。 プロジェクトの構造ビューでは、UML のパッケージ、クラスやインターフェイスといったデータ型、およびそれらの属性、プロパティ、オペレーションに着目します。 クラス図には、これらのエンティティ間に存在する関係もグラフィカルに表示されます。 つまり、クラス図には、モデリング プロジェクトで定義されているクラス、インターフェイス、パッケージといったエンティティの論理的な関係(UML の用語では静的構造)が表示されます。
モデリング機能により、クラス図の要素、モデル ツリーの対応する要素、Delphi の対応するソース コードは、変更が行われると即座に同期されます。
継承とインターフェイス実装
汎化とは、あるクラスがスーパークラスを継承するという関係を指す UML 用語です。ソース コード内に継承関係があると、[モデル ビュー]ツリーの子クラス ノード内に汎化リンクが作成されます。[ダイアグラム]ビューのクラス図では、汎化リンクは、UML の標準表記法に従い、子クラスから始まってスーパークラスを指す白抜きの矢印が付いた実線で表されます。
インターフェイス実装は、クラスによるインターフェイスの実装を指す UML 用語です。継承の場合と同様に、インターフェイスを実装するクラス宣言が見つかると、モデリング機能により実装リンクが作成されます。[モデル ビュー]ツリーでは、実装リンクはインターフェイスを実装しているクラスのノード内に表示されます。クラス図では、実装リンクは、クラスから始まってインターフェイスを指す白抜きの矢印が付いた破線で表されます。クラスが実装するインターフェイスごとに、このような実装リンクが 1 つ作成されます。
関連
UML の関連は、あるクラスが別のクラスに対する参照を(たとえば属性やプロパティとして)保持しているときに作成されるナビゲーション リンクです。モデリング機能では、クラスがプリミティブ データ型以外の属性やプロパティを持つ場合に、クラス図に関連リンクが作成されます。関連リンクは、クラス図で、プリミティブ以外のメンバを含むクラスと、そのメンバのデータ型(クラス)との間の実線として表されます。
クラス メンバ:属性、メソッド、プロパティ、ネストした型
モデリング機能では、クラスおよびインターフェイスのメンバ宣言を、対応する UML の要素にマッピングすることもできます。[ダイアグラム]ビューのクラス図の要素内では、メンバは次の区画に分けて表示されます。
- [フィールド] -- フィールドの宣言を含みます。型と、デフォルト値の割り当て(省略可能)がダイアグラムに示されます。
- [メソッド] -- メソッドの宣言を含みます。可視性、スコープ、および戻り値が示されます。
- [プロパティ] -- Delphi のプロパティの宣言を含みます。プロパティの型が示されます。
- [クラス] -- ネストしたクラスの宣言を含みます。
-
- これは、[インターフェイス]などの他の区画内でも使用できます。 使用できる区画の種類は、モデリング プロジェクトの種類(デザイン プロジェクト、Delphi の実装プロジェクト)によって異なります。
標準の UML 構文を使用して、属性、メソッド、およびプロパティの UML 宣言が表示されます。4 つのカテゴリは、それぞれ展開したり折りたたんで、カテゴリ内のメンバを表示または非表示にすることができます。
実装されたプロパティとドキュメント コメントの同期
[オブジェクト インスペクタ]でモデル要素やメンバに対して定義されるプロパティの中には、言語固有のドキュメント コメントとしてソース コード内に記載されるものがあります。具体的には、[作者]、[導入されたバージョン]、[バージョン]、[ステレオタイプ]、[関連]などのプロパティです。
たとえば、[作者]のプロパティに Embarcadero
という値を定義すると、モデリング機能により Delphi ソース コード内に次のドキュメント コメントが生成されます。
/// <author>Embarcadero</author>
モデリング機能は、ソース コード内にこのようなコメントを見つけると、それをリバース エンジニアリングしてモデル要素の適切なプロパティに設定します。
明示的な同期コマンド
次のコマンドを使用すると、明示的に同期を取ることができます。
- [モデル ビュー] -- 次のものを使用できます。
-
- [再読み込み]コマンド。ソース コードを元に UML モデルを明示的に更新(モデル全体を再読み込み)します。実装プロジェクトのルート プロジェクト ノードで使用可能です。
- [モデル ビューの更新]ツールバー ボタン。モデル ツリーを更新します。
- [ダイアグラム]ビュー -- [更新]コマンドを使用する(または F5 キーを押す)と、ダイアグラムを更新することができます。