Problema 1 Si consideri la seguente specifica del tipo astratto Buffer:
Si vuole scrivere una classe C++ Buffer
che realizzi il tipo
astratto Buffer, considerando che per riferirsi al tipo astratto
Dato è necessario utilizzare la classe Dato
che si
suppone già realizzata, e che mette a diposizione il costruttore di
copia, l'assegnazione, il distruttore, e un metodo dimensione()
che restituisce la dimensione in byte del dato rappresentato dall'oggetto di
invocazione (il resto della definizione della classe non interessa).
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto Buffer mediante la classe C++
Buffer
.
Domanda 2 Si scriva la classe Buffer
(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 Accoda
esterna (non friend) della classe Buffer
che dati due oggetti
b1 e b2 di tipo Buffer
, inserisca tutti gli elementi
di b2 in b1 se questi complessivamente non superano la
capacità residua di b1, e non faccia niente altrimenti.
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.