Problema 1 Si consideri la seguente specifica del tipo astratto VideoTape:
Si vuole scrivere una classe C++ VideoTape
che realizzi il tipo
astratto VideoTape, considerando che per riferirsi al tipo astratto
SequenzaVideo è necessario utilizzare la classe SequenzaVideo
che si
suppone già realizzata, della quale però non è nota la
definizione, eccetto che per la funzione durata
, che dato un
oggetto s di tipo SequenzaVideo
va invocata con la sintassi
s.durata()
e restituisce un double
che rappresenta la
durata del brano in minuti.
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto VideoTape mediante la classe C++
VideoTape
.
Domanda 2 Si scriva la classe VideoTape
(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 VideoTape
che, dato un oggetto v di tipo
VideoTape
,
restituisca un nuovo oggetto VideoTape
contenete le stesse sequenze video di
v ma in ordine inverso.
Problema 3 Spiegare brevemente il significato delle nozioni di coesione, information hiding, accoppiamento, e interfacciamento esplicito, e descrivere i criteri fondamentali che legano tali nozioni con la qualità della modularizzazione.