Esercizi Polimorfismo C++
Codegrind Team•Jul 22 2023
Ecco degli esercizi semplici con soluzione per praticare le basi polimorfismo in C++.
Esercizio 1
Crea una classe base Figura con un metodo virtuale puro calcolaArea che calcola e restituisce l'area della figura.
#include <iostream>
using namespace std;
class Figura {
public:
virtual double calcolaArea() = 0;
};
int main() {
Figura* f;
// f = new Quadrato();
// f = new Cerchio();
// ...
return 0;
}
Esercizio 2
Crea una classe derivata Quadrato dalla classe Figura con un membro privato lato e implementa il metodo calcolaArea per calcolare e restituire l'area del quadrato.
#include <iostream>
using namespace std;
class Figura {
public:
virtual double calcolaArea() = 0;
};
class Quadrato : public Figura {
private:
double lato;
public:
double calcolaArea() override {
return lato * lato;
}
};
int main() {
Figura* f = new Quadrato();
// ...
return 0;
}
Esercizio 3
Crea una classe derivata Cerchio dalla classe Figura con un membro privato raggio e implementa il metodo calcolaArea per calcolare e restituire l'area del cerchio.
#include <iostream>
using namespace std;
class Figura {
public:
virtual double calcolaArea() = 0;
};
class Cerchio : public Figura {
private:
double raggio;
public:
double calcolaArea() override {
return 3.14159 * raggio * raggio;
}
};
int main() {
Figura* f = new Cerchio();
// ...
return 0;
}
Esercizio 4
Crea una classe base Veicolo con un metodo virtuale stampaInfo che stampa le informazioni sul veicolo.
#include <iostream>
#include <string>
using namespace std;
class Veicolo {
public:
virtual void stampaInfo() {
cout << "Informazioni sul veicolo." << endl;
}
};
int main() {
Veicolo* v;
// v = new Automobile();
// v = new Moto();
// ...
return 0;
}
Esercizio 5
Crea una classe derivata Automobile dalla classe Veicolo e implementa il metodo stampaInfo per stampare le informazioni specifiche dell'automobile.
#include <iostream>
#include <string>
using namespace std;
class Veicolo {
public:
virtual void stampaInfo() {
cout << "Informazioni sul veicolo." << endl;
}
};
class Automobile : public Veicolo {
public:
void stampaInfo() override {
cout << "Informazioni sull'automobile." << endl;
}
};
int main() {
Veicolo* v = new Automobile();
// ...
return 0;
}
Esercizio 6
Crea una classe derivata Moto dalla classe Veicolo e implementa il metodo stampaInfo per stampare le informazioni specifiche della moto.
#include <iostream>
#include <string>
using namespace std;
class Veicolo {
public:
virtual void stampaInfo() {
cout << "Informazioni sul veicolo." << endl;
}
};
class Moto : public Veicolo {
public:
void stampaInfo() override {
cout << "Informazioni sulla moto." << endl;
}
};
int main() {
Veicolo* v = new Moto();
// ...
return 0;
}
Esercizio 7
Crea una classe base Animale con un metodo virtuale emettiSuono che emette il suono dell'animale.
#include <iostream>
#include <string>
using namespace std;
class Animale {
public:
virtual void emettiSuono() = 0;
};
int main() {
Animale* a;
// a = new Cane();
// a = new Gatto();
// ...
return 0;
}
Esercizio 8
Crea una classe derivata Cane dalla classe Animale e implementa il metodo emettiSuono per emettere il suono del cane.
#include <iostream>
#include <string>
using namespace std;
class Animale {
public:
virtual void emettiSuono() = 0;
};
class Cane : public Animale {
public:
void emettiSuono() override {
cout << "Il cane abbaia." << endl;
}
};
int main() {
Animale* a = new Cane();
// ...
return 0;
}
Esercizio 9
Crea una classe derivata Gatto dalla classe Animale e implementa il metodo emettiSuono per emettere il suono del gatto.
#include <iostream>
#include <string>
using namespace std;
class Animale {
public:
virtual void emettiSuono() = 0;
};
class Gatto : public Animale {
public:
void emettiSuono() override {
cout << "Il gatto fa il miao." << endl;
}
};
int main() {
Animale* a = new Gatto();
// ...
return 0;
}
Esercizio 10
Crea una classe base StrumentoMusicale con un metodo virtuale eseguiSuono che esegue un suono con lo strumento musicale.
#include <iostream>
#include <string>
using namespace std;
class StrumentoMusicale {
public:
virtual void eseguiSuono() = 0;
};
int main() {
StrumentoMusicale* s;
// s = new Chitarra();
// s = new Pianoforte();
// ...
return 0;
}