U trendu

Delphi – Osnovna klasa – TObject klasa (II deo)

Još jedna metoda klase koja vam može biti od koristi je InstanceSize, koja kao rezultat vraća run-time veličinu objekta (iako možda mislite da globalna funkcija SizeOf može da vam obezbedi ovu informaciju, ova funkcija zapravo vraća veličinu reference objekta – pointer, umesto same veličine objekta). Pored navedenih metoda, postoje i druge koje možete primeniti na bilo koji objekat (kao i na klasu ili referencu klasa). Sledeća lista predstavlja samo deo ovih metoda:

  • ClassName – vraća string da nazivom klase.
  • ClassNameIs – metoda za proveru naziva klase.
  • ClassParent – vraća referencu klase „roditeljske“ klase.
  • ClassInfo – metoda vraća pointer klase.
  • ClassType – vraća referencu klase objekta (ne može biti primenjena direktno na klasu, već samo na objekat.
  • InheritsFrom – testira da li je klasa nasleđena (direktno ili indirektno) od date osnovne klase.
  • InstanceSize – vraća veličinu podatka o objektima.

Navedene metode TObject-a dostupne su za objekte svake klase, pošto je TObject klasa predak svake klase. A evo kako možete iskoristiti ove metode radi dobijanja informacije o klasi:


procedure TSenderForm.ShowSender(Sender: TObject);
begin
Memo1.Lines.Add ( ‘Naziv klase: ‘ +
Sender.ClassName);
if Sender.ClassParent <> nil then
Memo1.Lines.Add ( ‘Parent klasa: ‘ +
Sender.ClassParent.ClassName);
Memo1.Lines.Add ( ‘Velicina instance: ‘ +
IntToStr (Sender.InstanceSize));

Ovaj programski kod proverava da li ClassParent ima vrednost nil, u slučaju da zaista korisitite instancu TObject tipa, koja inače nema svoj osnovni tip. I druge metode možete koristiti radi testiranja. Na primer, možete proveriti da li je Sender objekat specifičnog tipa sledećim programskim kodom:


if Sender.ClassType = TButton then …

Takođe, možete proveriti da li parametar Sender-a odgovara datom objektu sledećim testom:


if Sender = Button1 then…

Umesto provere određene klase ili objekta, često ćete imati potrebu da proverite kompatibilnost tipa objekta sa određenom klasom; ovo znači da ćete proveriti da li je klasa objekta data klasa ili jedna od njenih potklasa. Ovim ćete saznati da li možete da operišete objektom sa metodama definisanim klasom. Test može biti odrađen korišćenjem metode InheritsFrom, koja se takođe poziva kada koristite IS operator. Prethodna dva testa izgledaju ovako:


if Sender.InheritsFrom (TButton) then …
if Sender is TButton then …

Pratite Krstaricu i preko mobilne aplikacije za Android i iPhone.