📢 Nuovo Corso Laravel API disponibile!

Classi e Oggetti in C++

La Programmazione Orientata agli Oggetti (OOP) è un paradigma di programmazione che si basa sulla creazione e l’utilizzo di oggetti, che sono istanze di classi. In C++, le classi sono il principale strumento per implementare l’OOP. In questo articolo, esploreremo cosa sono le classi, come dichiararle, definirle, utilizzarle e alcune importanti nozioni di base sulla programmazione orientata agli oggetti.

Cos’è una Classe

Una classe in C++ è una struttura di dati che rappresenta un oggetto o una categoria di oggetti con caratteristiche simili. Le classi definiscono le proprietà (attributi) e i comportamenti (metodi) che gli oggetti di quella classe avranno. Le classi forniscono un modo per organizzare dati e funzioni in un’unica unità, consentendo la creazione di oggetti basati su di esse.

Perché Usare le Classi

Le classi sono ampiamente utilizzate in programmazione per diversi motivi:

  • Astrazione: Le classi consentono di creare tipi di dati personalizzati che astraggono i dettagli di implementazione e semplificano l’utilizzo dei dati.

  • Riutilizzo del Codice: Le classi consentono di definire una volta un modello di oggetto e riutilizzarlo in tutto il programma o in altri programmi.

  • Organizzazione dei Dati: Le classi organizzano dati correlati e metodi in un’unica entità, rendendo il codice più chiaro e modulare.

Dichiarare e Definire una Classe

Per dichiarare una classe in C++, utilizziamo la parola chiave class, seguita dal nome della classe e un blocco di definizione all’interno delle parentesi graffe {}.

class Automobile {
public: // Specificatore di accesso pubblico
std::string marca;
std::string modello;
int anno;
};

Nell’esempio sopra, abbiamo dichiarato una classe chiamata Automobile con tre attributi: marca, modello e anno.

Proprietà e Metodi di Classe

Gli attributi di una classe sono spesso chiamati proprietà, mentre le funzioni associate alla classe sono chiamate metodi. I metodi definiscono il comportamento degli oggetti della classe.

class Automobile {
public:
std::string marca;
std::string modello;
int anno;
void mostraInformazioni() {
std::cout << "Marca: " << marca << std::endl;
std::cout << "Modello: " << modello << std::endl;
std::cout << "Anno: " << anno << std::endl;
}
};

Nell’esempio sopra, abbiamo aggiunto un metodo chiamato mostraInformazioni() che stampa le informazioni dell’automobile.

Costruttori

Un costruttore è un metodo speciale di una classe chiamato quando si crea un oggetto della classe. In C++, il costruttore ha lo stesso nome della classe ed è utilizzato per inizializzare gli attributi dell’oggetto.

class Automobile {
public:
std::string marca;
std::string modello;
int anno;
// Costruttore
Automobile(const std::string& m, const std::string& mod, int a) {
marca = m;
modello = mod;
anno = a;
}
void mostraInformazioni() {
std::cout << "Marca: " << marca << std::endl;
std::cout << "Modello: " << modello << std::endl;
std::cout << "Anno: " << anno << std::endl;
}
};
int main() {
// Creazione di un oggetto 'auto1' con il costruttore
Automobile auto1("Ford", "Focus", 2022);
auto1.mostraInformazioni();
return 0;
}

Sovraccarico dei Costruttori

È possibile definire più costruttori per una classe con parametri diversi. Questa tecnica è chiamata sovraccarico dei costruttori.

class Automobile {
public:
std::string marca;
std::string modello;
int anno;
// Costruttore con parametri
Automobile(const std::string& m, const std::string& mod, int a) {
marca = m;
modello = mod;
anno = a;
}
// Costruttore predefinito senza parametri
Automobile() {
marca = "Sconosciuta";
modello = "Sconosciuto";
anno = 0;
}
void mostraInformazioni() {
std::cout << "Marca: " << marca << std::endl;
std::cout << "Modello: " << modello << std::endl;
std::cout << "Anno: " << anno << std::
endl;
}
};

Conclusioni

Le classi sono un concetto fondamentale nella programmazione orientata agli oggetti in C++. Consentono di definire tipi di dati personalizzati con attributi e metodi. Comprendere come dichiarare, definire, utilizzare costruttori e sovraccaricare i costruttori è cruciale per sviluppare applicazioni orientate agli oggetti in modo efficace. Le classi forniscono un modo potente per organizzare, astrarre e riutilizzare il codice in modo modulare.