UML モデリングでは、汎化関係とは 1 つのモデル要素 (子) が別のモデル要素 (親) を基にしている関係のことです。汎化関係は、クラス図、コンポーネント図、配置図、およびユースケース図で使用されます。
UML セマンティクスに従うためには、汎化関係のモデル要素は同じタイプである必要があります。例えば、汎化関係はアクター同士またはユースケース同士では使用できますが、アクターとユースケースとの間では使用できません。
親のモデル要素の属性、操作、および関係を取り込むために汎化関係を追加して、1 つ以上の子のモデル要素でそれらを再利用できます。子のモデル要素は汎化において、親の属性、操作、および関係を継承するため、親と異なる属性、操作、または関係のみを子に定義する必要があります。
親のモデル要素は 1 つ以上の子を持つことができ、子のモデル要素は 1 つ以上の親を持つことができます。親のモデル要素が単一、子のモデル要素が複数となることがより一般的です。
汎化関係には名前がありません。
次の図が示すように、汎化関係は子のモデル要素から親のモデル要素を指す白抜きの矢印を持つ実線として、図エディターに表示されます。
単一の親と単一の子 |
単一の親と複数の子 |
![]() |
![]() |
次の図は、多くの商品を販売する Web サイト向けの e-コマース・アプリケーションの例です。アプリケーションは親クラス (スーパークラスとも呼ばれます) である InventoryItem クラスを持っています。このクラスは、Price などの属性や setPrice などの操作を持ち、これらはすべての商品が使用します。
親クラスを定義した後、本や DVD などのそれぞれの商品タイプ用に、子クラス (サブクラスとも呼ばれます) が作成されます。本クラスは在庫クラスの属性および操作を使用し、Author などの属性や、setAuthor などの操作を追加します。DVD クラスも在庫クラスの属性および操作を使用しますが、本クラスとは異なり、Manufacturer などの属性や setManufacturer などの操作を追加します。