パターン
モデリングの概念 への移動
目次
ソフトウェア開発者は、パターンを通じて、強力な再利用機能を手に入れることができます。 個々設計の問題に最初から取り組むのではなく、定義済みのパターンを利用することができます。 パターンの階層は、[パターン レジストリ]に定義されます。 [パターン オーガナイザ]を使用すると、パターンを管理したり、論理的に整理することができます。
パターンの目的
- よく使用される要素の作成。
- 既存の要素の変更。
- 有用なソース コード構造の実装。
[パターン レジストリ]
[パターン レジストリ]には一連のパターンが格納されています。 [パターン レジストリ]に格納されたパターンを表示するには、[パターン レジストリ]ビューアを使用します。 [パターン レジストリ]ビューアでは、カテゴリ、メタクラス、ダイアグラムの種類、言語、登録状態に基づいてパターンをフィルタリングし、パターン プロパティを表示することができます。 [パターン レジストリ]ビューアは、[パターン オーガナイザ]のコンテキスト メニューから、新しいショートカットを作成する場合には[ショートカットの新規作成]コマンドを、パターンをショートカットに割り当てる場合には[パターンの割り当て]コマンドを使用すると、開くことができます。
[パターン オーガナイザ]
[パターン オーガナイザ]では、(仮想ツリー、フォルダ、およびショートカットを使って)パターンを論理的に整理したり、パターン プロパティを参照および編集することができます。 [パターン オーガナイザ]で操作するのは、実際のパターンではなく、パターンへのショートカットです。 そのため、同じパターンへのショートカットが複数のフォルダに存在することがあります。
テンプレート
モデリングでは、以前のバージョンで作成された従来のプロジェクトとの下位互換性を提供する手段としてテンプレートをサポートしています。 従来のソース コード テンプレートが含まれているフォルダをインストール ディレクトリの Patterns
サブフォルダにコピーし、それらのテンプレートを使用して実装プロジェクトに要素を作成することができます。
テンプレートは言語固有のファイル名拡張子の付いたテキスト ファイルで、その中では、テンプレートの適用時に実際の値に置換されるマクロが使用されています。 したがって、テンプレートは、実際の値に応じていつでも値を "記入" できる状態になっているフォームと考えることができます。 テンプレートは、ソース コードが記述されたテンプレート ファイルと、マクロの記述とデフォルト値が記載されたプロパティ ファイルで構成されます。
テンプレートは、製品インストール先の Patterns\templates
サブディレクトリに以下の構造で格納されています。
\<language>\<category>\<template name>
ここで、<category>
は Class
、Link
、Member
のいずれかです。 各 <template_name>
フォルダには以下のファイルが含まれています。
%Name%.<ext>
<template_name>.properties
(省略可能)
デザイン パターン
デザイン パターンは、モデリング要素やリンクの作成とそれらのプロパティの設定に必要な一連のステートメントまたはアクションが記述された XML ファイルです。 各ステートメントは、1 つのモデル要素かモデル要素間の 1 つのリンクのいずれかを作成します。
新しいモデリング要素を作成できるだけでなく、デザイン パターンを使用してコンテナ要素にメンバを追加することもできます。 指定されたコンテナ要素に適用されるパターンは、[既存コードを使用]プロパティがオン
に設定されていなければなりません。 これで、変更するコンテナ要素にそのパターンを適用できます。 たとえば、パターンとして保存されているいくつかのメソッドを既存のクラスに追加する場合は、そのクラスが存在するダイアグラムにパターンを適用する必要があります。
デザイン パターンは、製品インストール先の Patterns
サブフォルダに XML ファイルとして格納されています。
FCC(First Class Citizens:ファースト クラス要素)としてのパターン
FCC(First Class Citizen)パターンは、パターン名と各構成要素の役割に関する情報が記載された特殊なデザイン パターンです。 ダイアグラムに適用されると、FCC パターンは独自のエンティティを作成し、作成したエンティティへのリンクと共にダイアグラムに表示されます。 このようなパターンは、新しい構成要素を追加することで、さらに変更を行うことができます。
FCC パターンは GoF パターンで表されます。
パターンは、パターン名と展開可能な構成要素リストの付いた楕円としてダイアグラムに表示されます。 各構成要素は、その構成要素の役割を示すラベルが付いたリンクによってパターンの楕円に接続されます。
FCC パターンはソース コードを生成します。 パターンから生成されたエンティティは、ダイアグラムのファイルに保存されます。
スタブ実装のためのパターン
あるクラスと別の抽象クラスまたはインターフェイスの間に継承リンクを作成しても、メソッドとメンバは子クラスに自動的には追加されません。 この問題は、[スタブ実装]パターンを使って解決できます。 また、[実装リンクとスタブ]パターンを使って、実装リンクとスタブの実装を一度に作成することもできます。
リンク先がインターフェイスの場合に[スタブ実装]パターンを適用すると、そのインターフェイスを実装するリンク元クラスが作成され、クラス内にそのインターフェイスとその親のインターフェイスすべてで宣言されているすべてのメソッドのスタブが作成されます。
リンク先が抽象クラスの場合に[スタブ実装]パターンを適用すると、リンク元クラスの中に、リンク先クラスの要素を拡張するコードが生成されます。 また、リンク先クラスで宣言されているすべてのコンストラクタのスタブが生成されます。 これらのコンストラクタ スタブでは、リンク先クラス内の対応するコンストラクタが呼び出されます。
[リンクとスタブの実装]パターンは[パターン ウィザード]にあります。 [パターン ウィザード]を表示させるには、[ツール パレット]の[パターンからのリンク]または[パターンからのノード]をクリックするか、クラスのコンテキスト メニューで[パターンの適用...]をクリックします。
[リンクとスタブの実装]パターンは、インターフェイスと抽象クラスの次のメンバを作成します。
- メソッド
- 関数
- サブルーチン
- プロパティ
- インデクサ
- イベント