|
|
4.2.11 Généralisation et redéfinition
d’opérations
précédent suivant
Rappelons que la déclaration d’une opération consiste
en la spécification de son nom, des types de ses paramètres et de son type de
retour. La définition d’une opération consiste à lui adjoindre un corps
représentant un algorithme. Dans cette diapositive, une opération définie
(calculerAmortissement()) dans une classe
parente est redéfinie (en anglais, overriden)
dans une classe enfant, c’est-à-dire que la classe enfant remplace la
définition de l’opération spécifiée dans la classe parente par son propre
algorithme. Dans l’exemple de la diapositive, l’algorithme de
calcul de l’amortissement d’un moyen de transport tel que défini
dans la classe MoyenTransport ne tient pas
compte de l’infrastructure. En effet, l’amortissement d’un
Camion ou d’une Voiture ne prend pas en compte celui des routes empruntées.
En revanche, les analystes décident que ce calcul dans le cas d’un
Tramway inclut les voix ferrées de la ligne. En
conséquence, l’opération calculerAmortissement() est redéfinie (même prototype, mais
corps d’opération différent) dans la classe Tramway.
NB : la notion de redéfinition (en anglais, overriding) est proche mais différente de la notion de
surcharge (en anglais, overloading). Une
opération surcharge une autre opération, qu’elle soit déclarée (voire
définie) dans la même classe ou dans une classe parente, lorsque la nouvelle
opération possède le même nom que l’opération existante mais avec un
prototype différent (nombre ou types des paramètres différents).
Exemple de surcharge :
constructeurMoyenTransport(String désignation, int vitesse, double prix) // age = 0
constructeurMoyenTransport(String désignation, int vitesse, double prix,
int age) // surcharge = même nom, mais paramètres différents
D. Conan, C. Taconet, C. Bac,
Télécom SudParis, CSC 4002, Octobre 2015
|
|