Diploma Universitario di Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 1999/2000 - Appello del 19 dicembre 2000
Problema 1 Si consideri la seguente specifica del
tipo astratto Officina:
- TipoAstratto Officina
- Sorte Off (sorta per il dominio di interesse)
- Funzioni
- Crea : (PartitaIva) --> Off
precondizioni e postcondizioni per crea(p) = o
pre: nessuna
post: o è
un'officina avente p come partita iva
e con nessun autoveicolo
- PartitaIva : (Off) --> PartitaIva
precondizione e postcondizioni per PartitaIva(o) = p
pre: nessuna
post: p è la partita iva dell'officina
o
- Arriva : (Off, Auto) --> Off
precondizione e postcondizioni per
Arriva(o,a) = oo
pre: nessuna
post: oo è l'officina ottenuta da
o aggiungendo l'auto a e attribuendo a tale
auto lo status di "inRiparazione"
- Parte : (Off, Auto) --> Off
precondizioni e postcondizioni per Parte(o,a) = oo
pre: a è
presente nell'officina o con status "pronta"
post: oo è l'officina ottenuta da
o eliminando l'auto a
- InRiparazione : (Off, Auto) --> Boolean
precondizione e postcondizioni per
InRiparazione(o,a) = b
pre: nessuna
post: b = true se
a è presente nell'officina o ed
ha lo status "inRiparazione"; b=false altrimenti
- Pronta : (Off, Auto) --> Boolean
precondizione e postcondizioni per
Pronta(o,a) = b
pre: nessuna
post: b = true se
a è presente nell'officina o ed
ha lo status "pronta"; b=false altrimenti
- Approntata(Off, Auto) --> Off
precondizioni e postcondizioni per
Approntata(o,a) = oo
pre: a è
presente nell'officina o con status "inRiparazione"
post: oo è l'officina ottenuta da
o cambiando lo status dell'auto a in "pronta"
- FineTipoAstratto
Si vuole scrivere una classe C++ Officina che realizzi il tipo
astratto Officina, considerando che per riferirsi al tipo astratto
Auto è necessario utilizzare la classe Auto
che si suppone già realizzata, della quale però non è
nota la definizione. Inoltre si assuma che la partita iva sia rappresentata da
una stringa.
Domanda 1 Si illustrino le scelte di progetto relative
alla realizzazione del tipo astratto Officina mediante la classe C++
Officina.
Domanda 2 Si scriva la classe Officina (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 Officina che dato un'officina o ed una lista
l di record aventi la forma seguente:
struct Rec {
Auto* auto;
int status;
Rec* next;
};
dove i valori del campo status non sono significativi,
aggiorni il campo status dei record in l ponendolo a 0
se l'auto denotata dal campo auto è ha lo status
"inRiparazione" in o, a 1 se l'auto ha status "pronta" e a
-1 se l'auto non e' presente in o.
Problema 3 Illustrare il significato delle nozioni di
coesione, information hiding, accoppiamento, e interfacciamento esplicito, e
descrivere i criteri fondamentali che legano tali nozioni con la qualita' della
modularizzazione.