Problema 1 Si consideri la seguente specifica del tipo astratto CDRec:
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.