Esercizi Interfacce C++
Ecco degli esercizi semplici con soluzione per praticare le basi delle interfacce in C++.
Esercizio 1
Crea un'interfaccia Veicolo con un metodo virtuale puro accelera che rappresenta l'azione di accelerazione del veicolo.
#include <iostream>using namespace std;
class Veicolo {public: virtual void accelera() = 0;};
int main() { // Veicolo v; // Errore: impossibile istanziare un'interfaccia
return 0;}
Esercizio 2
Crea una classe Automobile che implementa l'interfaccia Veicolo e implementa il metodo accelera per rappresentare l'accelerazione dell'automobile.
#include <iostream>using namespace std;
class Veicolo {public: virtual void accelera() = 0;};
class Automobile : public Veicolo {public: void accelera() override { cout << "L'automobile accelera." << endl; }};
int main() { Veicolo* v = new Automobile(); v->accelera();
return 0;}
Esercizio 3
Crea una classe Moto che implementa l'interfaccia Veicolo e implementa il metodo accelera per rappresentare l'accelerazione della moto.
#include <iostream>using namespace std;
class Veicolo {public: virtual void accelera() = 0;};
class Moto : public Veicolo {public: void accelera() override { cout << "La moto accelera." << endl; }};
int main() { Veicolo* v = new Moto(); v->accelera();
return 0;}
Esercizio 4
Crea un'interfaccia Suonabile con un metodo virtuale puro eseguiSuono che rappresenta l'azione di esecuzione di un suono.
#include <iostream>using namespace std;
class Suonabile {public: virtual void eseguiSuono() = 0;};
int main() { // Suonabile s; // Errore: impossibile istanziare un'interfaccia
return 0;}
Esercizio 5
Crea una classe Chitarra che implementa l'interfaccia Suonabile e implementa il metodo eseguiSuono per rappresentare l'esecuzione del suono di una chitarra.
#include <iostream>using namespace std;
class Suonabile {public: virtual void eseguiSuono() = 0;};
class Chitarra : public Suonabile {public: void eseguiSuono() override { cout << "La chitarra suona." << endl; }};
int main() { Suonabile* s = new Chitarra(); s->eseguiSuono();
return 0;}
Esercizio 6
Crea una classe Pianoforte che implementa l'interfaccia Suonabile e implementa il metodo eseguiSuono per rappresentare l'esecuzione del suono di un pianoforte.
#include <iostream>using namespace std;
class Suonabile {public: virtual void eseguiSuono() = 0;};
class Pianoforte : public Suonabile {public: void eseguiSuono() override { cout << "Il pianoforte suona." << endl; }};
int main() { Suonabile* s = new Pianoforte(); s->eseguiSuono();
return 0;}
Esercizio 7
Crea un'interfaccia Distribuibile con un metodo virtuale puro distribuisci che rappresenta l'azione di distribuzione di un oggetto.
#include <iostream>using namespace std;
class Distribuibile {public: virtual void distribuisci() = 0;};
int main() { // Distribuibile d; // Errore: impossibile istanziare un'interfaccia
return 0;}
Esercizio 8
Crea una classe Libro che implementa l'interfaccia Distribuibile e implementa il metodo distribuisci per rappresentare la distribuzione di un libro.
#include <iostream>using namespace std;
class Distribuibile {public: virtual void distribuisci() = 0;};
class Libro : public Distribuibile {public: void distribuisci() override { cout << "Il libro viene distribuito." << endl; }};
int main() { Distribuibile* d = new Libro(); d->distribuisci();
return 0;}
Esercizio 9
Crea una classe Film che implementa l'interfaccia Distribuibile e implementa il metodo distribuisci per rappresentare la distribuzione di un film.
#include <iostream>using namespace std;
class Distribuibile {public: virtual void distribuisci() = 0;};
class Film : public Distribuibile {public: void distribuisci() override { cout << "Il film viene distribuito." << endl; }};
int main() { Distribuibile* d = new Film(); d->distribuisci();
return 0;}
Esercizio 10
Crea un'interfaccia Scrivibile con un metodo virtuale puro scrivi che rappresenta l'azione di scrittura di un contenuto.
#include <iostream>using namespace std;
class Scrivibile {public: virtual void scrivi() = 0;};
int main() { // Scrivibile s; // Errore: impossibile istanziare un'interfaccia
return 0;}