Diploma Universitario di Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 2000/01 - Appello del 19 luglio 2001

Problema 1   Si consideri la seguente specifica del tipo astratto CDRec:

TipoAstrattoCDRec

Sorte CDR (sorta per il dominio di interesse)

Funzioni

FineTipoAstratto

Si vuole scrivere una classe C++ CDRec che realizzi il tipo astratto CDRec, considerando che per riferirsi al tipo astratto Brano è necessario utilizzare la classe Brano che si suppone già realizzata, della quale però non è nota la definizione, eccetto che per la funzione durata, che dato un oggetto b di tipo Brano va invocata con la sintassi b.durata() e restituisce un double che rappresenta la durata del brano in minuti. Inoltre è noto che la classe Brano dispone di assegnazione, construttore di copia ed uguaglianza.

Domanda 1   Si illustrino le scelte di progetto relative alla realizzazione del tipo astratto CDRec mediante la classe C++ CDRec.

Domanda 2   Si scriva la classe CDRec (file .h e file .cpp) secondo le scelte di progetto illustrate per la Domanda 1. Scrivere il codice di tutte le funzioni pubbliche e private della classe.

Problema 2   Realizzare una funzione esterna (non friend) della classe CDRrec che, dato un oggetto c di tipo CDRec ed un valore m di tipo double, restituisca un nuovo oggetto CDRec contenete i primi k brani di c, tali che la durata complessiva di detti brani sia minore di m, ma aggiungendo ad essi il brano (k+1)-esimo di c la durata complessiva superi m.

Problema 3   Discutere brevemente la nozione di interferenza e di sharing.