Dans les diagrammes de classe, une généralisation abstraite est une relation de dépendance dans laquelle il existe une association entre le parent et l'enfant.
Une généralisation abstraite est comme une relation de généralisation ou d'héritage entre les classes. A travers la généralisation abstraite, une classe parent force sa classe enfant à hériter de certaines fonctions pour créer une interface.
Par exemple, lorsque vous visualisez une classe C/C++ et une généralisation abstraite, une classe parent peut devenir une interface ou un canevas de conception. Le classe Véhicule est une classe parent qui utilise une généralisation abstraite. La classe Véhicule devient un canevas de conception ou une interface pour tous ses enfants lorsqu'elle les force à utiliser certaines opérations. La classe enfant Bateau hérite de plusieurs opérations de la classe Véhicule. La classe Bateau ne peut pas être implémentée sans utiliser ces opérations. Le classe Véhicule agit donc comme une interface de conception pour tous ses enfants.
Dans les diagrammes de classe de visualisation UML, une généralisation abstraite est signalée en différenciant le titre de la classe des autres classes. Une classe parent qui utilise une généralisation abstraite possède un titre de classe en italiques. Toutes les opérations dont ses enfants héritent (opérations purement virtuelles) apparaissent également en italiques.
La figure ci-dessous illustre les différences entre une relation de généralisation normale et une relation de généralisation abstraite.
Généralisation normale C/C++ | Généralisation abstraite C/C++ |