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:
- costruttori
- metodi che permettono di trovare i dati memorizzati nei
vari oggetti
- metodo toString che ritorna la stringa come
descritta nella tabella di sopra
- metodo equals che effettua il confronto
profondo
- corrispondente metodo hashCode
- metodo clone che effettua una clonazione
profonda
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.