Diploma Universitario di Ingegneria Informatica
Esame di Fondamenti di Informatica II - primo modulo
A.A. 2000/01 - Appello del 7 settembre 2001

Problema 1   Si consideri la seguente specifica del tipo astratto Gruppo:

TipoAstratto Gruppo

Sorte GR (sorta per il dominio di interesse)

Funzioni

FineTipoAstratto

Si vuole scrivere una classe C++ Gruppo che realizzi il tipo astratto Gruppo, considerando che per riferirsi al tipo astratto Componente è necessario utilizzare la classe Componente che si suppone già realizzata, della quale però non è nota la definizione.

Domanda 1   Si illustrino le scelte di progetto relative alla realizzazione del tipo astratto Gruppo mediante la classe C++ Gruppo.

Domanda 2   Si scriva la classe Gruppo (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 Gruppo che dato un oggetto g di tipo Gruppo ed una lista l di record aventi la forma seguente:

struct Rec {
  Componente* info;
  Rec* next;
};
verifichi che tutte i componenti nella lista l facciano parte di g.

Problema 3   Discutere brevemente i vantaggi e gli svantaggi degli schemi realizzativi funzionale con condivisione e side-effect senza condivisione.