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à.