cap4 - Cap. 4. Programare avansata utilizand clase 4.1....

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
Cap. 4. Programare avansata utilizand clase 4.1. Controlul accesului la clase Spre deosebire de limbajele orientate obiect pure, C++ permite controlul accesului la membrii claselor. In acest scop, s-au creat trei specificatori de cotrol al accesului: public , membrul poate fi accesat de orice functie din domeniul declaratiei clasei; private , membrul este accesibil numai functiilor membre si prietene ale clasei; protected , similar cu private , insa accesul se extinde si la functiile membre si prietene ale claselor derivate. De remarcat este faptul ca o functie membra a unei clase are acces la toti membrii clasei, indiferent de specificatorul de acces. Asadar, sintaxa declaratiei unei clase derivate incluzand controlul accesului este: class NumeClasaDerivata : SpecificatorAcces NumeClasaDeBaza unde SpecificatorAcces poate fi public sau private . Atributul din clasa de baza Modificator de acces Accesul mostenit de clasa derivata Accesul din exterior private protected public private private private inaccesibil private private inaccesibil inaccesibil inaccesibil private protected public public public public inaccesibil protected public inaccesibil inaccesibil accesibil Se observa ca pentru a oferi clasei derivate acces la un membru al clasei de baza, acesta trebuie declarat protected sau public. Pentru respectarea principiului incapsularii datelor, datele membre pentru care se ofera acces claselor derivate se declara in clasa de baza cu atributul protected. De asemenea, pentru a conserva dreptul de acces in urma derivarii, se utilizeaza derivarea public. Accesul poate fi stopat pe orice nivel ar ierarhiei de clase printr-o derivare private. Stabilirea atributelor de acces ale membrilor unei clase, precum si ale derivarilor, trebuie sa se faca astfel incat dezvoltarea ierarhiei de clase fara a afecta incapsularea datelor. Sa reluam in continuare exemplul din capitolul precedent, completat cu specificatori de acces: class Point { protected: unsigned x, y; public: Point(); Point(unsigned X, unsigned Y); ~Point(); unsigned long Arie();
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
unsigned GetX(); unsigned GetY(); void SetX(unsigned X); void SetY(unsigned Y); }; class GraphicPoint : public Point { unsigned color; public: GraphicPoint(unsigned X, unsigned Y, unsigned Color); ~GraphicPoint(); void Draw(); void SetX(unsigned X); void SetY(unsigned Y); }; Se observa ca variabilele membru x si y sunt declarate protected, asa incat vor fi vizibile si vor avea acelasi atribut in clasa GraphicPoint (desi nu sunt utilizate). In mod normal, x si y ar trebui sa fie declarati private, intrucat nu sunt utilizati decat in interiorul clasei Point. Functiile din GraphicPoint nu acceseaza acesti doi membri direct, ci prin intermediul metodelor publice de accesare a lor oferite de clasa Point. De notat este faptul ca implicit, daca nu este utilizat nici un specificator de acces, membrii sunt
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 08/10/2009 for the course CS UB01004 taught by Professor Dragosacostachioaie during the Spring '09 term at 東京大学.

Page1 / 10

cap4 - Cap. 4. Programare avansata utilizand clase 4.1....

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online