Compito esame 14/9/2005

Laboratorio di programmazione,
AA 2004/2005
Quarto appello

Descrizione

Si vogliono realizzare delle classi per rappresentare gli articoli di una enciclopedia on-line. Ogni articolo può essere un articolo vero e proprio (testo intervallato da link ad altri articoli) oppure una redirezione (un articolo che contiene solo un link ad un altro articolo).

Parte I

Si realizzino le classi che rappresentano gli articoli in generale, gli articoli scritti (testo e link) e le redirezioni):

classe Articolo
rappresenta genericamente un articolo; è caratterizzato dal titolo dell'articolo stesso;
classe ArticoloScritto
rappresenta un articolo vero e proprio, che contiene del testo intervallato da link ad altri articoli; si può quindi rappresentare come una lista di stringhe e collegamenti ad altri articoli;
classe Redirezione
rappresenta una redirezione, cioè un articolo che ha soltanto un link ad un altro articolo.

Le classi devono essere incapsulate e avere i seguenti metodi:

Parte II

Realizzare una classe ServiziArticoli che contiene i seguenti due metodi statici (più eventuali metodi ausiliari):

int contaRedirect(Articolo a);
dato un articolo a, conta il numero totale di nodi di tipo Redirezione presenti in a
void stampaArticolo(Articolo a);
stampa l'articolo a nel seguente modo: se a è un Redirezione, stampa l'articolo collegato; se a è un ArticoloScritto, stampa in sequenza i frammenti di testo e i link; per stampare un link, si stampa il titolo dell'articolo collegato seguendo le eventuali redirezioni.

Si assuma che i collegamenti non formino cicli.