汎化関係

UML モデリングにおける汎化関係は、 あるモデル要素 (子) が他のモデル要素 (親) に基づいて 作成される関係のことをいいます。汎化関係は、クラス図、コンポーネント図、配置図、 およびユースケース図で使用され、 親で定義されるすべての属性、操作、および関係を、 子が受け取ることを表します。

UML セマンティクスに適合するために、 汎化関係内のモデル要素は、すべて同じタイプである必要があります。 例えば、アクター同士または ユースケース同士においては、汎化関係を使用することができますが、 アクターとユースケースの間で使用することはできません。

汎化関係を追加して、親モデル要素内の属性、操作、および関係を取り込み、 これらを 1 つ以上の子モデル要素で再使用することができます。 汎化における子モデル要素は、 親モデル要素の属性、操作、および関係を継承します。 したがって、子モデル要素に定義する必要があるのは、 親とは異なる属性、操作、および関係のみとなります。

親モデル要素は、1 つ以上の子モデル要素を持つことができます。 子モデル要素は、1 つ以上の親モデル要素を持つことができます。 単一の親モデル要素と複数の子モデル要素を持つ場合が、一般的です。

汎化関係は、名前を持ちません。

以下の図にあるように、 汎化関係は、ダイアグラム・エディターにおいて、 子モデル要素から親モデル要素に向かう、 中空きの矢印を持つ実線で表示されます。

単一の子モデル要素を持つ、単一の親モデル要素の場合

複数の子モデル要素を持つ、単一の親モデル要素の場合

Child クラスは Parent クラスを汎化しています。 Child1 クラスと Child2 クラスは Parent クラスを汎化しています。

サンプル

以下の図で示されている Web サイト用の e-commerce アプリケーションでは、様々な商品を販売しています。 このアプリケーションは、親クラスである (スーパークラスとも呼ばれる) InventoryItem クラスを持っています。 このクラスには、すべての商品で使用される属性 (Price など) および演算子 (setPrice など) が含まれます。

親クラスを定義した後に、 本 (book) や DVD (DVD) などといった商品のタイプごとに、 子クラス (サブクラスともいう) が作成されます。 book クラスは、inventory クラスの属性と 操作を使用して、author などの属性と setAuthor などの演算子を追加します。 DVD クラスも、inventory クラスの属性と操作を 使用しますが、Book クラスで追加したものとは異なる、manufacturer などの属性と setManufacturer などの演算子を追加します。

これは、前の段落で説明したサンプルの図です。

フィードバック