パッケージと名前空間の定義
Visual Studio Ultimate におけるパッケージは、UML 要素 (クラス、ユース ケース、コンポーネントなど) の定義のコンテナーです。パッケージに他のパッケージを格納することもできます。
UML モデル エクスプローラーでは、パッケージ内のすべての定義は、そのパッケージの下に入れ子として表示されます。UML モデルはパッケージの一種であり、ツリーのルートを構成します。
このトピックの内容
名前空間
パッケージの生成と表示
パッケージ内でのモデル要素の生成
パッケージ内外への要素の移動
パッケージへの要素の貼り付け
パッケージ間のインポートの関係
ある名前空間から別の名前空間への参照
パッケージのプロパティ
名前空間
パッケージは、作業を個別の領域に分割するのに役立ちます。異なるパッケージに定義された名前が互いに競合しないように、各パッケージには名前空間が定義されます。
各要素の修飾名プロパティは、その要素が属するパッケージの修飾名と要素自体の名前で構成されます。たとえば、パッケージが MyPackage の場合、そのパッケージ内のクラスの修飾名は MyPackage::MyClass になります。要素は必ずモデルに格納されるため、すべての修飾名の先頭にモデルの名前が付きます。
モデルにも名前空間が定義されるため、モデル内の要素の修飾名の先頭には、必ずモデルの名前が付きます。
名前空間が定義されるモデル要素は他にもあります。たとえば、操作がその親クラスで定義された名前空間に属している場合、その修飾名は MyModel ::MyPackage ::MyClass ::MyOperation のようになります。同じように、アクションはその親アクティビティで定義された名前空間に属します。
パッケージはコンテナーです。パッケージを移動または削除すると、そのパッケージに定義されているクラスやパッケージなどの要素も移動または削除されます。これは、名前空間が定義されている他の要素にも当てはまります。
パッケージの生成と表示
パッケージは、UML クラス図か UML モデル エクスプローラーで生成できます。
UML クラス図でパッケージを生成するには
UML クラス図を開くか、新しい UML クラス図を生成します。
[パッケージ] ツールをクリックします。
図上の任意の場所をクリックします。新しいパッケージのシェイプが表示されます。
既存のパッケージの内部をクリックして、他のパッケージの入れ子にすることができます。
パッケージの新しい名前を入力します。
UML モデル エクスプローラーでパッケージを生成するには
UML モデル エクスプローラーを開きます。[アーキテクチャ] メニューの [ウィンドウ] をポイントし、[UML モデル エクスプローラー] をクリックします。
新しいパッケージの追加先のパッケージまたはモデルを右クリックします。
[!メモ]
パッケージは、別のパッケージの入れ子にすることができます。
[追加] をポイントし、[パッケージ] をクリックします。
新しいパッケージがモデルに表示されます。
パッケージの新しい名前を入力します。
UML モデル エクスプローラーで生成したパッケージは、UML クラス図に表示できます。1 つのパッケージを複数の UML クラス図に表示することもできます。
既存のパッケージを UML クラス図に表示するには
UML モデル エクスプローラーからクラス図上へパッケージをドラッグします。
[!メモ]
この操作により、この図上にパッケージのビューが生成されます。パッケージに含まれるすべての要素が表示されるとは限りません。パッケージのすべてのコンテンツを表示するには、パッケージを UML モデル エクスプローラーで表示してください。
パッケージ内でのモデル要素の生成
モデル要素をパッケージ内に配置する方法には、次の 4 種類があります。
UML モデル エクスプローラーで新しい要素をパッケージに追加する。
UML クラス図でクラスおよび他の型をパッケージに追加する。
図に生成した新しい要素が指定したパッケージ内に配置されるように、図の LinkedPackage プロパティを設定する。この方法で、クラス図、コンポーネント図、およびユース ケース図をパッケージにリンクできます。
UML モデル エクスプローラーでパッケージの内外に要素を移動する。
UML モデル エクスプローラーでは、パッケージ内の要素はそのパッケージの下に表示され、要素の修飾名の先頭にパッケージの修飾名が付けられます。任意の要素の修飾名を表示するには、要素を右クリックし、[プロパティ] をクリックします。[Qualified Name] プロパティが [プロパティ] ウィンドウに表示されます。
UML モデル エクスプローラーでパッケージに要素を生成するには
UML モデル エクスプローラーを開きます。[表示] メニューの [その他のウィンドウ] をポイントし、[UML モデル エクスプローラー] をクリックします。
新しい要素の追加先のパッケージまたはモデルを右クリックします。
[追加] をポイントし、追加する要素の種類をクリックします。
新しい要素がパッケージの下に表示されます。
新しい要素の名前を入力します。
[!メモ]
新しい要素は図に表示されません。新しい要素のビューを生成するには、要素を UML モデル エクスプローラーから図上にドラッグします。この図は、この種類の要素が表示されるタイプの図であることが必要です。
UML クラス図でパッケージに要素を生成するには
パッケージが表示されるクラス図を開きます。
新しいパッケージを生成していない場合は、パッケージを生成します。
既存のパッケージをクラス図に表示するには、UML モデル エクスプローラーからクラス図上にパッケージをドラッグします。
クラス、インターフェイス、列挙体、またはパッケージのツールをクリックします。
新しい要素を追加するパッケージをクリックします。
新しい要素がパッケージ内に表示されます。
指定したパッケージに図のすべての要素を生成するには
パッケージを生成していない場合は、パッケージを生成します。
コンポーネント図、ユース ケース図、または UML クラス図を開きます。
図のプロパティを開きます。図の空白部分を右クリックし、[プロパティ] をクリックします。
[Linked Package] プロパティで、図のコンテンツを格納するパッケージを選択します。
図で新しい要素を生成します。生成した要素がパッケージに配置されます。
各要素の修飾名の先頭には、パッケージの修飾名が付きます。
UML モデル エクスプローラーでは、各要素はパッケージの下に表示されます。
パッケージ内外への要素の移動
パッケージの内外に 1 つ以上の要素を移動できます。
パッケージを移動すると、パッケージに含まれるすべての要素が同時に移動します。
パッケージの内外に要素を移動するには
UML モデル エクスプローラーで、パッケージがルートになっているツリーの内外に要素をドラッグします。
要素の修飾名が、その要素を所有する新しいパッケージまたはモデルを示す名前に変更されます。
または
クラス図で、要素をパッケージのシェイプにドラッグします。
要素の修飾名が、その要素を所有する新しいパッケージを示す名前に変更されます。
[!メモ]
要素をパッケージから図の空白部分にドラッグした場合、その要素を所有するパッケージは変更されません。この操作により、パッケージ自体を表示することなく、複数のパッケージの要素を表示する図を生成できます。
パッケージへの要素の貼り付け
要素をパッケージに貼り付けることができます。関連する要素のグループをパッケージに貼り付けると、要素間の関係も貼り付けられます。
UML クラス図でパッケージに要素を貼り付けるには
UML クラス図で、コピーするすべての要素を選択します。そのいずれかを右クリックし、[コピー] をクリックします。
パッケージを右クリックし、[貼り付け] をクリックします。
[!メモ]
別の図のパッケージに要素を貼り付けることもできます。
パッケージ間のインポートの関係
インポート ツールを使用すると、パッケージ間のインポートの関係を定義できます。
インポートでは、インポート元のパッケージに定義されている要素 (関係の矢印の端にある要素) が、インポート先のパッケージにも適切に定義されます。可視性が Package として定義されている要素は、インポート先のパッケージでも表示されます。
インポートの関係にループが生じないようにしてください。
ある名前空間から別の名前空間への参照
あるパッケージの要素から別のパッケージの要素を参照する場合は、要素の修飾名を使用する必要があります。
たとえば、SalesCommon というパッケージに CustomerAddress という型が定義されているとします。別の RestaurantSales というパッケージには、Customer Address 型の属性を持つ MealOrder という型を定義する必要があるとします。これには、2 つの方法があります。
SalesCommon::CustomerAddress という完全修飾名を使用して、属性の型を指定します。この方法は、CustomerAddress の Visibility プロパティ セットが Public に設定されている場合にのみ使用してください。
RestaurantSales パッケージから SalesCommon パッケージへのインポートの関係を生成します。この後で、修飾名を使用せずに CustomerAddress を使用できます。
パッケージのプロパティ
各パッケージには次のプロパティがあります。プロパティを表示するには、図または UML モデル エクスプローラーでパッケージを右クリックし、[プロパティ] をクリックします。
プロパティ |
既定値 |
Description |
---|---|---|
名前 |
(新しい名前) |
パッケージの名前。図内またはプロパティ ウィンドウで変更できます。 |
Qualified Name |
<コンテナー> :: <パッケージ名> |
完全名。このパッケージを含むパッケージまたはモデルの名前がプレフィックスとして付けられます。詳細については、「名前空間」を参照してください。 |
プロファイル |
(空) |
このパッケージにリンクされているプロファイルの一覧。これらのプロファイルは、パッケージ内の要素に適用できるステレオタイプを提供します。詳細については、「プロファイルとステレオタイプを使用したモデルのカスタマイズ」を参照してください。 |
Visibility |
Public |
親パッケージ外でのパッケージの可視性。 |
作業項目 |
(空) |
リンクされた作業項目の一覧。詳細については、「モデル要素と作業項目とのリンク」を参照してください。 |
Definition Location |
(名前) |
パッケージの詳細が格納されているファイルの名前。このファイルは、ModelDefinition プロジェクト フォルダーにあります。この情報は、ソース管理の際に役立ちます。 |
Description |
(空) |
パッケージの説明。 |
Stereotypes |
(空) |
このパッケージに適用されるステレオタイプ。使用できる一連のステレオタイプは、このパッケージと、このパッケージを含むパッケージ用に選択したプロファイルによって決まります。詳細については、「プロファイルとステレオタイプを使用したモデルのカスタマイズ」を参照してください。 |
パッケージを格納する方法
新規パッケージを作成すると、ModelDefinition プロジェクト フォルダーに新しい .uml ファイルが作成されます。ルート モデルもパッケージであるため、.uml ファイルに格納されます。
さらに、それぞれの図は 2 つのファイルに格納されます。1 つは図の形状を表すファイル、もう 1 つは形状の位置を記録する .layout ファイルです。