Κατανόηση των μεθόδων των κατηγοριών Delphi

Σε Δελφοί, μια μέθοδος είναι μια διαδικασία ή μια λειτουργία που εκτελεί μια λειτουργία σε ένα αντικείμενο. Μια μέθοδος κλάσης είναι μια μέθοδος που λειτουργεί σε αναφορά κλάσης αντί για αναφορά αντικειμένου.

Εάν διαβάσετε μεταξύ των γραμμών, θα βρείτε ότι οι μέθοδοι κλάσης είναι προσπελάσιμες ακόμη και όταν δεν έχετε δημιουργήσει μια εμφάνιση της κλάσης (το αντικείμενο).

Μέθοδοι κλάσης εναντίον Μέθοδοι αντικειμένων

Κάθε φορά που δημιουργείτε ένα Δελφικό στοιχείο δυναμικά, χρησιμοποιείτε μια μέθοδο κλάσης: του Κατασκευαστή.

Ο δημιουργός δημιουργίας είναι μια μέθοδος κλάσης, σε αντίθεση με σχεδόν όλες τις άλλες μεθόδους που θα συναντήσετε στον προγραμματισμό των Δελφών, οι οποίες είναι μέθοδοι αντικειμένων. Μια μέθοδος κλάσης είναι μια μέθοδος της κλάσης και αρκετά κατάλληλα, μια μέθοδος αντικειμένου είναι μια μέθοδος που μπορεί να καλείται από μια παρουσία της κλάσης. Αυτό απεικονίζεται καλύτερα με ένα παράδειγμα, με κατηγορίες και αντικείμενα που επισημαίνονται με κόκκινο χρώμα για λόγους σαφήνειας:

instagram viewer
myCheckbox: = TCheckbox. Δημιουργία (μηδέν);

Εδώ, η κλήση για Δημιουργία προηγείται από το όνομα της κλάσης και μια περίοδο ("TCheckbox."). Είναι μια μέθοδος της κλάσης, κοινώς γνωστή ως κατασκευαστής. Αυτός είναι ο μηχανισμός με τον οποίο δημιουργούνται οι περιπτώσεις μιας τάξης. Το αποτέλεσμα είναι μια παρουσία της κλάσης TCheckbox. Αυτές οι περιπτώσεις ονομάζονται αντικείμενα. Αντίθετα την προηγούμενη γραμμή κώδικα με τα εξής:

myCheckbox. Χρωματίζω πάλι;

Εδώ καλείται η μέθοδος Repaint του αντικειμένου TCheckbox (που κληρονόμησε από το TWinControl). Η κλήση για Repaint προηγείται από τη μεταβλητή αντικειμένου και μια περίοδο ("myCheckbox.").

Οι μέθοδοι κλάσης μπορούν να ονομάζονται χωρίς μια παρουσία της κλάσης (π.χ. "TCheckbox. Δημιουργώ"). Οι μέθοδοι κλάσης μπορούν επίσης να καλούνται απευθείας από ένα αντικείμενο (π.χ. "myCheckbox. Ονομα τάξης"). Ωστόσο, οι μέθοδοι αντικειμένων μπορούν να ονομάζονται μόνο από μια εμφάνιση μιας κλάσης (π.χ. "myCheckbox. Χρωματίζω πάλι").

Πίσω από τις σκηνές, είναι ο Δημιουργός κατασκευής μνήμη για το αντικείμενο (και εκτέλεση οποιασδήποτε επιπλέον αρχικοποίησης όπως καθορίζεται από το TCheckbox ή τους προγόνους του).

Πειραματισμός με τις δικές σας μεθόδους

Σκεφτείτε το AboutBox (μια προσαρμοσμένη φόρμα "Σχετικά με αυτή την αίτηση"). Ο παρακάτω κώδικας χρησιμοποιεί κάτι σαν:

διαδικασία TfrMain.mnuInfoClick (αποστολέας: TObject);
ξεκινήσει
Σχετικά με το κουτί: = TAboutBox. Δημιουργία (μηδέν);
δοκιμάστε
Σχετικά με το κουτί. ShowModal;
τελικά
Σχετικά με το κουτί. Ελευθέρωση;
τέλος;
τέλος;
Αυτό, βεβαίως, είναι ένας πολύ ωραίος τρόπος για να γίνει η δουλειά, αλλά απλά για να καταστεί ευκολότερη η ανάγνωση (και η διαχείριση) του κώδικα, θα ήταν πολύ πιο αποτελεσματικό να το αλλάξουμε:
διαδικασία TfrMain.mnuInfoClick (αποστολέας: TObject);
ξεκινήσει
TAboutBox. Εμφανίσου;
τέλος;
Η παραπάνω γραμμή καλεί τη μέθοδο κλάσης "ShowYourself" της κλάσης TAboutBox. Το "ShowYourself" πρέπει να επισημανθεί με τη λέξη "τάξη":
κατηγορίας TAboutBox. Εμφανίσου;
ξεκινήσει
Σχετικά με το κουτί: = TAboutBox. Δημιουργία (μηδέν);
δοκιμάστε
Σχετικά με το κουτί. ShowModal;
τελικά
Σχετικά με το κουτί. Ελευθέρωση;
τέλος;
τέλος;

Πράγματα που πρέπει να θυμάστε

  • Ο ορισμός μιας μεθόδου κλάσης πρέπει να περιλαμβάνει την κλάση αποκλειστικής λέξης πριν από τη λέξη-κλειδί διαδικασίας ή λειτουργίας που ξεκινά τον ορισμό.
  • Η φόρμα AboutBox δεν δημιουργείται αυτόματα (Επιλογές έργου).
  • Τοποθετήστε τη μονάδα AboutBox στη ρήτρα χρήσης της κύριας φόρμας.
  • Μην ξεχάσετε να δηλώσετε τη διαδικασία στο τμήμα διεπαφής (δημόσια) της μονάδας AboutBox.
instagram story viewer