Definiția claselor și obiectelor

Î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 cu private, 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++.