În Delphi, o metodă este o procedură sau o funcție care efectuează o operație pe un obiect. O metodă de clasă este o metodă care operează pe o referință de clasă în loc de o referință de obiect.
Dacă citiți între linii, veți vedea că metodele clasei sunt accesibile chiar și atunci când nu ați creat o instanță a clasei (obiectul).
Metode de clasă vs. Metode de obiect
De fiecare dată când creați un Componenta Delphi în mod dinamic, utilizați o metodă de clasă: constructorul.
Creatorul constructor este o metodă de clasă, spre deosebire de practic toate celelalte metode pe care le întâlniți în programarea Delphi, care sunt metode obiect. O metodă de clasă este o metodă a clasei și, în mod adecvat, o metodă obiect este o metodă care poate fi numită de o instanță a clasei. Acest lucru este ilustrat cel mai bine printr-un exemplu, cu clase și obiecte evidențiate în roșu pentru claritate:
myCheckbox: = TCheckbox. Creați (nil);
Aici, apelul la Creare este precedat de numele clasei și de o perioadă („TCheckbox.”). Este o metodă a clasei, cunoscută de obicei ca constructor. Acesta este mecanismul prin care sunt create instanțele unei clase. Rezultatul este o instanță a clasei TCheckbox. Aceste cazuri sunt numite obiecte. Contrastați linia anterioară de cod cu următoarele:
myCheckbox. Vopsi din nou;
Aici, se numește metoda Repaint a obiectului TCheckbox (moștenit de la TWinControl). Apelul la Repaint este precedat de variabila obiect și de o perioadă („myCheckbox.”).
Metodele de clasă pot fi apelate fără o instanță a clasei (de exemplu, "TCheckbox" Crea"). Metodele de clasă pot fi, de asemenea, apelate direct de la un obiect (de exemplu, "myCheckbox". Numele clasei"). Cu toate acestea, metodele obiect pot fi apelate doar printr-o instanță a unei clase (de exemplu, „myCheckbox”. Vopsi din nou").
În spatele scenei se află constructorul Creare alocarea memoriei pentru obiect (și executând orice inițializare suplimentară, după cum este specificat de TCheckbox sau de strămoșii săi).
Experimentând cu propriile metode de clasă
Gândiți-vă la AboutBox (un formular personalizat „Despre această aplicație”). Următorul cod folosește ceva de genul:
procedura TfrMain.mnuInfoClick (Expeditor: TObject);Acesta este, desigur, un mod foarte drăguț de a face treaba, dar doar pentru a face codul mai ușor de citit (și de gestionat), ar fi mult mai eficient să îl schimbați în:
începe
AboutBox: = TAboutBox. Creați (nil);
încerca
AboutBox. ShowModal;
in cele din urma
AboutBox. Eliberare;
Sfârșit;
Sfârșit;
procedura TfrMain.mnuInfoClick (Expeditor: TObject);Linia de mai sus numește metoda „ShowYourself” din clasa TAboutBox. „ShowYourself” trebuie marcat cu cuvântul cheie „clasă":
începe
TAboutBox. Arata-te;
Sfârșit;
procedura de clasă TAboutBox. Arata-te;
începe
AboutBox: = TAboutBox. Creați (nil);
încerca
AboutBox. ShowModal;
in cele din urma
AboutBox. Eliberare;
Sfârșit;
Sfârșit;
Lucruri de păstrat în minte
- Definiția unei metode de clasă trebuie să includă clasa de cuvinte rezervată înainte de procedura sau cuvântul cheie funcțional care începe definiția.
- Formularul AboutBox nu este creat automat (Opțiuni de proiect).
- Puneți unitatea AboutBox la clauza de utilizare a formularului principal.
- Nu uitați să declarați procedura în interfața (publică) a unității AboutBox.