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

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.