Inzicht in methoden van Delphi Class

In Delphi is een methode een procedure of functie die een bewerking op een object uitvoert. Een klassenmethode is een methode die werkt op een klassenverwijzing in plaats van een objectverwijzing.

Als u tussen de regels leest, zult u merken dat de klassenmethoden toegankelijk zijn, zelfs als u geen instantie van de klasse (het object) hebt gemaakt.

Klasse methoden versus object methoden

Telkens wanneer u dynamisch een Delphi-component maakt, gebruikt u een klassemethode: de Constructor.

De Create-constructor is een klassemethode, in tegenstelling tot vrijwel alle andere methoden die u tegenkomt in Delphi-programmering, die objectmethoden zijn. Een klassemethode is een methode van de klasse, en passend genoeg is een objectmethode een methode die door een instantie van de klasse kan worden aangeroepen. Dit wordt het best geïllustreerd door een voorbeeld, met klassen en objecten die voor de duidelijkheid rood zijn gemarkeerd:

myCheckbox: = TCheckbox.Create (nihil);

Hier wordt de aanroep naar Create voorafgegaan door de klassenaam en een punt ("TCheckbox."). Het is een methode van de klasse, algemeen bekend als een constructor. Dit is het mechanisme waarmee instanties van een klasse worden gemaakt. Het resultaat is een exemplaar van de klasse TCheckbox. Deze instanties worden objecten genoemd. Vergelijk de vorige coderegel met het volgende:

myCheckbox.Repaint;

Hier wordt de methode Repaint van het TCheckbox-object (overgenomen van TWinControl) genoemd. De aanroep naar Repaint wordt voorafgegaan door de objectvariabele en een punt ("myCheckbox.").

Class-methoden kunnen worden aangeroepen zonder een instantie van de class (bijvoorbeeld 'TCheckbox.Create'). Class-methoden kunnen ook rechtstreeks vanuit een object worden aangeroepen (bijvoorbeeld "myCheckbox.ClassName"). Objectmethoden kunnen echter alleen worden aangeroepen door een instantie van een klasse (bijvoorbeeld 'myCheckbox.Repaint').

Achter de schermen wijst de Create-constructor geheugen toe voor het object (en voert hij eventuele extra initialisatie uit zoals gespecificeerd door TCheckbox of zijn voorouders).

Experimenteren met je eigen lesmethoden

Denk aan AboutBox (een aangepast formulier 'Over deze toepassing'). De volgende code gebruikt zoiets als:

procedure TfrMain.mnuInfoClick (afzender: TObject);
beginnen
AboutBox: = TAboutBox.Create (nul);
proberen
AboutBox.ShowModal;
Tenslotte
AboutBox.Release;
einde;
einde;
Dit is natuurlijk een erg leuke manier om het werk te doen, maar alleen om de code gemakkelijker te lezen (en te beheren) te maken, zou het veel efficiënter zijn om deze te wijzigen in:
procedure TfrMain.mnuInfoClick (afzender: TObject);
beginnen
TAboutBox.ShowYourself;
einde;
De bovenstaande regel roept de methode "ShowYourself" van de klasse TAboutBox aan. De "ShowYourself" moet worden gemarkeerd met het trefwoord "klasse":
klasseprocedure TAboutBox.ShowYourself;
beginnen
AboutBox: = TAboutBox.Create (nul);
proberen
AboutBox.ShowModal;
Tenslotte
AboutBox.Release;
einde;
einde;

Dingen om in gedachten te houden

  • De definitie van een klassemethode moet de gereserveerde woordklasse bevatten vóór het procedure- of functietrefwoord dat de definitie start.
  • AboutBox-formulier wordt niet automatisch gemaakt (Project-opties).
  • Zet de AboutBox-eenheid in de gebruiksclausule van het hoofdformulier.
  • Vergeet niet om de procedure in het interface (openbaar) deel van de AboutBox-eenheid aan te geven.