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

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.