Diploma Universitario di Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 2001/02 - Appello del 19 settembre 2002
Problema 1 Si consideri la seguente specifica del
tipo astratto DVD:
- TipoAstratto DVD
- Sorte DVD (sorta per il dominio di interesse)
- Funzioni
- Crea: (Video, Int) --> DVD
precondizioni e postcondizioni per Crea(v, m) = d
pre: nessuna
post: d è un DVD avente come
contenuto primario il Video v, e con m
miniti a disposizione per eventuali contenuti ausiliari;
- ContenutoPrimario: (DVD) --> Video
precondizioni e postcondizioni per ContenutoPrimario(d) =
v
pre: nessuna
post: v è il video che costituisce
il contenuto primario di d;
- MinutiDisponibili: (DVD) --> Int
precondizione e postcondizioni per
MinutiDisponibili(d) = m
pre: nessuno
post: m è il numero di minuti
ancora disponibili in d;
- AggiornaDVD: (DVD, Video) --> DVD
precondizioni e postcondizioni per
AggiornaDVD(d,v)) = d'
pre: la durata del Videov è minore
di MinutiDisponibili(d)
post: d' è il DVD ottenuto dal DVD
d aggiungendo ai suoi contenuti ausiliari il
Video v e sottraendo ai minuti disponibili la
durata di v;
- ContenutiAusiliari: (DVD) --> Insieme(Video)
precondizioni e postcondizioni per
ContenutiAusiliari(d) = l
pre: nessuna
post: l è l'insieme dei video che
costituiscono i contenuti ausiliari di d;
FineTipoAstratto
Si vuole scrivere una classe C++ DVD che realizzi il tipo
astratto DVD, considerando che per riferirsi al tipo astratto
Video è necessario utilizzare la classe Video
che si suppone già realizzata, ma della quale non si conosce
nulla, eccetto che essa contiene una funzione int durata()
che restituisce la durata del video oggetto di invocazione. Per
rappresentare l'insieme di video richiesto dalle funzione
ContenutiAusiliari su utilizzi un array di riferimenti a
oggetti Video.
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto DVD mediante la classe C++
DVD.
Domanda 2 Si scriva la classe DVD
(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
Durata esterna (non friend) della classe DVD che
dato un DVD d restituisca la somma delle durate del contenuto
primario e dei vari contenuti ausiliari presenti su d.
Problema 3
...