This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
laboratoare:organizare-acces [2013/09/24 18:55] daniel.ciocirlan Jumatate |
laboratoare:organizare-acces [2013/09/24 19:33] daniel.ciocirlan |
||
---|---|---|---|
Line 37: | Line 37: | ||
Clasele şi funcţiile menţionate până acum au fost declarate utilizând un specificator special: ''public''. În limbajul Java (şi în majoritatea limbajelor de programare de tipul OOP), orice clasă, atribut sau metodă posedă un **specificator de acces**, al cărui rol este de a restricţiona accesul la entitatea respectivă, din perspectiva altor clase. Există specificatorii: | Clasele şi funcţiile menţionate până acum au fost declarate utilizând un specificator special: ''public''. În limbajul Java (şi în majoritatea limbajelor de programare de tipul OOP), orice clasă, atribut sau metodă posedă un **specificator de acces**, al cărui rol este de a restricţiona accesul la entitatea respectivă, din perspectiva altor clase. Există specificatorii: | ||
+ | * **''public''** - permite acces complet din exteriorul clasei curente | ||
+ | * **''private''** - limitează accesul doar în cadrul clasei curente | ||
+ | * **''protected''** - limitează accesul doar în cadrul clasei curente şi al tuturor descendenţilor ei (conceptul de //descendenţă// sau de //moştenire// va fi explicat mai târziu) | ||
+ | * **(default)** - în cazul în care nu este utilizat explicit nici unul din specificatorii de acces de mai sus, accesul este permis doar în cadrul //pachetului// (package private). Atenţie, nu confundaţi specificatorul default (= lipsa unui specificator explicit) cu ''protected''! | ||
+ | |||
+ | Utilizarea specificatorilor contribuie la realizarea //**încapsulării**//. Amintim, din primul laborator, că încapsularea se referă la acumularea atributelor şi metodelor caracteristice unei anumite categorii de obiecte într-o clasă. //Pe de altă parte, acest concept denotă şi ascunderea informaţiei de stare internă a unui obiect, reprezentată de atributele acestuia, alături de valorile aferente, şi asigurarea comunicării strict prin intermediul metodelor// (= //interfata// clasei). Acest lucru conduce la izolarea modului de implementare a unei clase (= atributele acesteia şi cum sunt manipulate) de utilizarea acesteia. Utilizatorii unei clase pot conta pe functionalitatea expusa de aceasta, indiferent de modalitatea in care ea este implementata, aceasta putandu-se chiar modifica in timp. Accesul utilizatorilor la implementarea unei clase ar conduce la imposibilitatea modificarii acesteia din urma, fara a declansa actualizari ale portiunilor ce utilizeaza clasa respectiva. |