Domenii, proprietăți și metode

Delphi pentru profesioniști. Programarea orientată pe obiecte

Câmpurile de clasă sunt variabile declarate în cadrul unei clase. Acestea sunt concepute pentru a stoca date în timp ce instanța clasei (obiect) se execută. Nu există restricții privind tipul de câmpuri din clasă. În descrierea clasei, câmpurile trebuie să fie precedate de metode și de proprietăți. De obicei, câmpurile sunt folosite pentru a se asigura că operațiile din cadrul clasei sunt efectuate.







Deci, câmpurile sunt pentru utilizare în interiorul clasei. Cu toate acestea, clasa trebuie să interacționeze cumva cu alte clase sau elemente de program ale aplicației. În marea majoritate a cazurilor, clasa trebuie să efectueze anumite acțiuni cu anumite date și să prezinte rezultatul.

Proprietățile sunt atribute care compun individualitatea unui obiect și îl ajută să îl descriem. De exemplu, un buton normal dintr-o fereastră de aplicație are proprietăți precum culoarea, dimensiunile, poziția. Pentru o instanță a clasei de butoane, valorile acestor atribute sunt specificate utilizând proprietăți - variabile speciale, definite de proprietatea cuvintelor cheie. Culoarea poate fi specificată de proprietatea Color. dimensiuni - proprietăți de lățime și înălțime și așa mai departe.

Deoarece proprietatea oferă schimbul de date cu mediul extern, metodele speciale ale clasei sunt folosite pentru a accesa valoarea sa. De aceea, de obicei, o proprietate este definită de trei elemente: un câmp și două metode care își fac citirea / scrierea:

funcția GetColor: TSomeType;

procedura SetColor (ANewValue: TSomeType);

proprietate AColor: TSomeType citiți GetColor write SetColor;

În acest exemplu, valoarea proprietății AColor este accesată prin apelurile către metodele GetColor și SetColor. Cu toate acestea, nu este nevoie să se abordeze explicit aceste metode: este suficient să scrieți:

iar compilatorul în sine traduce apelul către proprietatea AColor în apeluri către metodele Getcolor sau Setcolor. Adică aspectul exterior al proprietății arată exact ca un câmp obișnuit, dar orice acțiune pe care trebuie să o faceți poate fi acțiunile de care aveți nevoie. De exemplu, dacă aveți un obiect care reprezintă un pătrat pe ecran, iar proprietatea sa de „culoare“ atribuiți valoarea „alb“, va exista o repaint imediat, ceea ce duce culoarea reală de pe ecran în funcție de valoarea proprietății. Această operație este efectuată utilizând o metodă asociată cu setarea valorii proprietății "color".

În metodele care alcătuiesc proprietățile, puteți verifica valoarea setată pentru a atinge intervalul permis de valori și pentru a apela alte proceduri care depind de modificările pe care le faceți. Dacă nu există necesitatea unor proceduri speciale de citire și / sau scriere, puteți utiliza nume de câmpuri în loc de nume de metode. Luați în considerare următoarea construcție:







funcția Corect (AValue: Integer): boolean;

procedura SetValue (NewValue: Integer);

proprietate AValue: Integer citește FValue scrie SetValue;

procedura TPropObject.SetValue (NewValue: Integer);

dacă (NewValueoFValue) și corect (NewValue) apoi EValue: = NewValue;

În acest exemplu, citirea valorii proprietății AValue înseamnă citirea pur și simplu a câmpului rvalue. Dar când atribuiți o valoare în SetValue, se apelează simultan două metode.

proprietate AProperty: TSomeType citiți GetValue;

În acest exemplu, în afara obiectului, valoarea proprietății poate fi citită; încercarea de a atribui o proprietate AProperty la o valoare va provoca o eroare de compilare.

Cuvântul implicit este atribuit în mod implicit proprietății.

proprietate Vizibil: boolean citit FVisible write SetVisible default Adevărat;

Aceasta înseamnă că atunci când programul pornește, proprietatea va fi setată de compilator în True.

Proprietatea poate fi vector; în acest caz, arata ca o matrice:

proprietăți AP [Index. Integer]: TPoint citit GetPoint scrie SetPoint;

De fapt, este posibil să nu existe un câmp corespunzător în clasă, o matrice. Amintiți-vă că toate apelurile de procesare către structurile interne ale clasei pot fi deghizate.

Pentru o proprietate vectorială, trebuie să descrieți nu numai tipul elementelor din matrice, ci și numele și tipul indexului. După citirea și scrierea cuvintelor cheie în acest caz, ar trebui folosite numele metodelor - utilizarea câmpurilor de matrice nu este permisă aici. O metodă de citire a valorii unei proprietăți vectoriale trebuie să fie descrisă ca o funcție care returnează o valoare de același tip ca și elementul proprietății și are un singur parametru de același tip și cu același nume ca și indicele proprietății:

În mod similar, o metodă care plasează valori într-o astfel de proprietate trebuie să aibă un prim parametru index și un al doilea cu o variabilă de tipul cerut (care poate fi trecut atât prin referință, cât și prin valoare):

procedura SetPoint (Index: Integer; NewPoint: TPoint);

Proprietățile vectorului au o altă caracteristică importantă. Unele clase din Delphi (liste de liste, seturi de linii TStrings) sunt construite în jurul proprietății vectorului principal (vezi Capitolul 7). Metoda principală a acestei clase oferă acces la unele matrice, iar toate celelalte metode sunt, ca atare, auxiliare. Mai precis, pentru a facilita lucrul în acest caz, proprietatea vectorului poate fi descrisă cu implicit cuvântul cheie.

proprietatea Strings [Index: Integer]: șir citit Ia scris Pune; implicit;

Dacă un obiect are o astfel de proprietate, nu îl puteți menționa, ci puneți indicele în paranteze pătrate imediat după numele obiectului:

var AMyObject: TMyObject;

AMyObject [2]: = 'A doua'; (a doua cale>

Aveți grijă când aplicați implicit cuvântul rezervat. - Așa cum am văzut, pentru proprietățile obișnuite și vectoriale se utilizează în cazuri diferite și cu sintaxă diferită.

Cititorul atent a atras atenția asupra faptului că atunci când explicăm termenii "câmp" și "proprietate" am folosit conceptul de metodă și am înțeles cu siguranță sensul său general. Deci, o metodă este o funcție declarată în clasă sau o procedură care este folosită pentru a lucra cu câmpurile și proprietățile clasei. În conformitate cu principiile OOP (vezi secțiunea "Encapsulation" mai târziu în acest capitol), puteți accesa proprietățile unei clase numai prin metodele sale. Din procedurile și funcțiile normale, metodele diferă prin faptul că au trecut un pointer la obiectul care le-a numit. Prin urmare, datele obiectului care a numit metoda vor fi procesate. Vom discuta câteva dintre caracteristicile utilizării metodelor de mai jos.

Știați această abstractizare procedurală, procedura este cel mai bine cunoscut tip de abstractizare în programare. Oricine a aplicat o subrutină pentru a efectua o funcție de abstractizare procedurală implementată. Procedurile combină metodele de abstractizare prin parametrizare și specificare, permițându-vă să abrogați o singură operație sau eveniment.

ȘTIRI ALE FORUMULUI
Cavalerii teoriei eterului







Articole similare

Trimiteți-le prietenilor: