Pour respecter la sémantique UML, les éléments de modèle dans une relation de généralisation doivent être du même type. Par exemple, une relation de généralisation peut être utilisée entre des acteurs ou entre des cas d'utilisation, mais elle ne peut être utilisée entre un acteur et un cas d'utilisation.
Vous pouvez ajouter des relations de généralisation pour capturer des attributs, des opérations et des relations dans un élément de modèle parent, puis les réutiliser dans un ou plusieurs éléments de modèle enfant. Comme les éléments de modèle enfant des généralisations héritent les attributs, les opérations et les relations du parent, vous n'avez à définir pour l'enfant que les attributs, opérations ou relations qui diffèrent de ceux du parent.
L'élément de modèle parent peut avoir un ou plusieurs enfants et tout élément de modèle enfant peut avoir un ou plusieurs parents. Il est plus courant d'avoir un seul élément de modèle parent et plusieurs éléments de modèle enfant.
Les relations de généralisation n'ont pas de noms.
Comme le montrent les figures suivantes, une relation de généralisation est affichée dans l'éditeur de diagramme comme un trait plein avec une pointe de flèche vide qui est dirigée de l'élément de modèle enfant vers l'élément de modèle parent.
Parent unique avec un seul enfant |
Parent unique avec plusieurs enfants |
![]() |
![]() |
La figure suivante illustre une application de commerce électronique pour un site Web qui vend différentes marchandises. L'application comporte une classe InventoryItem qui est une classe parent (également appelée superclasse). Cette classe contient les attributs, tels que Price (prix) et des opérations, telles que setPrice (fixer le prix), qu'utilisent tous les articles de marchandise.
Après avoir défini la classe parent, une classe enfant (également appelée sous-classe) est créée pour chaque type de marchandise, tel que les livres et les DVD. La classe book (livre) utilise les attributs et opérations dans la classe inventory (inventaire), puis ajoute des attributs tels que author (auteur) et des opérations telles que setAuthor (définir l'auteur). Une classe DVD utilise aussi les attributs et opérations de la classe inventory (inventaire), mais elle ajoute des attributs tels que manufacturer (fabricant) et des opérations telles que setManufacturer (définir le fabricant), qui diffèrent de ceux de la classe book (livre).
