Problema 1 Si consideri la seguente specifica del tipo astratto PlayList:
Si vuole scrivere una classe C++ PlayList
che realizzi il tipo
astratto PlayList, considerando che per riferirsi al tipo astratto
MP3 è necessario utilizzare la classe MP3
che si
suppone già realizzata, della quale però non è nota la
definizione, eccetto che per la funzione autore
, che dato un
oggetto m di tipo MP3
va invocata con la sintassi
m.autore()
e restituisce un oggetto di tipo
Autore
. Inoltre si assuma che URL
ed
Autore
siano rappresentati da oggetti di una classe
Stringa
per la quale sono disponibili, assegnazione, construttore
di copia ed uguaglianza.
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto PlayList mediante la classe C++
PlayList
.
Domanda 2 Si scriva la classe PlayList
(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 PlayList
che dato un oggetto p di tipo
PlayList
, e due oggetti u e a di tipo
Stringa
che rappresentano rispettivamente una url ed un autore,
restituisca un nuovo oggetto playlist avente come url u e contenente (in
un qualsiasi ordine) i file MP3 presenti in p aventi come autore
a.
Problema 3 Discutere brevemente la nozione di uguaglianza negli oggetti astrazione di valore semplice, astrazione di valore collezione e astrazione di entità.