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

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

TipoAstratto PlayList

Sorte PL (sorta per il dominio di interesse)

Funzioni

FineTipoAstratto

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