Programare avansată utilizând clase

Curs
9.5/10 (4 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 11 în total
Cuvinte : 2591
Mărime: 15.13KB (arhivat)
Publicat de: Vlad Robu
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Fierbinteanu C.
Curs C++: "Programare Orientata Pe Obiecte"; Cap. 4 Universitatea Titu Maiorescu, STI, An 2

Extras din curs

Functii si clase prietene

In paragraful precedent, am afirmat ca principiul incapsularii datelor este bine sa fie respectat in cadrul elaborarii ierarhiei de clase. Cu toate acestea, exista situatii in care este greu sa se respecte acest principiu. De aceea, Bjarne Stroustrup a introdus un concept menit sa rezolve si aceste situatii particulare, pentru a oferi solutii elegante in vederea rezolvarii tuturor situatiilor posibile. Acest concept este cel de friend, care permite practic abateri controlate de la ideea protectiei datelor prin incapsulare. Mecanismul de friend este bine sa fie folosit numai in cazul in care nu exista alta solutie!

Mecanismul de friend (sau prietenie) a aparut datorita imposibilitatii ca o metoda sa fie membru a mai multor clase.

Functiile prietene sunt functii care nu sunt metode ale unei clase, dar care au totusi acces la membrii privati ai acesteia. Orice functie poate fi prietena a unei clase, indiferent de natura acesteia.

Sintaxa declararii unei functii prietene in cadrul declaratiei unei clase este urmatoarea:

friend NumeFunctie

Iata si un exemplu:

class Point {

friend unsigned long Calcul(unsigned X, unsigned Y);

public:

friend unsigned long AltaClasa::Calcul(unsigned X, unsigned Y);

...

};

unsigned long Calcul(unsigned X, unsigned Y) {

return X * Y / 2;

}

unsigned long AltaClasa::Calcul(unsigned X, unsigned Y) {

...

}

Dupa cum se vede din exemplul de mai sus, nu are nici o importanta in cadrul carei sectiuni este declarata functia prietena.

Clasele prietene sunt clase care au acces la membrii privati ai unei clase. Sintaxa declararii unei clase prietene este:

friend class NumeClasaPrietena

Iata si un exemplu:

class PrimaClasa {

...

};

class ADouaClasa {

...

friend class PrimaClasa;

};

In exemplul de mai sus, clasa PrimaClasa are acces la membrii privati ai clasei ADouaClasa.

Important este sa remarcam ca relatia de prietenie nu este tranzitiva. Daca o clasa A este prietena a clasei B, si clasa B este prietena a unei clase C, aceasta nu inseamna ca A este prietena a clasei C. De asemenea, proprietatea de prietenie nu se mosteneste in clasele derivate.

Preview document

Programare avansată utilizând clase - Pagina 1
Programare avansată utilizând clase - Pagina 2
Programare avansată utilizând clase - Pagina 3
Programare avansată utilizând clase - Pagina 4
Programare avansată utilizând clase - Pagina 5
Programare avansată utilizând clase - Pagina 6
Programare avansată utilizând clase - Pagina 7
Programare avansată utilizând clase - Pagina 8
Programare avansată utilizând clase - Pagina 9
Programare avansată utilizând clase - Pagina 10
Programare avansată utilizând clase - Pagina 11

Conținut arhivă zip

  • Programare Avansata Utilizand Clase.doc

Alții au mai descărcat și

Ierarhie de Clase într-o Aplicație Consolă

Formulare generală: Realizarea un proiect în care să fie implementată o ierarhie de clase într-o aplicaţie consolă. Vor putea fi create (şi,...

Grilă PPOO

Fie urmatoarea specificare de clasa: class AbstractList{ public: virtual void Create()=0; virtual void put(AbstractElem* ae){}; virtual...

Introducere în C Sharp

Noţiuni generale Pentru gruparea fişierelor sursă şi a altor resurse utilizate în cadrul aplicaţiei, mediul Visual Studio .Net (VS) utilizează...

Limbaje de Programare

1.1. Introducere în bazele de date Sistemele de baze de date pot fi considerate ca cea mai importantă realizare în domeniul ingineriei...

AutoCad

APERTURE - controleazã mãrimea cursorului selector, caracteristic modului object snap. ARC - traseazã un arc de cerc de orice dimensiune. A -...

Biblioteca de Șabloane Standard

Biblioteca de Sabloane Standard (STL) asigura o abstractizare standardizata a datelor prin intermediul containerelor si o abstractizare procedurala...

Clase Derivate

1. Clase derivate. Prin mostenire, atributele unei clase de baza sunt transmise unor clase derivate. Derivarea permite definirea unor clase noi,...

Clase în Java

Clase pentru miniaplicatii Miniaplicatiile constituie extensii ale unei clase deja existente java.applet.Applet. Structura clasei unui applet...

Te-ar putea interesa și

Geographic Information Systems

Curs 1. Ce este GIS-ul? GIS este acronimul denumirii in limba engleza a Sistemelor Informatice Geografice: Geographic Information Systems (SUA),...

Multimedia și animație

Grafica digitală este un domeniu al informaticii care acoperă toate aspectele legate de formarea imaginilor utilizând un computer. Termenul...

Ai nevoie de altceva?