Généralisations abstraites dans les diagrammes de classes de modélisation de domaine C/C++

Dans les diagrammes de classes, une généralisation abstraite est une relation de dépendance dans laquelle est défini un mappage entre le parent et l'enfant.

Une généralisation abstraite est très similaire à la relation de généralisation ou d'héritage entre des classes. Avec la généralisation abstraite, une classe parent contraint la classe enfant à hériter certaines fonctionnalités pour créer une interface.

Remarque : En C/C++, une généralisation abstraite est obtenue par des opérations purement virtuelles. Une classe parent qui contient une opération purement virtuelle est appelée catégorie de base abstraite. La catégorie de base abstraite ne peut jamais être instanciée. Une classe enfant doit remplacer l'opération purement virtuelle dans sa déclaration, sinon elle ne peut être instanciée. La catégorie de base abstraite impose une interface de conception à une classe enfant.

Par exemple, lorsque vous visualisez une classe et une généralisation abstraite C/C++, une classe parent peut devenir une interface ou un canevas de conception. La classe Car (véhicule) est une classe parent qui utilise une généralisation abstraite. La classe Car devient un canevas de conception ou une interface pour tous ses enfants en les contraignant à utiliser certaines opérations. La classe enfant Boat (bateau) hérite différentes opérations de la classe Car. La classe Boat ne peut pas être implémentée sans utiliser ces opérations. La classe Car opère ainsi comme une interface de conception pour tous ses enfants.

Dans les diagrammes de classes de modélisation de domaine, une généralisation abstraite est figurée par l'affichage distinctif du titre de la classe concernée. Une classe parent qui utilise une généralisation abstraite a un titre de classe en italique. De même, toutes les opérations qui sont héritées par ses enfants (opérations purement virtuelles) apparaissent aussi en italique.

La figure suivante 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++
Une généralisation C/C++ classique s'affiche. Une généralisation abstraite C/C++ s'affiche.


Vos commentaires