Sunteți pe pagina 1din 5

7.

PROPRIETI
n volumul 2, pag. 24, am vzut c componentele dat ale unei clase
se definesc prin declaraii. Ele se numesc date membru (member date) sau
cmpuri (field).
Proprietile sunt considerate intermediare ntre cmpuri i metode.
Ele arat ca i cmpurile dar acioneaz ca i metodele.
Vom accesa o proprietate folosind aceeai sintax ca n cazul
accesrii cmpurilor.
Vom declara o proprietate astfel:
Modificator_de_acces tip nume_proprietate
{
...
}

De obicei modificatorul de acces va fi public.


ntre acolade sunt prezente unul sau dou blocuri accesoare.
Un bloc accesor este un bloc de citire sau un bloc de scriere.
Blocul accesor de citire conine instruciuni care se execut cnd
proprietatea se citete, iar blocul accesor de scriere conine instruciuni care se
execut cnd proprietatea se scrie.
Blocul accesor de citire are formatul:
get
{
}

...

El se mai numete i blocul get sau accesorul get.


Blocul accesor de scriere are un format similar:
set
{
}

...

i el se mai numete i blocul set sau accesorul set.


Cele trei puncte din blocurile get i set reprezint instruciuni.
Din blocul get se revine printr-o instruciune return de forma:
return expresie;
Valoarea expresiei expresie definete valoarea curent a proprietii.

125

Blocul set transfer valoarea proprietii prin intermediul unui


parametru predefinit ascuns avnd numele value (valoare). Acesta are
acelai tip cu tipul utilizat n declaraia de proprietate.
Cmpurile i proprietile se recomand s aib un nume care ncepe
cu liter mare dac sunt publice i cu liter mic dac au protecia private.
Dac se utilizeaz valoarea proprieti, de exemplu proprietatea este
un operand al unei expresii situat n partea dreapt a operatorului de
atribuire, atunci se execut blocul get i se revine din el cu o valoare care este
valoarea proprietii, adic valoarea operandului respectiv.
n aceast situaie, blocul get joac rolul unei metode din care se
revine cu o valoare a crei tip este tipul proprietii.
Dac proprietatea este n stnga unui operator de atribuire, atunci se va
executa blocul set ca i cum acesta ar fi o metod care are ca parametru pe
value. De obicei, blocul set face i testri asupra valorii parametrului value.
O declaraie de proprietate de obicei conine att un bloc get, ct i un
bloc set.
Se pot ns defini i proprieti care s nu conin ambele blocuri. O
proprietate a crei declaraie conine doar blocul get, se spune c este o
proprietate read-only (numai citete). n mod similar, o proprietate a crei
declaraie conine doar blocul set, se spune c este o proprietate write-only
(numai scrie).
Despre proprietile ale cror declaraii conin ambele blocuri, se
spune c sunt proprieti read/write (citire/scriere).
Proprietile read/write sunt cele mai frecvente, iar cele mai rare sunt
proprietile write-only.
n final s observm c proprietile au rolul de a determina
valoarea unei componente a unui obiect (structur) prin blocul get i/sau de a
seta valoarea unei componente a unui obiect (structur) prin blocul set.
Blocurile get i set sunt similare metodelor.
Blocul get este similar cu o metod ce nu are parametri i returneaz
o valoare a crei tip este tipul din declaraia proprietii. Blocul set este similar
cu o metod care are ca parametru pe value de acelai tip cu tipul din declaraia
proprietii, metod care nu returneaz nimic (metod void).
Blocurile get i set pot i ele s aib un modificator de acces propriu
care s difere de modificatorul de acces de la nceputul declaraiei de
proprietate:
modificator_de_access_get get {...}
modificator_de_access_set set {...}
De exemplu, dac modificatorul de acces al declaraiei de proprietate
este public, atunci modificatorii de acces ale blocurilor get i /sau set pot fi
private dar nu i invers.
126

Evident, dac blocurile get i/sau set nu au precizat un modificator de


protecie, atunci ele au n mod automat acelai modificator de protecie ca i al
declaraiei de proprietate.
Exerciii
7.1. S se scrie o aplicaie care citete trei numere oarecare pozitive ce
reprezint msurile laturilor unui triunghi i afieaz aria triunghiului respectiv.
Proiectul aplicaiei va avea numele Proprietati1.
Aria unui triunghi oarecare se poate calcula folosind formula lui
Heron. Dac a, b i c sunt msurile laturilor unui triunghi i notm cu p
semiperimetrul triunghiului (p = (a+b+c)/2), atunci aria triunghiului respectiv
se calculeaz dup relaia:
aria =

p( p a )( p b)( p c)

Din geometrie se tie c pentru ca a, b i c s reprezinte msurile


laturilor unui triunghi, este necesar i suficient ca p-a > 0, p-b > 0 i p-c > 0.
Aplicaia are dou clase: clasa cu numele Program i clasa cu numele
triunghi.
Clasa triunghi are ca date membru variabilele a, b, c i p care sunt
cmpuri ale clasei respective. Clasa triunghi are i un constructor cu parametri
a, b, i c pentru a iniializa cmpurile cu acelai nume la instanierea unui
obiect al clasei respective.
De asemenea, clasa triunghi are proprietile A, B, C, P, i Aria.
Proprietile A, B i C au numai blocul get care realizeaz accesul la
cmpurile a, b i c ale sale.
Proprietatea P are numai blocul set prin care se testeaz condiiile ca
semiperimetrul triunghiului ((a+b+c)/2) s fie mai mare dect msurile laturilor
sale. n caz afirmativ, semiperimetrul triunghiului se atribuie lui p. Valoarea
semiperimetrului este dat de parametrul value. Dac condiia de mai sus nu
este satisfcut, se afieaz un mesaj de eroare corespunztor i lui p i se
atribuie valoarea zero.
Proprietatea Aria are numai blocul get. Blocul respectiv calculeaz i
returneaz valoarea ariei triunghiului.
Clasa Program are dou metode membru statice: cit i Main.
Metoda cit citete de la tastatur un numr de tip double ntr-un bloc
try.
Se semnaleaz eroare dac numrul citit nu este pozitiv sau dac nu s-a
tastat un numr oarecare.

127

V-239
Limbajul C# pentru nceptori
Mediul de Programare VISUAL STUDIO # 2008
depanarea programelor i tratarea erorilor
proprieti, tablouri i clasa Array
Liviu Negrescu, Lavinia Negrescu
1. MEDIUL DE PROGRAMARE VISUAL STUDIO C# 2008
Rezumat
2. TIPURI DE DATE
2.1. Tipuri structurate
2.1.1. Tipuri structurate corespunztoare tipurilor primitive
2.2. Tipul enumerare
2.3. Tipul referin
2.4. Tipul pointer
Rezumat
3. DEPANAREA PROGRAMELOR
3.1. Erori sintactice
3.2. Erori logice
3.2.1. Modul de execuie n regim de depanare
Rezumat
4. EXCEPIILE I TRATAREA ERORILOR
4.1. Construcile try, catch i finally
4.1.1. Depiri la evaluarea expresiilor
4.2. Instruciunea throw
Rezumat
5. DATE CONSTANTE
Rezumat
6. CONVERSIA DATELOR FOLOSIND METODA PARSE
Rezumat
7. PROPRIETI
Rezumat
8. OPERATORII IS, AS I TYPEOF
8.1. Operatorul is
8.2. Operatorul as
8.3. Operatorul typeof

Rezumat
9. UTILIZAREA SPAIILOR DE NUME
Rezumat
10. TABLOURI
10.1. Tablouri de obiecte
10.2. Copierea tablourilor
10.3. Clasa Array
Rezumat