Newsgroup: it.comp.java
Titolo: [aiuto] Interfacce e Set

Ciao a tutti,
sto provando da pochissimo a programmare in java, e forse la mia domanda č
banale. Non riesco a capire la differenza sulla documentazione tra classi e
interfacce. Le classi posso utilizzarle importandole, cosa posso fare con le
interfacce?
Inoltre diversi metodi restituiscono un Set di valori, che se vado a
stampare a video č una lista... e' il caso ad es. di una Hashtable che con
il metodo keySet() fa quanto detto. Pensavo che se volessi fare una ricerca
tra quei valori potessi usare una lista temporanea per scorrere il Set
restituito, ma non capisco come si gestisce il Set. Se ad es. creo una lista
e le attribuisco il valore del keySet() mi da errore... come fare?
Grazie!

 con le interfacce?
Le interfacce si puo' dire che sono delle classi completamente astratte.
Serve per implementare il polimorfismo.
Un interfaccia ha solo metodi astratti ovvero senza implementazione.
Tu puoi creare una classe implementando un interfaccia e ridefinendo i suoi
metodi.
In questo modo, se crei due classi (ClassA, ClassB) che implementano in modo
diverso la tua interfaccia, puoi assegnare ad un istanza della prima classe
(ClassA), un'istanza della seconda classe (ClassB) in questo modo.
        ClassA a = new ClassB()
Se ho detto qualche eresia, bastonatemi pure!
--
Davide

 e le attribuisco il valore del keySet() mi da errore... come fare?
Devi pensare che un Set e' "qualcosa in meno" di una lista, ovvero e' 
una collezione di oggetti senza ordine predefinito e senza ripetizioni. 
Quindi, a parte il fatto che il tipo Set ed il tipo List sono diversi, 
e' facile capire perche' non puoi assegnare le une alle altre - tutt'al 
piu', puoi scriverti dei metodi che convertano (come e quando 
riescono...) le une nelle altre.
Cmq, guardati le API di java per la classe Set: 
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html
 - qui 
troverai tutti i metodi che ti servono per manipolarli. Ad es., per 
scorrere i contenuti di un Set, guarda il metodo iterator().
In ogni caso, noto che ti mancano concetti molto basilari di Java 
(interfacce e contenitori) - cerca un tutorial che li tratti e 
studiateli per bene, sono concetti tutto sommato complessi e molto 
potenti, una volta compresi a fondo.
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 potenti, una volta compresi a fondo.
Se sai l'inglese
www.bruceeckel.com
thinking in java e' ottimo, sembra di tornare a scuola, ha anche gli
esercizi!
Altrimenti vai su 
www.manuali.it
 e scarichi Java mattone dopo mattone.
Non e' semplice come l'altro.

 interfacce?
[CUT]
Le interfaccie ti servono per unire uno stile di comportamento a piu' 
classi.
L'interfaccia contiene esclusivamente le definizioni dei metodi, senza 
implementazine.
Faccio un esempio:
Supponi di avere due Classi: Classe1 e Classe2 che implementano la 
stessa interfaccia Interfaccia.
L'interfaccia Interfaccia contiene la dichiarazione di un solo metodo:
public void reset();
Questo significa che sia Classe1 che Classe2 devono avere lo stesso 
metodo (questa volta implementato).
Supponi adesso di avere una classe MainClass che utilizza Classe1 e 
Classe2 e deve utilizzare il metodo reset() delle due classi.
Senza l'interfaccia tra Classe1 e Classe2 avresti:
Classe1 c1 = new Classe1();
Classe2 c2 = new Classe2();
c1.reset();
c2.reset();
Con l'interfaccia:
Interfaccia[] interf = new Interfaccia[] {new Classe1(),new Classe2()};
for(int i=0;i<interf.length;i++)
	interf.reset();
Noti qualche differenza? No? Fai lo stesso esempio con 1000 classi... 
Adesso vedi la differenza?
Questo e' soltanto uno dei vantaggi nell'utilizzo delle interfacce, e 
forse neanche il piu' importante...
Tramite delle interfacce tu riesci a trattare alle stesso modo classi 
totalmente diverse, affinando il codice e rendendolo piu' compatto e 
leggibile.
-- 
Marco "Duff" Palermo
http://www.marcoduff.com/

 interfacce?
http://xoomer.virgilio.it/csadun/javafaq.html#d1-16