După cum am menționat deja, obiectele (numite și instanțe ale unei clase) sunt entități care pot conține date și coduri. Obiectele Delphi furnizează programatorului toate capabilitățile de bază ale programării orientate pe obiecte, cum ar fi moștenirea, încapsularea și polimorfismul.
În Object Pascal, o instanță a unui obiect este creată apelând unul dintre constructorii acelui obiect. Constructorul este responsabil pentru crearea unei instanțe a obiectului, precum și pentru alocarea memoriei și inițierea necesară a câmpurilor. El nu creează numai obiectul, ci îl aduce și în starea necesară pentru utilizarea ulterioară a acestuia. Fiecare obiect conține cel puțin un constructor Create (), care poate avea un număr diferit de parametri de diferite tipuri - în funcție de tipul de obiect. Acest capitol acoperă doar cea mai simplă construcție Create () (fără parametri).
Spre deosebire de C ++, constructorii din Object Pascal nu sunt automat numiți
schi. Crearea fiecărui obiect apelând constructorul său este o necesitate
Nost programator. Sintaxa pentru a apela constructorul este:
Fii atent la caracteristica unica a unui apel constructor - determinându-l cu link-urile de ajutor privind tipul, nu tipul de instanță (spre deosebire de alte metode, pentru a torye cauzate prin corelarea o instanță). La prima vedere, aceasta poate totuși zatsya absurd, dar are un sens profund - deoarece instanța obiect FooOb- Ject nu a fost creat în momentul în care constructorul este apelat. Dar codul constructorului de clasă TFooObject este static și este în memorie. Se referă la tipul, nu la instanța sa, deci acest apel este complet corect.
Apelarea unui constructor pentru a instanțiza un obiect se numește adesea crearea unui obiect
Când instanțiați un obiect folosind constructorul, compilatorul asigură că toate câmpurile de instanțe sunt inițializate. Toate câmpurile numerice vor fi anulate, indicatorii vor avea valoarea zero și liniile vor fi goale.
Când instanța obiectului este utilizată, eliberați memoria alocată pentru aceasta utilizând metoda Free (). Această metodă verifică mai întâi dacă instanța obiectului nu este egală cu valoarea lui Nil și apoi apelează destructorul obiectului - metoda Destroy (). Este clar că acțiunea destructorului este inversă acțiunii constructorului, adică eliberează toată memoria alocată și efectuează alte acțiuni pentru a elibera resursele capturate de designerul de obiecte. Sintaxa pentru a apela metoda Free () este simplă:
Rețineți că, spre deosebire de apelul către constructor, apelul destructor este executat prin referință la instanță, și nu la tip. În plus, rețineți încă un sfat - nu utilizați apelul direct la metoda DeStroy (). Este mai sigur și mai corect să apelați metoda Free ().
În C ++, destructorul unei instanțe a unui obiect creat static se numește automat atunci când această instanță părăsește domeniul de aplicare. Acest Instantierea dinamic (folosind noul operator), obiectul care urmează să fie distruse în mod independent analiza folosind operatorul delete. Aceeași regulă se aplică și în Object Pascal, dar cu un amendament: în ea toate instanțele obiectului - un programatori dinamic și pro trebuie să le elimina singur. Luați-vă regula de a distruge și elibera tot ce a fost creat de tine în program. O excepție de la această regulă sunt obiectele aparținând altor obiecte. Acest tip de obiecte este distrus automat. O altă excepție este durata de viață obiect gestionat cu numărul de referință propriu (de exemplu, derivate din clasele sau TIn- terfacedObject TComObject), care sunt șterse automat după dărilor likvi- ultima referință pentru a le.
Tip TFoo = Clasă;
Tip TFoo = Clasă (TObject);
Metodele sunt proceduri și funcții care aparțin unui obiect. Puteți spune că metodele determină comportamentul unui obiect. Două metode importante de obiecte au fost considerate mai sus: constructorul și distrugătorul. Puteți crea independent un număr arbitrar de orice alte metode necesare pentru a rezolva anumite probleme.
Crearea unei metode este un proces în două etape. Mai întâi, descrieți metoda în declarația de tip și apoi creați codul de implementare. Iată un exemplu de descriere și definiție a metodei:
Rețineți că atunci când definim corpul metodei, este necesar să folosim numele său complet cu obiectul. Cel de-al doilea detaliu important: metoda este capabilă să meargă direct la orice câmp al obiectului.