40. Scheda di lavoro (Java: ArrayList) 29/04/2016
Transcript
40. Scheda di lavoro (Java: ArrayList) 29/04/2016
ITI “G.M.Angioy” Sassari – QUARTA INFORMATICA A.S. 2015-16 40. Scheda di lavoro (Java: ArrayList) 29/04/2016 Esempio di utilizzo di ArrayList di oggetti , in particolare di Animali e di Gatti (che derivano da Animale) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 package liste; import java.util.List; import java.util.ArrayList; public class Liste { public static void main(String[] args) { // TODO code application logic here List Elenco = new ArrayList(); Animale a = new Animale("animale1"); Elenco.add( a ); Elenco.add( new Animale("animale2") ); System.out.println("Elenco è un ArrayList, gli elementi sono Animali"); System.out.println("Elenco.toString()-->"+Elenco.toString() ); System.out.println("\nElenco è un ArrayList, uso metodo toString classe Animale"); for (int i=0; i<Elenco.size();i++) { System.out.println("Elenco.get(i)-->" + Elenco.get(i) ); } // Animale x=Elenco.get(0); incompatible types: Object cannot be converted to Animale System.out.println("\nAnimale x=Elenco.get(0); NO: incompatible types: Object cannot be converted to Animale"); Animale x= (Animale)Elenco.get(0); //ok get restituisce un oggetto, poi il casting System.out.println("\nAnimale x= (Animale)Elenco.get(0); //ok: get restituisce un oggetto, poi il casting"); System.out.println("x.presentazione()--> "+x.presentazione() ); System.out.println("x.toString()--> "+ x.toString() ); System.out.println("((Animale)Elenco.get(0)).presentazione()--> " + ((Animale)Elenco.get(0)).presentazione() ); //come sopra, con codice più ristretto System.out.println("\n\nAGGIUNGO UN GATTO ALL'ELENCO DEGLI ANIMALI"); Elenco.add( new Gatto("gatto1") ); System.out.println("Elenco.toString()-->"+Elenco.toString() ); System.out.println("\nElenco è un ArrayList, gli elementi sono Animali +1 gatto, uso metodo toString classe Animale + gatto"); for (int i=0; i<Elenco.size();i++) { System.out.println("Elenco.get(i)-->" + Elenco.get(i)); } Animale y = (Animale)Elenco.get(2); //ok get restituisce un oggetto, poi il casting System.out.println("\nAnimale y= (Animale) Elenco.get(2); //ok get restituisce un oggetto, poi il casting"); System.out.println("y.presentazione()--> "+ y. presentazione( ) + " ---polimorfismo: l'animale sa di essere un gatto!---"); System.out.println("y.toString()--> "+y.toString( ) ); System.out.println("((Animale)Elenco.get(2)).presentazione()--> " + ( (Animale) Elenco.get(2 ) ).presentazione( ) //come sopra, con codice più ristretto } } package liste; public class Animale { protected String nome; public Animale() { } public Animale(String nome) { this.nome=nome; } public String toString() { return nome ; } public String presentazione() { return "sono "+ nome ; } } package liste; public class Gatto extends Animale { public Gatto(String nome) { this.nome=nome; } public String presentazione() { return "sono il gatto "+ nome ; } } [email protected] Questo lavoro è concesso in uso secondo i termini di una Licenza Creative Commons. 69 ITI “G.M.Angioy” Sassari – QUARTA INFORMATICA A.S. 2015-16 Di seguito è mostrato l’output del codice mostrato nella pagina precedente, verifica di comprendere tutto! Viene ancora mostrato l’output: qui per guidare la lettura a fianco a ciascuna riga di output è indicato il numero della riga di codice da cui deriva. 11 12 Elenco è un ArrayList, gli elementi sono Animali Elenco.toString()-->[animale1, animale2] 13 14-16 14-16 Elenco è un ArrayList, uso metodo toString classe Animale Elenco.get(i)-->animale1 Elenco.get(i)-->animale2 18-19 Animale x=Elenco.get(0); NO: incompatible types: Object cannot be converted to Animale 21-22 23 24 26 Animale x= (Animale)Elenco.get(0); //ok: get restituisce un oggetto, poi il casting x.presentazione()--> sono animale1 x.toString()--> animale1 ((Animale)Elenco.get(0)).presentazione()--> sono animale1 29-30 31 AGGIUNGO UN GATTO ALL'ELENCO DEGLI ANIMALI Elenco.toString()-->[animale1, animale2, gatto1] 33 34-36 34-36 34-36 Elenco è un ArrayList, gli elementi sono Animali + 1 Gatto, uso metodo toString classe Animale + Gatto Elenco.get(i)-->animale1 Elenco.get(i)-->animale2 Elenco.get(i)-->gatto1 38-39 40 41 43 Animale y = (Animale)Elenco.get(2); //ok get restituisce un oggetto, poi il casting y.presentazione()--> sono il gatto gatto1 ---polimorfismo: l'animale sa di essere un gatto!--y.toString()--> gatto1 ( (Animale) Elenco.get(2 ) ).presentazione( )--> sono il gatto gatto1 [email protected] Questo lavoro è concesso in uso secondo i termini di una Licenza Creative Commons. 70