Chapitre 8
Les classes abstraites
L'héritage multiple
Difficultés inhérentes à l'héritage
Classe abstraite (ou virtuelle)
●Une classe est dite abstraite si elle encapsule au
moins une méthode abstraite (ou virtuelle)
●Une méthode est dite abstraite si elle n'est pas
implémentée
●Une méthode abstraite est définie uniquement par
sa signature : liste de paramètres et type du retour
●Une classe abstraite étant incomplète, elle ne peut
avoir d'instance
●Une classe abstraite n'ayant que des méthodes
abstraites est appelée interface (ou classe virtuelle
pure)
Classe concrète
●Il appartient aux classes dérivées d'une classe
abstraite de définir du code pour chacune de
ses méthodes abstraites : on parle alors de
classe concrète
●Les classes concrètes sont les seules à même
d'être instanciées
●En notation UML les noms des classes
concrètes sont en caractère droit et les noms
des classes abstraites sont en italique
But des classes abstraites
●Définir un cadre de travail pour les classes
dérivées
●Proposer un ensemble de méthodes que l'on
retrouvera tout au long de la chaîne de classe
●Ce mécanisme est fondamental pour la mise en
place du polymorphisme : faculté présenté par
certaines méthodes de signature identique dont
le comportement est différent selon l'objet
auquel elles s'appliquent
Choix entre classe abstraite ou
concrète ?
●La classe «/être vivant/» ne peut pas avoir
d'instance : elle ne correspond à aucun objet
concret mais plutôt au concept d'un objet
capable de «/se déplacer/», «/respirer/», «/se
nourrir/»...
●Dépend souvent du cahier des charges du
logiciel :
–les classes concrètes sont celles qui possèdent des
instances
–Par généralisation on trouve les classes abstraites
qui permettront de bénéficier du polymorphisme
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!