Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Apprendre les méthodes avec Free Pascal/Lazarus première partie
Un tutoriel de Gilles Vasseur

Le , par gvasseur58

0PARTAGES

11  0 
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 !]

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de ThWilliam
Membre chevronné https://www.developpez.com
Le 12/07/2016 à 15:31
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 : Sélectionner tout
1
2
3
4
TBasicPanel = class(TCustomControl)
    constructor Create(AOwner: TComponent; AParam: string); reintroduce;
    constructor Create(AOwner: TComponent; AParam: integer); reintroduce;
  end;
Fidèle à mes habitudes prises sous Delphi7, j'utilise la directive reintroduce puisque je modifie les paramètres d'appel du constructeur de TCustomControl.
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
Thierry
1  0 
Avatar de Jon Shannow
Membre extrêmement actif https://www.developpez.com
Le 13/07/2016 à 9:00
Merci,

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.

JS
1  0 
Avatar de gvasseur58
Responsable Lazarus & Pascal https://www.developpez.com
Le 13/07/2016 à 11:51
Merci 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,

Gilles
1  0 
Avatar de NSKis
En attente de confirmation mail https://www.developpez.com
Le 14/07/2016 à 8:48
Fé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 mondaine
1  0