In Delphi, un metodo è una procedura o una funzione che esegue un'operazione su un oggetto. Un metodo di classe è un metodo che opera su un riferimento di classe anziché su un riferimento a oggetto.
Se leggi tra le righe, scoprirai che i metodi di classe sono accessibili anche quando non hai creato un'istanza della classe (l'oggetto).
Ogni volta che crei un componente Delphi in modo dinamico, usi un metodo di classe: il costruttore.
Il costruttore Create è un metodo di classe, al contrario di praticamente tutti gli altri metodi che incontrerai nella programmazione Delphi, che sono metodi oggetto. Un metodo di classe è un metodo della classe e, giustamente, un metodo di oggetto è un metodo che può essere chiamato da un'istanza della classe. Questo è meglio illustrato da un esempio, con classi e oggetti evidenziati in rosso per chiarezza:
myCheckbox: = TCheckbox.Create (zero);
Qui, la chiamata a Create è preceduta dal nome della classe e da un punto ("TCheckbox."). È un metodo della classe, comunemente noto come costruttore. Questo è il meccanismo mediante il quale vengono create le istanze di una classe. Il risultato è un'istanza della classe TCheckbox. Queste istanze sono chiamate oggetti. Contrasta la riga di codice precedente con la seguente:
myCheckbox.Repaint;
Qui viene chiamato il metodo Repaint dell'oggetto TCheckbox (ereditato da TWinControl). La chiamata a ridipingere è preceduta dalla variabile oggetto e da un punto ("myCheckbox").
I metodi di classe possono essere chiamati senza un'istanza della classe (ad esempio "TCheckbox.Create"). I metodi di classe possono anche essere chiamati direttamente da un oggetto (ad es. "MyCheckbox.ClassName"). Tuttavia, i metodi oggetto possono essere richiamati solo da un'istanza di una classe (ad esempio "myCheckbox.Repaint").
Dietro le quinte, il costruttore Create sta allocando memoria per l'oggetto (ed esegue qualsiasi inizializzazione aggiuntiva come specificato da TCheckbox o dai suoi antenati).
Pensa a AboutBox (un modulo personalizzato "Informazioni su questa applicazione"). Il codice seguente usa qualcosa di simile:
procedura TfrMain.mnuInfoClick (Mittente: TObject);Questo, ovviamente, è un modo molto carino per fare il lavoro, ma solo per rendere il codice più facile da leggere (e da gestire), sarebbe molto più efficiente cambiarlo in:
inizio
AboutBox: = TAboutBox.Create (zero);
provare
AboutBox.ShowModal;
infine
AboutBox.Release;
fine;
fine;
procedura TfrMain.mnuInfoClick (Mittente: TObject);La riga precedente chiama il metodo di classe "ShowYourself" della classe TAboutBox. "ShowYourself" deve essere contrassegnato con la parola chiave "classe":
inizio
TAboutBox.ShowYourself;
fine;
procedura di classe TAboutBox.ShowYourself;
inizio
AboutBox: = TAboutBox.Create (zero);
provare
AboutBox.ShowModal;
infine
AboutBox.Release;
fine;
fine;