Esercizi Classi Astratte C++
Codegrind Team•Jul 22 2023
Ecco degli esercizi semplici con soluzione per praticare le basi delle classi astratte in C++.
Esercizio 1
Crea una classe astratta 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; // Errore: impossibile istanziare una classe astratta
return 0;
}
Esercizio 2
Crea una classe derivata Quadrato dalla classe Figura 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:
Quadrato(double l) : lato(l) {}
double calcolaArea() override {
return lato * lato;
}
};
int main() {
Figura* f = new Quadrato(5.0);
cout << "Area del quadrato: " << f->calcolaArea() << endl;
return 0;
}
Esercizio 3
Crea una classe derivata Cerchio dalla classe Figura 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:
Cerchio(double r) : raggio(r) {}
double calcolaArea() override {
return 3.14159 * raggio * raggio;
}
};
int main() {
Figura* f = new Cerchio(3.0);
cout << "Area del cerchio: " << f->calcolaArea() << endl;
return 0;
}
Esercizio 4
Crea una classe astratta Animale con un metodo virtuale puro emettiSuono che emette il suono dell'animale.
#include <iostream>
using namespace std;
class Animale {
public:
virtual void emettiSuono() = 0;
};
int main() {
// Animale a; // Errore: impossibile istanziare una classe astratta
return 0;
}
Esercizio 5
Crea una classe derivata Cane dalla classe Animale e implementa il metodo emettiSuono per emettere il suono del cane.
#include <iostream>
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();
a->emettiSuono();
return 0;
}
Esercizio 6
Crea una classe derivata Gatto dalla classe Animale e implementa il metodo emettiSuono per emettere il suono del gatto.
#include <iostream>
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();
a->emettiSuono();
return 0;
}
Esercizio 7
Crea una classe astratta StrumentoMusicale con un metodo virtuale puro eseguiSuono che esegue un suono con lo strumento musicale.
#include <iostream>
using namespace std;
class StrumentoMusicale {
public:
virtual void eseguiSuono() = 0;
};
int main() {
// StrumentoMusicale s; // Errore: impossibile istanziare una classe astratta
return 0;
}
Esercizio 8
Crea una classe derivata Chitarra dalla classe StrumentoMusicale e implementa il metodo eseguiSuono per eseguire il suono della chitarra.
#include <iostream>
using namespace std;
class StrumentoMusicale {
public:
virtual void eseguiSuono() = 0;
};
class Chitarra : public StrumentoMusicale {
public:
void eseguiSuono() override {
cout << "Il suono della chitarra." << endl;
}
};
int main() {
StrumentoMusicale* s = new Chitarra();
s->eseguiSuono();
return 0;
}
Esercizio 9
Crea una classe derivata Pianoforte dalla classe StrumentoMusicale e implementa il metodo eseguiSuono per eseguire il suono del pianoforte.
#include <iostream>
using namespace std;
class StrumentoMusicale {
public:
virtual void eseguiSuono() = 0;
};
class Pianoforte : public StrumentoMusicale {
public:
void eseguiSuono() override {
cout << "Il suono del pianoforte." << endl;
}
};
int main() {
StrumentoMusicale* s = new Pianoforte();
s->eseguiSuono();
return 0;
}
Esercizio 10
Crea una classe astratta Forma con un metodo virtuale puro disegna che disegna la forma.
#include <iostream>
using namespace std;
class Forma {
public:
virtual void disegna() = 0;
};
int main() {
// Forma f; // Errore: impossibile istanziare una classe astratta
return 0;
}