Diploma Universitario di Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 1999/2000 - Appello del 12 aprile 2000
Problema 1 Si consideri un guardaroba di un teatro, quando
uno spettatore deposita un oggetto (ad esempio un cappotto, una borsa)
all'oggetto viene associato un token identificativo (un intero maggiore di 0
che identifica all'interno del deposito l'oggetto in modo univoco). La
specifica del tipo astratto è la seguente Guardaroba:
- TipoAstratto
Guardaroba
Sorte GR (sorta per il dominio di interesse)
Funzioni
- Crea
: () --> GR
precondizioni e postcondizioni per Crea() = d
pre: nessuna
post: d è un guardaroba con 0 oggetti e con token corrente pari a 1.
- TokenCorrente
() --> Token
precondizione e postocondizioni per TokenCorrente() = t
pre: nessuna
post: t è il token corrente.
- AggiungiOggetto
: (GR,Oggetto) --> (GR, Token)
precondizioni e postcondizioni per AggiungiOggetto(g,o) = (e,t)
pre: nessuna
post: e è il guardaroba ottenuto da g aggiungendo l'oggetto o; all'oggetto o viene associato il token t pari a token corrente; il token corrente viene incrementato di una unità.
- EstInGuardaroba
: (GR, Token) --> Boolean
precondizioni e postcondizioni per EstInGuardaroba(g,t) = b
pre: nessuna
post: b=true se l'oggetto associato a t è nel guardaroba g, b=false altrimenti.
- RestituisciOggetto
: (GR, Token) --> (GR,Oggetto)
precondizioni e postcondizioni per RestituisciOggetto(g,t) = (e,a)
pre: l'oggetto al quale è associato il token t è nel guardaroba g
post: e è il guardaroba ottenuto da g eliminando l'oggetto o e a è l'oggetto al quale è associato il token t.
FineTipoAstratto
Si vuole progettare una classe C++ Guardaroba
che realizzi il tipo astratto Guardaroba. Si assuma che siano state
definita una classe Oggetto
che realizza il tipo astratto
Oggetto della quale non sono note le funzioni pubbliche e
private. Inoltre si rappresenti il tipo astratto Token come un intero
non negativo.
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto Guardaroba mediante la classe C++
Guardaroba
.
Domanda 2 Si scriva la classe Guardaroba
(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
Guardaroba
che dato un guardaroba restituisca il numero di
oggetti in esso presenti.
Problema 3 Spiegare le caratteristiche principali delle classi C++
che realizzano tipi astratti astrazione d'entità, e illustrare come si
rappresenta la relazione HAS-MANY.