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.