Problema 1 Si consideri la seguente specifica del tipo astratto Gruppo:
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.