Les Classes
Avec Delphi 1, Borland introduit la notion de classe dans le langage Pascal.Il n'y pas de différence fondamentale entre un Object et une Class, mais tout un tas de facilités grandement apréciables.
{ Déclaration d'une Class simple en Borland Delphi } Type TMonObjet=class X:integer; procedure Initialise(I:integer); function Calcul(Y:integer):integer; end; procedure TMonObjet.Initialise(I:integer); begin X:=I; end; function TMonObjet.Calcul(Y:Integer):integer; begin Calcul:=X*Y; end; Var Obj:TMonObjet; begin Obj:=TMonObjet.Create; Obj.Initialise(2); WriteLn(Obj.Calcul(4)); Obj.Free; end.
Tous les objets (en fait, les classes, mais par abus de langage je parle ici d'objet) descendent de la classe TObject; celle-ci possède
- un Constructor
- un Destructor
- et une méthode Free qui vérifie la validité de SELF avant d'appeler le destructor...
c'est en un peu plus fin un "if Obj<>nil then Obj.Destroy".
On trouve aussi des méthodes permettant d'obtenir des infos sur l'objet lui-même, comme FieldAddress, MethodAddress et MethodName qui retournent des infos sur les variables et méthodes de l'objet.
On trouve enfin des méthodes de gestion de message qui permettent la gestion des "Messages de Microsoft Windows".
Les Composants
Avec Delphi, Borland introduit aussi tout une bibliothèque d'objets, la VCL pour Visual Component Library.Le "Composant" est le premier niveau d'objet de la VCL, il est manipulable à la souris lors de la conception d'un projet delphi mais reste invisible pendant l'execution du programme...on trouve à ce niveau, les composants d'accès Base de donnée, de communication, de traitement...tout ce qui ne comprend pas d'interface utilisateur.
Le composant possède un propriétaire : Owner; cette propriété assure que lors de la destruction du propriétaire d'un objet, l'objet est lui-même détruit; elle est attribué à la création du composant:
Constructor TComposant.Create(AOwner:TComponent);
Un point d'Owner:
la valeur de Owner peut prendre quelques valeurs remarquables :- Application, c'est l'objet de plus haut niveau d'une application Delphi, en créant un composant dont le propriétaire
est "application", vous vous assurez qu'il sera détruit en quittant votre programme (fin de l'application).
- Form1, ou tout autre composant de type TForm, sur une application contenant différentes fenêtres, vous vous assurez de la
destruction du composant à la fermeture de la fenêtre à qui vous attribuer le composant.
- SELF, ce paramètre parfois mal compris indique tout simplement que l'objet créé depuis une méthode objet aura
pour propriétaire l'objet à qui appartient la méthode en cours ! Revoir l'explication de SELF dans le chapitre Object
- nil, il est tout à fait valide d'indiquer que le composant ne possède pas de propriétaire (nil = 0), mais il vous appartiendra alors
de le détruire en temps util, personne ne le fera à votre place.
Les Controls
Quand un objet est apparant à l'écran (un bouton, un zone de saisie...) c'est qu'il dérive de TControl, TControl dérive lui-même de
TComponent et tout ce que l'on vient de dire reste valide.
Une autre notion qui porte souvent à confusion est celle du Parent, le Parent d'un control, est le control dans lequel il se situe...
le bouton peut être sur un TPanel qui lui même est sur un TForm, qui lui même est sur un TApplication.
Le Parent détermine donc directement la relation visuelle entre un parent et son enfant. Contrairement à l'Owner, le Parent n'est pas spécifié
dans le constructor, il faut le faire à la main :
{ Création maniuelle d'un object visuel } begin Button1:=TButton.Create(Form1); Button1.Parent:=Panel1; Button1.Show; end.
Je sais, vous n'avez jamais écrit ce code; en fait Delphi le fait pour vous quand vous placez à la souris un TButton sur un TForm; c'est l'objet des fichiers DFM qui stockent toutes ces informations pour que vous n'ayez pas à la faire à la main...pour plus d'info sur les DFM, voir TPersistent, TReader et TWriter.