Var 
p_o1 :pointeur sur Ecran 
p_o2 :pointeur sur Ecran 
Début 
p_o1←nouveau Ecran 
p_o1->nbEcrans() // 1 
 
p_o2←nouveau Ecran 
p_o2->nbEcrans() // 2 
 
Afficher Ecran.nb_ecrans // Accès public : 2 
 
Libérer p_o1 
p_o2->nbEcrans() // 1 
 
Libérer p_o2 
Afficher Ecran.nb_ecrans // Seul moyen ici : 0 
Fin
4. Classes et méthodes abstraites 
Il y a des fois où vous avez besoin de définir un prototype de classe dans laquelle vous allez déclarer des méthodes, 
mais  pas  forcément  leur  implémentation.  Par  exemple,  vous  voulez  créer  des  classes  représentant  des  figures 
géométriques  afin  de  concevoir  un  logiciel  de  conception  assistée  par  ordinateur.  Dans  ces  logiciels  (2D  ou  3D),  les 
différentes figures tracées ont toutes leurs propriétés comme leurs dimensions, surface, périmètre, volume, couleur de 
remplissage,  couleur  du  contour,  etc.  Les  valeurs  de  ces  attributs  varient  d’une  figure  à  l’autre,  c’est  normal,  mais 
certaines  méthodes  peuvent  être  identiques  comme  celles  pour  la  couleur,  et  d’autres  non  comme  le  calcul  des 
surfaces,  volumes  et  périmètres.  Pourtant  toutes  les  figures  (carrés,  rectangles,  polygones,  triangles,  trapèzes, 
losanges, etc) doivent disposer de ces méthodes. Comment décrire ceci en objet ? 
La solution consiste à écrire une classe de base qui deviendra la superclasse de toutes les figures géométriques, et qui 
va contenir tous les attributs de base comme la position de départ x,y du tracé de la figure, ses couleurs, mais aussi 
toutes les méthodes non seulement de base mais qui doivent aussi obligatoirement être implémentées dans toutes les 
classes qui en dérivent. Les méthodes de calcul de surface et de périmètre doivent être déclarées dans cette classe. 
Pourtant elles ne contiendront rien comme code : ce sera à la classe dérivée de les programmer. 
Cette classe de base contenant des méthodes sans implémentation ne pourra pas être instanciée, vous ne pourrez 
pas créer d’objet à partir d’elle, car elle est de fait inutilisable et ne sert que de base pour les méthodes dérivées. 
Une  classe  non  instanciable  et  contenant  des  méthodes  non  implémentées,  uniquement  destinée  à  être  dérivée, 
est  appelée  une  classe  abstraite.  Les  méthodes  non  implémentées  qu’elle  contient  sont  appelées  méthodes 
abstraites. 
q Pour créer une classe abstraite, vous rajoutez le mot­clé "abstraite" après le nom de la classe. 
q Pour créer une méthode abstraite, vous rajoutez le mot­clé "abstraite" avant son nom. 
Classe figure abstraite 
attributs privés 
x :réel 
y :réel 
c_contour :chaîne // couleur contour 
c_remp :chaîne :: couleur remplissage 
surface :réel 
périmètre :réel 
méthodes publiques 
Procédure setcolor_c(E :couleur :chaîne) 
Début 
this.c_contour←couleur 
Fin 
... 
Fonction abstraite getSurface() :reel 
Fonction abstraite getPerimètre() :reel 
... 
FinClasse
À partir du moment où une classe contient une méthode abstraite, elle est elle­même abstraite. La classe figure est 
abstraite : elle contient des méthodes abstraites, sans implémentation. Elle contient aussi des méthodes qui ne sont 
- 5 -
© ENI Editions - All rigths reserved - Jonifar lina
212
Précédent

- 212/220

Suivant