Programarea orientată pe obiecte (POO) organizează codul în jurul claselor și obiectelor, spre deosebire de programarea procedurală. Cele patru principii fundamentale sunt: încapsularea, moștenirea, polimorfismul și abstractizarea, care permit scrierea de cod modular, reutilizabil și ușor de întreținut.
Clasa este un șablon sau un tip de date definit de programator, care conține atribute (variabile membre) și metode (funcții membre).
Obiectul este o instanță a unei clase, adică o entitate concretă care ocupă memorie și are propria stare.
Exemplu: Clasa "Mașină" poate avea atribute precum marca, modelul și viteza, iar metode precum accelerare() sau franează(). Prin crearea mai multor obiecte de tip Mașină, fiecare își păstrează propriile valori ale atributelor.
Moștenirea permite definirea unei clase părinte (bază) și a unei clase copil (derivată) care preia atributele și metodele părintelui, putând să le extindă sau să le suprascrie (override).
Exemplu: Clasa "Vehicul" (părinte) are metoda deplasează(), iar clasa "Mașină" (copil) moștenește această metodă și poate adăuga propriul comportament.
În C++, moștenirea publică se realizează prin sintaxa: class Derived : public Base
Polimorfismul se referă la capacitatea unui obiect de a se comporta în moduri diferite în funcție de context. În C++ și Java, polimorfismul se realizează prin:
Exemplu: Un vector de pointeri de tip Vehicul* poate conține obiecte de tip "Mașină" și "Bicicletă"; apelarea metodei deplasează() pe fiecare element va duce la executarea versiunii corespunzătoare din clasa derivată.
Încapsularea este un pilon al POO prin care datele sunt ascunse (private) și accesate doar prin metode publice (getteri/setteri). Se utilizează specificatorii de acces:
private - accesibil doar în cadrul claseipublic - accesibil din exteriorprotected - accesibil în clasă și în clasele derivateStudent cu atribute private: nume (string) și notă (int). Metode publice: constructor cu parametri, getteri, o metodă afișează(). În main() cream un obiect s1 cu nume 'Ana' și notă 9, apoi apelăm metoda de afișare.
Animal cu metoda virtuală sunet(). Clasa derivată Caine care moștenește Animal și suprascrie metoda sunet(). Clasa Pisica similar. În main(), cream un vector de pointeri Animal* și adăugăm obiecte de tip Caine și Pisica. Datorită virtual, se execută versiunile corecte ale metodelor.
Forma are o metodă virtuală pură arie(). Derivăm clasele Cerc și Dreptunghi, fiecare implementând arie(). În main(), cream un vector de pointeri Forma* și apelăm arie() pentru fiecare, obținând rezultate diferite.
virtual în cadrul polimorfismului dinamic?Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.