missNour83
Messages postés7Date d'inscriptionjeudi 19 mars 2009StatutMembreDernière intervention 9 avril 2009
-
9 avril 2009 à 17:07
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
10 avril 2009 à 18:36
Bonjour,
je travaille avec turbo Delphi 2006 en mode console.
je ne sais pas quand et comment utiliser les mots réservés override et overload pour les méthodes.
Est ce que quelqu'un peut m'aider.
Merci d'avance.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 9 avril 2009 à 17:23
override c'est pour surcharger une méthode ancêtre : tu l'utilises quand tu veux initialiser des trucs dans tes classes et compos :
type
TMonType = class (TMonAncetre)
public
constructor Create(AOwner: TComponent); override;
end;
constructor TMonType.Create(AOwner: TComponent);
begin
inherited Create(AOwner); // Toujours le faire !
// Initialiser eventuellement
end;
override permet de compléter la méthode ancètre, en appelant sa méthode avant, puis en faisant nos trucs après (ou le contraire, ça dépend des cas).
overload c'est pour déclarer un même nom de procédure ou fonction, mais avec des paramètres différents. Tu en as un exemple avec la fonction IntToStr : tu as en réalité deux fonctions différentes : une pour les Integer et une pour les Int64. Tu peux voir facilement les fonctions ou procédures avec overload : il suffit d'ouvrir la parenthèse et d'attendre. Si tu vois deux types de paramètres, il y a un overload.
Pour déclarer un overload, tu mets la directive après chacune de tes fonctions concernées.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 10 avril 2009 à 18:36
override > passer outre; on peut la qualifiée de surcharge annulative
overload > surcharger; on peut la qualifiée de surcharge cooperative/associative
override permet de surcharger/redefinir des methodes existante dans une classe objet.
overload permet de surcharger une methode en etendant pour une même definition les types accéptés en parametres et/ou retournés.
il est frequent d'overrider le constructeur ou le destructeur d'un objet (create / destroy)
constructor Create; override;
destructor Destroy; override;
OverRide fait partie integrante des concepts POO d'heritage et de polymorphisme des classes objets,
il ne peut jamais etre utiliser en dehors de ce cadre.
il est frequent d'overloader une methode mathematique pour etre applicable avec les types entiers et flottant par exempe.
function Sum(const Ints : array of integer): integer; overload;
begin
result := A + B+ C;
end;
function Sum(const Flts : array of single): single; overload;
begin
result := A + B + C;
end;
OverLoad fait partis des moyens mis en oeuvre pour eviter de multiplier les identifiants de fonctions selon les types utilisé. Pourquoi utiliser deux identifiant differents, par exemple SumInt et SumFloat, alors qu'overload nous permet de declarer une methode Sum unique mais declinée pour accepter aussi bien les entiers que les flotants, comme on le trouve en assembleur. Les langages de haut niveaux se veulent plus simple a utiliser et a comprendre que les langages bas niveaux. ceci explique cela.
OverLoad ne fait donc pas partis du concept de POO ou d'heritage. par contre il peut etre intégré au seins du polymorhpisme aussi bien a l'interieur qu'a l'exterieur des classes.