Mode des gestion des objets
195
- d’une méthode surface fournissant en résultat la surface du rectangle ;
- d’une méthode agrandit disposant d’un paramètre de type réel correspondant à la
valeur par laquelle il faut multiplier les dimensions du rectangle.
Écrire un petit programme d’utilisation.
Exercice 9.5 Écrire une classe nommée Réservoir, implémentant l’interface et le
« contrat » suivants :
méthode Réservoir (entier n)
// crée un réservoir de capacité maximale n
entier méthode verse (entier q) // ajoute la quantité q au réservoir si possible
// sinon, on ne verse que ce qui est possible
// fournit en résultat la quantité réellement ajoutée
entier méthode puise (entier q) // puise la quantité q si possible
// sinon, on puise le reste
// fournit en résultat la quantité réellement puisée
entier méthode jauge
// fournit le «niveau» du réservoir
6 Mode des gestion des objets
Au paragraphe 2.1, nous vous avons présenté la démarche la plus répandue et la plus souple
de «gestion des objets». Nous avons vu qu’elle revient à dissocier ce que nous avons appelé
la « variable de type objet » (destinée à contenir une référence à un objet) de l’objet luimême. Cette variable s’apparente aux variables que nous avions rencontrées jusqu’ici et son
emplacement est géré de la même manière (mémoire statique pour les variables du programme principal, pile pour les variables locales aux fonctions ou méthodes). En revanche,
l’objet voit son emplacement alloué dynamiquement au moment de l’exécution de l’appel de
Création. Nous parlerons dorénavant de gestion par référence (on rencontre parfois
« sémantique référence ») pour qualifier ce mode de gestion des objets que nous continuerons à privilégier dans les prochains chapitres.
Certains langages objet offrent un autre mode de gestion des objets, que nous nommerons
gestion par valeur (on rencontre aussi « sémantique valeur ») qui, en général, cohabite avec
le mode précédent. Il consiste à considérer que la seule déclaration d’un objet entraîne la réservation de l’emplacement mémoire correspondant 1 . Si la classe comporte un constructeur, la
déclaration de l’objet doit alors préciser des paramètres pour ce constructeur. Ces déclarations se présentent alors sous une forme voisine de :
Point p (3, 5)
// réserve l’emplacement pour un objet de type Point
// et appelle un constructeur, en lui fournissant les paramètres 3 et 5
1. C’est d’ailleurs cette hypothèse que nous avions faite pour les tableaux et nous avions écarté alors le cas des
tableaux dynamiques existant dans certains langages.
Précédent

- 218/370

Suivant