🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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;
}