În C++, clasele și obiectele sunt elemente fundamentale ale programării orientate pe obiecte (OOP). O clasă este un șablon (template) pentru crearea obiectelor, iar un obiect este o instanță a unei clase.
1. Definirea unei clase
O clasă este definită folosind cuvântul cheie class, urmat de un nume al clasei și un bloc de cod între acolade {}.
#include <iostream>
using namespace std;
class Masina {
public: // Specificator de acces (public, private, protected)
string marca;
string model;
int an;
// Metodă pentru afișarea informațiilor despre mașină
void afiseazaDetalii() {
cout << "Marca: " << marca << ", Model: " << model << ", An: " << an << endl;
}
};
2. Crearea și utilizarea unui obiect
Un obiect este o instanță a unei clase. Se creează declarând o variabilă de tipul clasei.
int main() {
Masina masina1; // Creăm un obiect de tip Masina
// Inițializăm atributele obiectului
masina1.marca = "Dacia";
masina1.model = "Logan";
masina1.an = 2020;
// Apelăm metoda clasei
masina1.afiseazaDetalii();
return 0;
}
Rezultatul afișat:
Marca: Dacia, Model: Logan, An: 2020
3. Specificatori de acces
C++ oferă trei specificatori de acces:
public: Membrii pot fi accesați din exteriorul clasei.private: Membrii sunt accesibili doar în interiorul clasei.protected: Similar cuprivate, dar permite accesul în clase derivate.
Exemplu cu membrii private și getter:
class Masina {
private:
string marca;
public:
void setMarca(string m) { marca = m; } // Setter
string getMarca() { return marca; } // Getter
};
4. Constructori și Destructor
Un constructor este o funcție specială apelată automat la crearea unui obiect.
class Masina {
public:
string marca;
// Constructor
Masina(string m) {
marca = m;
}
void afiseazaMarca() {
cout << "Marca: " << marca << endl;
}
};
int main() {
Masina masina1("Toyota"); // Constructorul inițializează obiectul
masina1.afiseazaMarca();
return 0;
}
Un destructor este apelat automat la distrugerea unui obiect:
class Masina {
public:
~Masina() {
cout << "Obiectul a fost distrus!" << endl;
}
};
5. Clase derivate (Moștenire)
Moștenirea permite crearea unei noi clase pe baza uneia existente.
class Vehicul {
public:
void sunet() {
cout << "Vehiculul face un zgomot!" << endl;
}
};
class Masina : public Vehicul {
public:
void claxon() {
cout << "Masina claxonează: Beep Beep!" << endl;
}
};
int main() {
Masina m;
m.sunet(); // Metodă moștenită
m.claxon(); // Metodă proprie
return 0;
}
Rezultat:
Vehiculul face un zgomot!
Masina claxonează: Beep Beep!
Concluzie
- Clasele definesc structura și comportamentul obiectelor.
- Obiectele sunt instanțe ale claselor.
- Specificatorii de acces controlează vizibilitatea membrilor.
- Constructorii și destructorii gestionează inițializarea și distrugerea obiectelor.
- Moștenirea permite reutilizarea codului prin extinderea claselor existente.
Aceste concepte sunt esențiale în programarea orientată pe obiecte în C++.