Apprendre les méthodes avec Free Pascal/Lazarus première partie
Un tutoriel de Gilles Vasseur
Le 2016-07-12 11:31:19, par gvasseur58, Responsable Lazarus & Pascal
POO à gogo !
Les méthodes avec Free Pascal/Lazarus (1/2) : méthodes statiques et virtuelles - constructeurs et destructeurs
À quoi servent les méthodes statiques ? Comment mettre en œuvre l'héritage ? Qu'apportent les méthodes virtuelles ? Comment se manifeste le polymorphisme ? Quel rôle joue l'héritage dans un constructeur ou un destructeur ? Que se passe-t-il si un constructeur déclenche une erreur ? Qu'est-ce que la surcharge d'un constructeur ou d'un destructeur ? Avec ce tutoriel, vous allez consolider vos connaissances concernant la Programmation Orientée Objet en approfondissant les notions de méthode, de constructeur et de destructeur. Vous pourrez répondre aux questions posées (y compris dans une soirée mondaine ) et produire des applications efficaces et surprenantes !
http://gilles-vasseur.developpez.com...es-methodes-1/
Et vous ?
Que pensez-vous de ce tutoriel ?
Avez-vous l'habitude de "penser POO" lorsque vous développez vos applications ?
Ou ce tutoriel vous incitera-t-il à le faire ?
Retrouver les meilleurs cours et tutoriels pour apprendre Lazarus
Retrouver les meilleurs cours et tutoriels pour apprendre la programmation
[Un merci tout particulier à ThWilliam qui, grâce à ses critiques pertinentes, a beaucoup contribué à ce tutoriel !]
Les méthodes avec Free Pascal/Lazarus (1/2) : méthodes statiques et virtuelles - constructeurs et destructeurs
À quoi servent les méthodes statiques ? Comment mettre en œuvre l'héritage ? Qu'apportent les méthodes virtuelles ? Comment se manifeste le polymorphisme ? Quel rôle joue l'héritage dans un constructeur ou un destructeur ? Que se passe-t-il si un constructeur déclenche une erreur ? Qu'est-ce que la surcharge d'un constructeur ou d'un destructeur ? Avec ce tutoriel, vous allez consolider vos connaissances concernant la Programmation Orientée Objet en approfondissant les notions de méthode, de constructeur et de destructeur. Vous pourrez répondre aux questions posées (y compris dans une soirée mondaine
Et vous ?
[Un merci tout particulier à ThWilliam qui, grâce à ses critiques pertinentes, a beaucoup contribué à ce tutoriel !]
-
ThWilliamMembre chevronnéBonjour Gilles.
Très beau tutoriel.
Je viens d'expérimenter la déclaration de plusieurs constructeurs dans une classe enfant.
Comme classe ancêtre, j'ai pris TCustomControl dont le constructeur est : constructor Create(AOwner: TComponent); override;
Il faut remonter très loin dans la généalogie pour trouver le constructeur virtuel.
Dans la classe enfant (TBasicPanel), je voulais deux constructeurs.
Voici un exemple (pas très futé) :Code : 1
2
3
4TBasicPanel = class(TCustomControl) constructor Create(AOwner: TComponent; AParam: string); reintroduce; constructor Create(AOwner: TComponent; AParam: integer); reintroduce; end;
Si j'avais utilisé la directive overload, j'aurais permis d'instancier un objet avec le constructeur de TCustomControl, ce que je voulais interdire.
Et ceci, même si je "signe" le deuxième constructeur : reintroduce; overload; !
Sous Delphi 7, la directive overload est obligatoire pour plusieurs procédures du même nom. Sous Lazarus, cette directive n'est pas requise.
Après quelques tests, je trouve Lazarus un peu laxiste avec les directives. Il y a sans doute une différence d'allocation mémoire, mais tout ce qui suit ne génère aucun message d'avertissement :
- supprimer la directive reintroduce (--> aucune directive : le constructeur statique écrase tout).
- ajouter virtual : reintroduce; virtual; (--> aucun sens amha, puisque on rend virtuel ce que l'on vient de rendre statique)
- ou tout simplement : virtual.
Cordialement
Thierryle 12/07/2016 à 15:31 -
Jon ShannowMembre extrêmement actifMerci,
Très beau tuto.
Ça ne fait de mal de redécouvrir les élémentaires, et de se rendre compte de nos mauvaises habitudes...
Encore merci.
JSle 13/07/2016 à 9:00 -
gvasseur58Responsable Lazarus & PascalMerci pour les encouragements. Mais les critiques seront les bienvenues aussi, sinon je vais me croire obligé de publier la suite qui portera sur des sujets plus rares comme les méthodes de classe, par exemple
.
Sinon, ThWilliam a raison : Free Pascal n'est pas très regardant sur l'utilisation, même incohérente, de directives. Je fais confiance à son esprit systématique pour étudier les conséquences de certains agencements exotiques.
Cordialement,
Gillesle 13/07/2016 à 11:51 -
NSKisEn attente de confirmation mailFélicitations pour ce travail de "vulgarisation" qui participe de manière notable à l'enrichissement de la documentation Lazarus
Je serai par contre plus dubitatif pour son usage lors d'une soirée mondainele 14/07/2016 à 8:48