Clase, programare Pascal

încapsulare

Încapsulare - ascunderea datelor pentru a asigura independența maximă posibilă a obiectelor. Accesul la date numai prin utilizarea metodelor de lucru cu ele în cadrul clasei. Encapsularea permite:

  • Ascundeți structura internă a obiectului din lumea exterioară, permițând interacțiunea cu acesta numai prin intermediul canalelor de comunicare autorizate. Aceasta exclude posibilitatea unor acțiuni incorecte asupra datelor din lumea exterioară.
  • Modificați fiecare clasă în timpul dezvoltării, fără a afecta restul programului.

moștenire

Moștenirea este crearea de noi clase de copii care au toate proprietățile clasei strămoșilor. Este recomandabil să folosiți proprietățile unei clase existente atunci când creați o nouă clasă. Clasa sursă este numită strămoș, cea derivată este copilul. Clasa copil moștenește toate descrierile și metodele clasei strămoșilor. Pentru el, trebuie doar să descrieți proprietăți suplimentare. Clasele formează un arbore ierarhic.

Principiul moștenirii prevede crearea în etape a unor clase complexe. Clasa copil primește toate câmpurile strămoșilor săi, dar nu le poate șterge sau le poate suprascrie. Cu cât clasa este inferioară în arborele ierarhic, cu atât mai multe date au obiectele din această clasă.

polimorfism

Polimorfismul este folosirea unor metode diferite pentru diferite obiecte sub aceleași nume. Funcțional, aceeași operație cu obiectele strămoșilor și descendenților este mai bine numită aceeași. În acest caz, puteți converti procedurile obiectului strămoșilor. Aceasta se numește suprascriere (sau suprapunere). Aceleași metode ale diferitelor obiecte se fac prin introducerea unică a cuvântului virtual (virtual) după antetul metodei.

Crearea unei clase

În secțiunea tip de tip sunt declarate clase noi.

tip
<Имя класса> = clasa (<Имя предка>)
o descriere a datelor noi;
titluri de noi metode;

Clasa trebuie declarată înainte ca obiectele de clasă să fie create. Fiecare obiect are o copie unică a câmpurilor de clasă, dar toate obiectele din clasă utilizează aceleași metode. Obiectele sunt create atunci când programul se execută în memorie dinamică. Pentru a crea un obiect, se folosește metoda constructorului, iar destructorul este folosit pentru a distruge obiectul.

Câmpuri de clasă

Câmpurile de clasă reprezintă datele din clasă. Descriu ca o variabilă de orice tip. Câmpurile pot fi de orice tip, inclusiv clase. Prin convenție, numele câmpurilor încep cu prefixul F (câmp de câmp). Pentru a se ascunde de lumea exterioară, structura de clasă a unui câmp este, de obicei, plasată în grupul privat privat. Acestea sunt accesate prin proprietăți.

Este recomandat să accesați câmpurile utilizând metode de clasă. Este permisă (dar nu este recomandată) și tratamentul direct. De exemplu,

Când este compilat, va fi automat convertit la un apel de metodă de clasă.

Proprietăți de clasă

O proprietate este un mijloc de accesare a câmpurilor care nu sunt direct accesibile. Proprietățile (publicate) oferă acces la câmpuri care nu sunt direct accesibile (sunt private). Format proprietate:

proprietate <Имя>[Index]:<Тип> index <Число> proiectanti;

Numele are indexuri dacă proprietatea este un matrice. index <Число> Este prezentă dacă proprietatea este o matrice. Specifiers - definiți acțiuni cu proprietăți:

proprietate Notă: String citit FNote;

Metode de clasă / obiect

O metodă este o subrutină (procedură sau funcție) care este un membru al unei clase. Metodele obiect sunt similare cu procedurile și funcțiile normale, doar ele au un parametru suplimentar de sine.

Formatul apelului de formate: <Объект>.<Метод>. Metoda este declarată în clasă ca o subrutină normală cu directiva forward. Descrierea clasei conține antetul metodei și codul metodei din secțiunea de implementare a metodei, unde are un nume compus care include tipul clasei. Metoda de a apela metoda declarată în clasă este specificată de modificatorul de metodă introdus după antetul metodei printr-un punct și virgulă. Dacă nu există nici un modificator, atunci metoda este considerată statică și se numește ca o subrutină obișnuită. Metodele pot fi:

Clasele au metode virtuale, iar obiectele nu. Aceasta este diferența dintre ele. Pentru obiecte, este suficient să re-declarați aceeași metodă în obiectul descendent cu cuvântul cheie virtuală pentru suprapunere. Pentru clase, situația este oarecum diferită: metodele virtuale ar trebui să fie suprascrise cu suprascrierea cuvântului cheie. Dacă nu faceți acest lucru, va începe aceeași metodă virtuală care ascunde cea anterioară. Cuvântul cheie mostenit nu se înscrie la metoda moștenită dacă s-ar utiliza virtuală.

Metoda abstractă

Modelele abstracte sunt numite care sunt definite în clasă, dar nu conțin nici o acțiune, nu sunt niciodată chemate și trebuie neapărat să fie redefinite în descendenții clasei. Metodele abstracte sunt definite în clasele al căror scop principal este să fie strămoșul unei ierarhii de clase specifice și să permită abstractizarea de la detalii. Doar metodele virtuale și dinamice pot fi abstracte. În FPC, astfel de metode sunt declarate utilizând aceeași directivă. Este indicat în descrierea metodei:

procedura NeverCallMe; virtuale; abstract;

Metoda statică

Metoda statică este "conectată" la compilare, adică codul său este plasat în memorie statică. Metodele implicite sunt statice. Când apelați această metodă, implementarea sa este determinată de tipul variabilei obiect pentru care este apelată metoda și nu de numele metodei. În exemplu, două implementări ale metodei Draw.

Metode virtuale

Metoda suprapus

  • moștenit <Метод>. Metoda specificată este moștenită. Acesta este selectat din clasa cea mai apropiată de strămoși.
  • Am moștenit. O metodă cu același nume ca clasa copil este moștenită. Acesta este selectat din clasa cea mai apropiată de strămoși.

Articole similare