UML セマンティクスに適合するために、 汎化関係内のモデル要素は、すべて同じタイプである必要があります。 例えば、アクター同士または ユースケース同士においては、汎化関係を使用することができますが、 アクターとユースケースの間で使用することはできません。
汎化関係を追加して、親モデル要素内の属性、操作、および関係を取り込み、 これらを 1 つ以上の子モデル要素で再使用することができます。 汎化における子モデル要素は、 親モデル要素の属性、操作、および関係を継承します。 したがって、子モデル要素に定義する必要があるのは、 親とは異なる属性、操作、および関係のみとなります。
親モデル要素は、1 つ以上の子モデル要素を持つことができます。 子モデル要素は、1 つ以上の親モデル要素を持つことができます。 単一の親モデル要素と複数の子モデル要素を持つ場合が、一般的です。
汎化関係は、名前を持ちません。
以下の図にあるように、 汎化関係は、ダイアグラム・エディターにおいて、 子モデル要素から親モデル要素に向かう、 中空きの矢印を持つ実線で表示されます。
単一の子モデル要素を持つ、単一の親モデル要素の場合 |
複数の子モデル要素を持つ、単一の親モデル要素の場合 |
![]() |
![]() |
以下の図で示されている Web サイト用の e-commerce アプリケーションでは、様々な商品を販売しています。 このアプリケーションは、親クラスである (スーパークラスとも呼ばれる) InventoryItem クラスを持っています。 このクラスには、すべての商品で使用される属性 (Price など) および演算子 (setPrice など) が含まれます。
親クラスを定義した後に、 本 (book) や DVD (DVD) などといった商品のタイプごとに、 子クラス (サブクラスともいう) が作成されます。 book クラスは、inventory クラスの属性と 操作を使用して、author などの属性と setAuthor などの演算子を追加します。 DVD クラスも、inventory クラスの属性と操作を 使用しますが、Book クラスで追加したものとは異なる、manufacturer などの属性と setManufacturer などの演算子を追加します。
