Classes et objets
CHAPITRE 9
192
Alors l’instruction suivante sera interdite :
p := Creation Point // interdit
En revanche, si la classe Point disposait d’un constructeur sans paramètres, l’instruction
précédente serait correcte et elle appellerait bien ce constructeur.
Autrement dit, cette instruction d’instanciation est acceptable :
• soit lorsque la classe ne dispose d’aucun constructeur (c’est ce qui se produisait dans les premiers exemples de ce chapitre),
• soit lorsque la classe dispose d’un constructeur sans paramètres (elle peut, bien sûr, en posséder d’autres...).
Remarques
1 À l’instar de ce qui se passe dans la plupart des langages, nous n’avons pas prévu de
mécanisme permettant à un constructeur de fournir un résultat.
2 Nous avons vu qu’il était possible d’initialiser des variables locales lors de leur déclaration. Il en va de même pour les variables locales des méthodes. En revanche, nous ne
prévoierons aucun mécanisme permettant d’initialiser les attributs d’un objet ; par
exemple, nous conviendrons que ceci est interdit :
class X
{ entier n := 5 ;
// interdit
.....
}
Certains langages autorisent cette possibilité. Il faut alors bien réaliser qu’elle interfère avec
le travail du constructeur (qui risque, lui aussi, d’attribuer une valeur à l’attribut n). Il est
donc nécessaire de savoir dans quel ordre sont effectuées, ces initialisations d’une part, l’appel du constructeur d’autre part.
5.5 Exemple : une classe Carré
Nous vous proposons un exemple exploitant à la fois :
• la surdéfinition du constructeur ;
• la possibilité de modifier l’implémentation d’une classe en conservant son contrat.
Il s’agit de deux implémentations différentes d’une classe Carré, dont l’interface serait la
suivante :
Carré (entier)
// constructeur à un paramètre : le côté du carré
Carré
// constructeur sans paramètre ; côté 10 par défaut
entier méthode taille
// fournit la valeur du côté
entier méthode surface
// fournit la surface du carré
entier méthode périmètre
// fournit le périmètre du carré
méthode changeCôté (entier) // modifie la valeur du côté du carré
Lorsqu’une classe dispose d’au moins un constucteur, il n’est plus possible d’instancier un objet, sans qu’il y ait appel de l’un des constructeurs.
Précédent

- 215/370

Suivant