Diploma Universitario di Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 1999/2000 - Appello del 18 luglio 2000
Problema 1 Ci si riferisca ad una schema concettuale in cui
sono definiti tre moduli per tipo astratto: Appartamento, Stanza,
Colore. Da Appartamento a Stanza è definita una
relazione has-many (contiene), e da Stanza a Colore
è definita una relazione has-a (è colorata).
La specifica del modulo Appartamento è:
- TipoAstratto Appartamento
- Sorte App (sorta per il dominio di interesse)
- Funzioni
- Crea : () --> App
precondizioni e postcondizioni per crea() = a
pre: nessuna
post: a è un appartamento senza stanze
- NumeroStanze : (App) --> Intero
precondizione e postocondizioni per NumeroStanze(a) = n
pre: nessuna
post: n è il numero delle stanze di a
- AggiungiStanza : (App,Stanza) --> (App,Intero)
precondizione e postocondizioni per AggiungiStanza(a,s) = (b,n)
pre: nessuna
post: b è l'appartamento ottenuto da a
aggiungendo la stanza s come (NumeroStanze(a)+1)-esima, ed
n=NumeroStanze(a)+1;
se a già contiene s allora b=a
ed n=NumeroStanze(a)
- QualeStanza : (App,Intero) --> Stanza
precondizioni e postcondizioni per QualeStanza(a,i) = s
pre: 1 <= i <= NumeroStanze(a)
post: s è la i-esima stanza
dell'appartamento a
- FineTipoAstratto
Si vuole progettare una classe C++ Appartamento che realizzi il tipo
astratto Appartamento, tenendo conto che i moduli Stanza e
Colore sono già stati realizzati mediante le classi C++. In
particolare il modulo Stanza è realizzato come segue:
class Stanza
{public:
void FissaColore(Colore);
Colore QualeColore();
//...
private:
Stanza(const Stanza&);
Stanza& operator=(const Stanza&);
//...
};
Mente il modulo Colore è stato realizzato con una classe C++ Colore equipaggiata con opportuni costruttori, costruttore di copia e assegnazione.
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto Appartamento mediante la classe C++
Appartamento.
Domanda 2 Si scriva la classe Appartamento (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 Appartamento che dato un appartamento a ed un colore
c fissi il colore di tutte le stanze dell'appartamento a c.
Problema 3 Spiegare i vantaggi e gli svantaggi degli
schemi raelizzativi: funzionale con condivisione e funzionale senza
condivisione.