Sei sulla pagina 1di 1

HOMEWORK5

Corso di Programmazione 1 (9CFU) Prof. Valeria Vittorini


Si realizzi in C++ la seguente gerarchia di classi.
La classe Articolo una classe ASTRATTA che prevede le seguenti variabili membro:
char * codice;
float prezzo;
Su un oggetto di tipo articolo possono essere effettuate dallutente le seguenti operazioni:
stampa_Dati() e CalcolaOfferta().
La funzione stampa_Dati applicata ad un oggetto stampa a video tutti i dati relativi alloggetto
stesso. La funzione CalcolaOfferta stabilisce se possibile effettuare uno sconto sul prezzo di un
articolo.
Dalla classe Articolo devono essere derivate in modalit pubblica le classi DVD_FILM e
Videogioco.
La classe DVD_FILM prevede le seguenti funzioni membro:
char * titolo;
int anno; //lanno di uscita del film
La classe ridefinisce le funzioni stampa_Dati() e CalcolaOfferta().
La classe Videogioco prevede le seguenti funzioni membro:
char * nome;
char * TipoStation; //PS3, NintendoDS, Wi_i.
La classe ridefinisce le funzioni stampa_Dati() e CalcolaOfferta().
Si implementino le funzioni membro necessarie ad una corretta gestione dellestensione dinamica
degli oggetti della gerarchia.
La funzione CalcolaOfferta stabilisce se per un dato articolo previsto sconto sul prezzo e in caso
affermativo fornisce il prezzo effettivo dellarticolo (senza modificare il prezzo di partenza definito
nella classe base).
Nel caso di un DVD_FILM la funzione CalcolaOfferta applica uno sconto del 20% sul prezzo base
se lanno di uscita del film precedente al 1990. Nel caso di un Videogioco la funzione offerta
applica uno sconto del 15% sul prezzo base su tutti i videogiochi per la PS3.
Si tenga presente che si vuole un comportamento polimorfo delle funzioni CalcolaOfferta e
stampa_Dati.
Si realizzi quindi una PILA di Articoli rappresentata mediante una lista a puntatori che consenta di
gestire sia DVD_FILM che Videogiochi. Si realizzino sulla pila le classiche funzionalit per la
gestione LIFO degli elementi (push, pop, top ed i predicati empty e full) e una funzione di stampa
che consenta di visualizzare i dati relativi agli articoli presenti nella pila. La funzione pop deve
lanciare una eccezione nel caso si tenti di estrarre da una pila vuota.
Si realizzi un programma di test per le classi implementate che gestisca leccezione eventualmente
lanciata dalla funzione membro pop.
Si strutturi il codice dellintera applicazione (programma principale e classi) secondo le appropriate
tecniche di programmazione modulare (illustrate al corso e nei testi adottati).

Potrebbero piacerti anche