Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:organizare-acces [2020/07/28 23:08]
127.0.0.1 external edit
poo-ca-cd:laboratoare:organizare-acces [2020/08/15 16:31] (current)
florin.mihalache
Line 1: Line 1:
-= Organizarea surselor și controlul accesului = +===== Organizarea surselor și controlul accesului ​====
 +====Pachete====
 Chiar şi în cadrul proiectelor de dimensiune medie, numărul claselor definite poate creşte considerabil. Astfel, devine aparentă necesitatea unei organizări a fişierelor sursă, pe baza funcţiei îndeplinite şi relaţiilor dintre acestea. În plus, această organizare permite şi utilizarea unor mecanisme de control al accesului. ​ Chiar şi în cadrul proiectelor de dimensiune medie, numărul claselor definite poate creşte considerabil. Astfel, devine aparentă necesitatea unei organizări a fişierelor sursă, pe baza funcţiei îndeplinite şi relaţiilor dintre acestea. În plus, această organizare permite şi utilizarea unor mecanisme de control al accesului. ​
  
Line 33: Line 33:
 O documentaţie detaliată legată de oraganizarea în pachete poate fi accesată de [[:​poo-ca-cd:​http://​docs.oracle.com/​javase/​tutorial/​java/​package/​index.html|aici]]. O documentaţie detaliată legată de oraganizarea în pachete poate fi accesată de [[:​poo-ca-cd:​http://​docs.oracle.com/​javase/​tutorial/​java/​package/​index.html|aici]].
  
-== Specificatori de acces ==+==== Specificatori de acces ====
  
 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 +  ​* **''​public''​** - permite acces complet din exteriorul clasei curente 
-* **''​private''​** - limitează accesul doar în cadrul 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) +  * **''​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''​!+  * **(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.+<note 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.</​note>​
  
  
poo-ca-cd/laboratoare/organizare-acces.1595966902.txt.gz · Last modified: 2020/08/15 16:31 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0