Sunteți pe pagina 1din 4

POO:

Programarea Orientata pe Obiecte (POO) – sau OOP –Object Oriented Programming –


este o paradigma de programare care foloseste concepte abstracte (sub forma de clase si
obiecte) pentru a crea modele bazate pe elemente din lumea reala. O aplicatie construita pe
programare orientata pe obiecte foloseste mai multe obiecte care comunica prin mesaje
specifice pentru a rezolva diverse servicii (ale aplicatiei) solicitate. Aceste obiecte sunt capabile
sa trimita mesaje (date), sa primeasca mesaje (date) si sa proceseze date. Scopul programarii
orientate pe obiecte este de a incerca sa creasca flexibilitatea si mentenabilitatea
programelor. Deoarece programele create folosind o un limbaj orientat pe obiecte sunt
modulare, ele pot fi mai usor de dezvoltat si mai usor de inteles dupa dezvoltare.proprietăți.

Mostenirea:
 Mecanismul prin care o clasă preia structura (datele membre) şi comportamentul
(metodele) unei alte clase la care adaugă elemente specifice.
 Stabileste o relatie de tipul "este un/este o" (is-a)
 Clasă de baza = clasa de la care se preia structura şi comportamentul
 Clasa derivată = clasa care preia structura şi comportamentul

Moştenirea multiplă, reprezintă prin sine moştenirea de la două sau mai multe clase. Pentru
a înţelege pentru ce ne trebuie moştenirea multiplă trebuie să ne amintim, că moştenirea
simplă nu rezolvă toate problemele, aşa cum câteodată ne obligă să alegem dintre două clase
de bază potrivite.

Este interesantă părerea lui Buch referitor la acest mecanism: „Moştenirea multiplă este ca o
paraşută: de regulă, nu ne trebuie, dar, când întâmplător o să ne trebuiască, o să ne pară rău
dacă nu o să fie la îndemână”
Exemplu:
#include<iostream>
using namespace std;
class Person {
public:
Person(int x) { cout << "Person::Person(int ) called" << endl; }
Person() { cout << "Person::Person() called" << endl; }
};

class Faculty : virtual public Person {


public:
Faculty(int x):Person(x) {
cout<<"Faculty::Faculty(int ) called"<< endl;
}
};

class Student : virtual public Person {


public:
Student(int x):Person(x) {
cout<<"Student::Student(int ) called"<< endl;
}
};

class TA : public Faculty, public Student {


public:
TA(int x):Student(x), Faculty(x) {
cout<<"TA::TA(int ) called"<< endl;
}
};

int main() {
TA ta1(30);
}
Accesibilitate:
In limbajul C++ incapsularea poate fi fortata prin controlul accesului, deoarece toate datele si
functiile membre sunt caracterizate printr-un nivel de acces. Nivelul de acces la membrii unei
clase poate fi:
 

 private: membrii (date si metode) la care accesul este private pot fi accesati doar prin
metodele clasei (nivel acces implicit);
 protected: acesti membri pot fi accesati prin functiile membre ale clasei si functiile
membre ale clasei derivate;
 public: membrii la care accesul este public pot fi accesati din orice punct al domeniului
de existenta a  clasei respective;
 friend: acesti membri pot fi accesati prin functiile membre ale functiei prietene
specificate.

In limbajul C++, nivelul de acces poate preciza si tipul de mostenire (figura ):

 Publica, unde in clasa derivata nivelul de acces al membrilor este acelasi ca in clasa de
baza;
 Privata, unde membrii protected si public din clasa baza devin private in clasa derivata;
 Protejata (la compilatoarele mai noi).
 

S-ar putea să vă placă și