Salve a tutti questo è il mio primo post

avrei bisogno di un aiutino con questo esercizio in java:
* Esercizio 2. Si crei una classe Persona con nome, cognome e indirizzo, ed una sotto classe Autore.
* Un autore ha come attributo la lista dei libri pubblicati.
* Si crei un'interfaccia Pubblicato che contenga i seguenti metodi:
- Autore getAutore()
- String getTitolo()
- String getEditore()
Si progettino due classi Romanzo e Fumetto che implementino l'interfaccia Pubblicato.
Si crei una classe di test con un array contenente 3 romanzi e 2 fumetti, e si stampi il contenuto
dell'array (utilizzando i metodi dell'interfaccia).
Leggendo il testo.. dopo un pò che ho fatto l'esercizio mi viene da dire, perchè mi chiede di usare l'interfaccia più tosto che semplicementi classi astratte? Ok è un esercizio ma nn vedo il senso delle interfacce.
poi ho scritto un pò di codice:
Codice:
[size=85]
public class Persona {
private String nome;
private String cognome;
private String indirizzo;
public Persona (String nome, String cognome, String indirizzo){
this.nome = nome;
this.cognome = cognome;
this.indirizzo = indirizzo;
}
}
public class Autore extends Persona{
private ArrayList<String> libri;
public Autore (String nome, String cognome, String indirizzo, ArrayList<String> libri){
super(nome, cognome, indirizzo);
this.libri = libri;
}
}
[/size]
//poi l'interfaccia:
[size=85]
public interface Pubblicato {
Autore getAutore();
String getTitolo();
String getEditore();
}
public class Romanzo implements Pubblicato {
private Autore autore;
private String titolo;
private String editore;
public Romanzo (Autore autore, String titolo, String editore){
this.autore = autore;
this.titolo = titolo;
this.editore = editore;
}
public Autore getAutore(){
return this.autore;
}
public String getTitolo(){
return this.titolo;
}
public String getEditore(){
return this.editore;
}
}
//HO USATO LO STESSO CODICE PER FUMETTO
[/size]
//Infine classe test e main:
[size=85]
public class Test {
public static void main(String[] args) {
ArrayList<String> libri = new ArrayList<String>();
libri.add("lib1");
libri.add("lib2");
Autore au1= new Autore("gennaro", "gattuso", "Calabrisi", libri);
Autore au2= new Autore("giorgio", "falletti", "milano, via nova", libri);
Autore au3= new Autore("wilburn", "smith", "Calabrisi", libri);
Pubblicato p [] = new Pubblicato [5];
p[0] = new Romanzo(au1, "il calcio", "galiani spa");
p[1] = new Romanzo(au2, "io uccido", "nn saprei ma è spa");
p[2] = new Romanzo(au3, "figli del nilo", "mondadori");
p[3] = new Fumetto(au3, "one piece", "galiani spa");
p[4] = new Fumetto(au1, "il calcio", "galiani spa");
for (int i=0; i<p.length;i++){
System.out.println ("aut: " + p[i].getAutore() + " titolo: " + p[i].getTitolo() + " edit: " + p[i].getEditore());
}
}
}
[/size]
La stampa è:
aut: Appello2.Autore@35d22ddb titolo: il calcio edit: galiani spa
aut: Appello2.Autore@79c0a077 titolo: io uccido edit: nn saprei ma è spa
aut: Appello2.Autore@55672313 titolo: figli del nilo edit: mondadori
aut: Appello2.Autore@55672313 titolo: one piece edit: galiani spa
aut: Appello2.Autore@35d22ddb titolo: il calcio edit: galiani spanaturalmente la stampa dell'autore stampa l'indirizzo in memoria, ma non ho capito dove lo devo implementare un metodo che dato un autore ne stampi il nome (se è questo che chiede l'esercizio)?
Grazie per l'aiuto xD
