Programare Avansata Utilizand 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)
Cost: Gratis
Profesor îndrumător / Prezentat Profesorului: Fierbinteanu C.
Curs C++: "Programare Orientata Pe Obiecte"; Cap. 4 Universitatea Titu Maiorescu, STI, An 2

Extras din document

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 Avansata Utilizand Clase - Pagina 1
Programare Avansata Utilizand Clase - Pagina 2
Programare Avansata Utilizand Clase - Pagina 3
Programare Avansata Utilizand Clase - Pagina 4
Programare Avansata Utilizand Clase - Pagina 5
Programare Avansata Utilizand Clase - Pagina 6
Programare Avansata Utilizand Clase - Pagina 7
Programare Avansata Utilizand Clase - Pagina 8
Programare Avansata Utilizand Clase - Pagina 9
Programare Avansata Utilizand Clase - Pagina 10
Programare Avansata Utilizand Clase - Pagina 11

Conținut arhivă zip

  • Programare Avansata Utilizand Clase.doc

Alții au mai descărcat și

Proiectarea Aplicatiilor de Comert Electronic - Aplicatie de Food-Ordering

Progresele realizate recent în domeniile tehnologie-calculatoare, telecomunicatii si software, precum si în alte domenii ale informatiei, au...

Folosirea MySQL și PHP în Gestionarea unei Baze de Date pe Web

Introducere Conţinutul lucrării este dat de construcţia de legături dintre World Wide Web şi baze de date, dintre tehnologia veche şi cea nouă,...

Functii Recursive - Turbo Pascal

CUVÂNT ÎNAINTE Acest proiect la informatica consta în prezentarea în limbajul de programare Turbo Pascal a unei probleme ce îsi propune sa...

Sisteme de Intrari Prelucrari si Iesiri a Datelor prin Intermediul a PHP si MYSQL

Introducere Proiectul de specialitate constituie un element obligatoriu al planului de învatamânt astfel, proiectul de specialitate reprezinta...

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,...

Grila PPOO

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

Programare Orientata pe Obiect C++

1. INTRODUCERE ÎN C++ Exista limbaje concepute strict pe baza conceptelor programării orientate pe obiecte (POO), de exemplu Simula sau Smalltalk....

Structuri de Date și Algoritmi

Curs 1 Structuri de date Structurile de date erau definite în limbajul C drept organizarea datelor primare. În limbajul C++, acestea reprezinta o...

Ai nevoie de altceva?