Esercizi per l’appendice 2
Contents
Esercizi per l’appendice 2¶
Esercizio A2.1¶
Si definisca una semplice struttura di ereditarieta’ delle forme geometriche, seguendo l’esempio presentato ad inizio lezione.
Si aggiunga alla classe
forma
un membroprivate
(ad esempio un’etichetta) e si verifichi che e’ accessibile dalle classi derivate solamente tramite un metodo aggiuntivopublic
oprotected
della classe base.Si verifichi la sequenza delle chiamate dei costruttori e dei distruttori della parte base e derivata delle classi al momento della creazione e della distruzione dei diversi oggetti, inserendo in ogni costruttore e distruttore un messaggio a schemo.
Esercizio A2.2¶
Si modifichi la struttura precedente aggiungendo la funzione calcola_area
in tutta la catena di ereditarieta’.
Si verifichi il comportamento polimorfico introdotto dal dynamic binding.
Si verifichi che, eliminando la parola chiave
virtual
, il dynamic binding non funziona.Si verifichi che il dynamic binding avviene in esecuzione e non in fase di compilazione, implementando una funzione
void stampa_area (forma * input)
che stampa a schermo l’area di un oggetto di tiporettangolo
oquadrato
a seconda della scelta dell’utente.
Esercizio A2.3¶
Si implementino i generatori di numeri casuali scritti durante la Lezione 4 come oggetti derivati della seguente classe puramente virtuale e si verifichi il dynamic binding.
class generatore
{
public :
generatore (int seed = 1.) : m_seed (seed) {}
virtual ~generatore () {}
virtual void set_seed (int num) ;
virtual double generate () ;
int get_seed () const { return m_seed ; }
protected :
int m_seed ;
} ;
Esercizio A2.4¶
Si inseriscano i generatori precedenti in una std::map
e si utilizzi un loop sugli elementi della mappa
per verificare quanto tempo impieghi ciascun generatore,
in media,
a generare un evento pseudo-casuale.