Comprensione dei metodi di classe Delphi

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).

Metodi di classe vs. metodi di 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).

Sperimentare con i tuoi metodi di classe

Pensa a AboutBox (un modulo personalizzato "Informazioni su questa applicazione"). Il codice seguente usa qualcosa di simile:

procedura TfrMain.mnuInfoClick (Mittente: TObject);
inizio
AboutBox: = TAboutBox.Create (zero);
provare
AboutBox.ShowModal;
infine
AboutBox.Release;
fine;
fine;
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:
procedura TfrMain.mnuInfoClick (Mittente: TObject);
inizio
TAboutBox.ShowYourself;
fine;
La riga precedente chiama il metodo di classe "ShowYourself" della classe TAboutBox. "ShowYourself" deve essere contrassegnato con la parola chiave "classe":
procedura di classe TAboutBox.ShowYourself;
inizio
AboutBox: = TAboutBox.Create (zero);
provare
AboutBox.ShowModal;
infine
AboutBox.Release;
fine;
fine;

Cose da tenere a mente

  • La definizione di un metodo di classe deve includere la classe di parole riservata prima della parola chiave procedura o funzione che avvia la definizione.
  • Il modulo AboutBox non viene creato automaticamente (Opzioni progetto).
  • Inserire l'unità AboutBox nella clausola use del modulo principale.
  • Non dimenticare di dichiarare la procedura nella parte dell'interfaccia (pubblica) dell'unità AboutBox.