Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: Mari_C on 03-10-2011, 10:45:15



Title: uso di più strutture dati;
Post by: Mari_C on 03-10-2011, 10:45:15
Ho un problema con i tipi generici , nello specifico  quando creo una classe (esempio albero binario di ricerca)con il suo nodo e devo implementare un altra classe Stack<E> con il suo nodo(Nodo<E>) mi da errore di duplicate class: Nodo
Come lo risolvo? Quante classi nodo devo mettere? una per l'albero e una per lo Stack oppure una sola classe nodo che contenga tutte le informazioni??
Grazie
Code:

//NODO ALBERO
class Nodo<E>{
private E element;
private Nodo<E> parent,figliosx,figliodx;
public Nodo(E element, Nodo<E> parent , Nodo<E> figliosx, Nodo<E> figliodx){
....
}
+ get e set;
}

// CLASSE ALBERO
class AlberoBinario<E>{
...
}

//NODO STACK
class Nodo<E>{
  private E element;
  private Nodo<E> next;
  public Nodo(E element,Nodo<E> next){
...
}
}
//CLASSE STACK
class Stack<E>{
...
}



Title: Re:uso di più strutture dati;
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 03-10-2011, 10:53:03
Se vuoi necessariamente usare lo stesso nome base (Nodo) per tutte e due le classi, ci sono vari modi per farli funzionare:

- usare un package diverso: è come se ogni classe fosse in una (sotto)cartella diversa (ed in realtà, dovrà essere così in effetti), e potrà essere referenziata con il suo (class)path preciso;

- annidare la classe Nodo dentro un'altra classe, ad esempio Stack, (aumentando di un livello il suo path, come se la classe dentro cui sta Nodo fosse il suo package; forse sarebbe meglio chiamarli "namespace" ma questo concetto in Java non esiste e si può inquadrare in un certo modo dentro i packages;
Ciao ciao .ciaociao.


Title: Re:uso di più strutture dati;
Post by: Mari_C on 03-10-2011, 11:03:40
Quando ad esempio, all'interno della classe alberobinario ho un istruzione del tipo:
Code:
s.push(y.getFiglioSinistro());
  ed
- s.push prende il nodo dello stack,
- y.getFiglioSinistro() usa il nodo dell'albero
mi da errore in compilazione  "  push(Nodos) in Stack cannot be applied to (Nodo<E>) ",
avendo chiamato Nodos<E> il nodo dello Stack e Nodo<E> il nodo dell'albero.


Title: Re:uso di più strutture dati;
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 03-10-2011, 11:55:59
Quando ad esempio, all'interno della classe alberobinario ho un istruzione del tipo:
Code:
s.push(y.getFiglioSinistro());
  ed
- s.push prende il nodo dello stack,
- y.getFiglioSinistro() usa il nodo dell'albero
mi da errore in compilazione  "  push(Nodos) in Stack cannot be applied to (Nodo<E>) ",
avendo chiamato Nodos<E> il nodo dello Stack e Nodo<E> il nodo dell'albero.

Queste informazioni non sono sufficienti a me per capire dove sta il tuo problema di preciso (ci sono varie ipotesi). Posta tutto il codice (magari in un file .zip o .rar o .tar.bz2 o .tar.gzip linkato su galileo (http://galileo.dmi.unict.it/)) e lo potrò vedere nel suo complesso.