333
Chapitre 10
Exercice 10.1
La fonction voulue pourrait se présenter ainsi :
fonction grandit (Point p, entier n)
{ ...
}
Toutefois, dans cette fonction, l’objet p ne peut accéder qu’aux méthodes publiques de la
classe Point. Or, parmi celles-ci n’existe aucune méthode d’altération des coordonnées.
Néanmoins, la méthode déplace est bien en mesure d’effectuer des modifications des coordonnées. Nous pouvons exploiter cette remarque pour utiliser l’artifice suivant :
• déterminer les nouvelles coordonnées souhaitées ;
• calculer la différence entre ces nouvelles coordonnées et les anciennes ;
• appliquer la méthode déplace à cette diffférence.
fonction grandit (Point p, entier n)
{ entier abs0
// ancienne abscisse du point
entier ord0
// ancienne ordonnée du point
entier abs1
// nouvelle abscisse
entier ord1
// nouvelle ordonnée
entier dx
// différence entre ancienne et nouvelle abscisses
entier dy
// différence entre ancienne et nouvelle ordonnées
// on récupère les coordonnées actuelles du point p
abs0 = p.valeurAbscisse
ord0 = p.valeurOrdonnée
// on détermine les nouvelles coordonnées souhaitées
abs1 = abs0 * n
ord1 = ord0 * n
// on en déduit le déplacement à appliquer
dx = abs1 - abs0
dy = ord1 - ord0
p.déplace (dx, dy)
}
Exercice 10.2
Il s’agit en fait d’écrire ce que l’on nomme « constructeur par recopie » dans certains langages. Son écriture ne présente pas de difficultés particulières : il suffit de recopier dans le
« point courant », les coordonnées du point p reçu en paramètre.
class Point
{ méthode Point (Point p)
// constructeur recopiant p dans l’objet courant
{ abs := p.abs
ord := p.ord
}
.....
entier abs, ord
}
Précédent

- 356/370

Suivant