This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:organizare-acces [2013/09/24 18:55] daniel.ciocirlan Jumatate |
laboratoare:organizare-acces [2019/09/04 18:41] (current) Adriana Draghici [Exerciţii] |
||
---|---|---|---|
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''! | ||
+ | |||
+ | **Important**: 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 funcţionalitatea expusă de aceasta, **indiferent de implementarea ei internă** (chiar şi dacă se poate modifica în timp). Dacă utilizatorii ar avea acces la modul efectiv de implementare a unei clase, ar fi imposibilă modificarea implementării ei (necesitate care apare des în practică) fără un impact lateral asupra utilizatorului. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ |