Salve sono nuovo del forum!
Sono uno studente alle prime armi e sto studiando Java, avrei un piccolo esercizio da proporvi che mi sta dando un pò di grattacapi.
Esercizio:
Definire una classe generica per gestire alberi con nodi etichettati. I nodi etichettati sono semplicemente oggetti di tipo qualsiasi che però implementano la seguente interfaccia:
public interface Labeled {
void setLabel(String lab); // imposta l'etichetta di questo oggetto a lab
String getLabel(); // ritorna l'etchetta di questo oggetto
}
La classe deve implementare i seguenti costruttori e metodi:
* un costruttore che un costruttore che prende in input un oggetto di tipo T che diventa il nodo radice dell'albero;
* un metodo che ritorna true se un dato oggetto è un nodo dell'albero;
* un metodo che ritorna il padre di un oggetto dato, se l'oggetto non è un nodo dell'albero lancia l'eccezione IllegalArgumentException;
* un metodo che prende in input un nodo p e un oggetto x, entrambi di tipo T, e se p appartiene all'albero e x non vi appartiene e se inoltre l'etichetta di x è diversa dalle etichette di tutti i figli di p, allora aggiunge il nodo x all'albero come figlio di p e ritorna true, altrimenti ritorna false;
* un metodo che prende in input una stringa e ritorna un insieme (creato ex novo) che contiene tutti i nodi dell'albero che hanno l'etichetta uguale alla stringa di input;
* un metodo che preso in input un oggetto x di tipo T ritorna in un lista (creata ex novo) le etichette del cammino dalla radice a x, se x non appartiene all'albero ritorna null.
la parte del costruttore e dei metodi penso di saperla abbastanza fare. Ora non capisco bene la parte in cui parla dell'interfaccia. Non capisco bene se la mia classe generica per utilizzare i metodi dell'interfaccia debba essere del tipo:
public class TreeLabeled<T> implements Labeled{
private Map<T,T> treeLab = new HashMap<T,T>();
.....
}
Oppure io quando nella classe dichiaro il mio albero etichettato (uso le mappe), debba dichiarare ad esempio:
Map<Labeled,T> treelab = new HashMap<Labeled,T>();
Insomma non capisco bene come dichiare oggetti di tipo qualsiasi che implementano l'interfaccia Labeled.
Spero che qualcuno abbia capito i miei vaneggiamenti vari.... :berto:
Grazie per l'eventuale risposta.

Rispondi quotando