Les généralisations
Une généralisation représente une relation d'héritage entre une classe générale et une classe plus spécifique. La classe spécifique est cohérente avec la classe plus générale et en hérite ses caractéristiques et son comportement. Elle comporte cependant des informations supplémentaires. Toute instance de la classe spécifique est aussi une instance de la classe générale.
Qu'est-ce qu'une généralisation
La classe A est une généralisation de la classe B. Cela suppose que tous les objets de la classe B sont aussi des objets de la classe A. Autrement dit, B est un sous-ensemble de A.
B est alors la sous-classe, A la super-classe.
Exemple A : Personne, B : Parisien.
B étant un sous-ensemble de A, les objets de la classe B "héritent" des caractéristiques de ceux de la classe A.
Il n'est donc pas nécessaire de décrire de nouveau pour la classe B :
• Ses attributs
• Ses opérations
• Ses associations
Exemple
La classe "Client important" qui représente les clients dont le "C.A. sur les 12 derniers mois" dépasse 1 MF, peut être une spécialisation de la classe client (origine).
Dans l'exemple qui précède, les associations et les attributs spécifiés pour "Client" sont aussi valables pour "Client important".
Cas de plusieurs sous-classes - Généralisation
Plusieurs sous-classes d'une même classe :
• Ne sont pas forcement exclusives.
• Ne forment pas nécessairement une partition.
Intérêt des sous-classes - Généralisation
Une sous-classe hérite de tous les attributs, opérations et associations de sa super-classe, mais elle peut avoir des attributs ou des associations que ne possède pas sa super-classe.
Une sous-classe peut ainsi avoir des attributs spécifiques. Ceux-ci n'ont de sens que pour une sous-classe particulière. Dans l'exemple ci-dessus :
• Le "numéro de Siret" et le "nombre d'employés" n'ont de sens que pour une "société".
• La "date de naissance" est caractéristique d'une "personne", pas d'une "société".
• De même, il est utile de calculer l'"âge" d'une "personne". Cet attribut et cette opération n'ont généralement pas d'intérêt pour une "société".
Une sous-classe peut également avoir des associations spécifiques.
• Une "personne" entre dans une "catégorie socio-professionnelle" : "cadre", "employé", "commerçant", "agriculteur", etc. Cette classification n'a pas de sens pour une "société". (Il existe également une classification pour les entreprises, mais ce n'est pas la même que pour les personnes.)
Héritage Multiple - Généralisation
Il est parfois utile de spécifier une classe ayant plusieurs super-classes. La sous-classe hérite alors de toutes les caractéristiques des deux super-classes. Cette possibilité doit être utilisée avec précaution.

L'héritage multiple n'est pas pris en compte pour la génération des tables.
Créer une généralisation
Pour créer une généralisation :
1. Cliquez sur le bouton
Généralisation 
de la barre d'outils
2. Cliquez dans la sous-classe et faites glisser la souris jusqu'à la super-classe, avant de relâcher votre pression.
La généralisation apparaît dans le diagramme, matérialisée par une flèche.
Discriminant - Généralisation
Le discriminant est l'attribut d'une généralisation dont la valeur permet de répartir les objets entre les sous-classes associées à la généralisation.
Par exemple, l'attribut code-sexe permet de répartir les objets de la classe personne entre la sous-classe homme ou femme.
Vous pouvez définir le ou les discriminants dans la fenêtre de propriétés de la généralisation, sous la page Discriminants.