09/06/2005 Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: Conclusioni versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – Università della Basilicata – [email protected] Sintassi e Semantica: Conclusioni >> Sommario Sommario m Riepilogo della Metafora m La Piattaforma Java ðBoxing e Unboxing ðjava.lang ðjavadoc m Errori Frequenti G. Mecca - Programmazione Orientata agli Oggetti 2 1 09/06/2005 Sintassi e Semantica: Conclusioni >> Riassunto della Metafora Riassunto della Metafora m Applicazione a oggetti ðcollezione di componenti >> piccoli robot antropomorfi ðclasse >> componente femmina ðoggetto >> componente maschio ðheap >> città dei robot (zona in cui vivono i componenti) ðpackage >> condominio di componenti (determina indirizzo e visibilità) G. Mecca - Programmazione Orientata agli Oggetti 3 Sintassi e Semantica: Conclusioni >> Riassunto della Metafora Riassunto della Metafora m Compiti dei Componenti ðproprietà >> conoscere informazione ðeseguire metodi >> fornire servizi eseguendo compiti m Comunicazione tra i componenti ðchiamate di metodi o richieste di utilizzo elle proprietà >> richieste di prestare servizi G. Mecca - Programmazione Orientata agli Oggetti 4 2 09/06/2005 Sintassi e Semantica: Conclusioni >> Riassunto della Metafora Riassunto della Metafora m Utilizzo dei componenti ðesecuzione dei costruttori >> la classe “fabbrica” gli oggetti che ne sono istanza ðdescrizione della struttura degli oggetti nel codice (proprietà e metodi) >> istruzioni di montaggio ðriferimento >> telecomando per “pilotare” un oggetto (differenza rispetto alle classi) G. Mecca - Programmazione Orientata agli Oggetti 5 Sintassi e Semantica: Conclusioni >> Riassunto della Metafora Riassunto della Metafora m Utilizzo dei componenti ðper chiedere servizi ad una classe >> è sufficiente “urlarne” il nome ðper chiedere servizi ad un oggetto >> è necessario farlo attraverso un telecomando ðoggetto inutilizzabile >> oggetto per il quale non ci sono più telecomandi disponibili ðgarbage collector >> netturbino degli oggetti inutilizzabili G. Mecca - Programmazione Orientata agli Oggetti 6 3 09/06/2005 Sintassi e Semantica: Conclusioni >> Riassunto della Metafora Riassunto della Metafora m Ruoli e responsabilità ðle classi non possono fare tutto >> fabbricare oggetti “stanca” ðclassi fabbricatrici e classi di servizio ðutilizzo dei metodi statici >> la classe come supervisore dei suoi oggetti ðassociazione tra oggetti >> squadra di lavoro ðmassimizzare la coesione >> società organizzata con compiti specializzati G. Mecca - Programmazione Orientata agli Oggetti 7 Sintassi e Semantica: Conclusioni >> La Piattaforma Java La Piattaforma Java m In queste lezioni ðprincipalmente classi del package java.lang m Il package java.lang ðpackage che contiene tutte le classi considerate indispensabili per la programmazione ðè automaticamente “importato” in tutte le classi scritte dall’utente per economia G. Mecca - Programmazione Orientata agli Oggetti 8 4 09/06/2005 Sintassi e Semantica: Conclusioni >> La Piattaforma Java Il Package java.lang m Le classi principali ðjava.lang.System: include due proprietà statiche pubbliche, System.out e System.in ðjava.lang.String: la classe per la manipolazione di stringhe immutabili ðjava.lang.Math: numerosi metodi statici per lo svolgimento delle principali operazioni matematiche G. Mecca - Programmazione Orientata agli Oggetti 9 Sintassi e Semantica: Conclusioni >> La Piattaforma Java Boxing e Unboxing m Altre classi fondamentali di java.lang ðle classi “wrapper” ðuna per ciascun tipo di dato primitivo ðInteger, Float, Double, Character, Boolean m Due funzioni principali ðeffettuare operazioni sui valori del tipo di base corrispondente ðtrasformare un dato primitivo in un oggetto G. Mecca - Programmazione Orientata agli Oggetti 10 5 09/06/2005 Sintassi e Semantica: Conclusioni >> La Piattaforma Java Boxing e Unboxing m Oggetto di tipo integer ðoggetto che “incapsula” un valore di tipo int m Operazione di “boxing” (inscatolamento) ðtrasforma un valore int in un oggetto Integer ðint x = 10; Integer y = new Integer(x); m Operazione di “unboxing” ðtrasforma un oggetto Integer in un valore int ðInteger y = new Integer(10); int x = y.intValue(); 11 G. Mecca - Programmazione Orientata agli Oggetti Sintassi e Semantica: Conclusioni >> La Piattaforma Java Boxing e Unboxing m Attenzione ATTENZIONE boxing e unboxing automatici J2SE 5.0 ða partire da J2SE 5.0 il boxing e l’unboxing sono diventati automatici m In particolare, è possibile scrivere // in J2SE 5.0 int x = 10; Integer y = x; // boxing automatico Integer z = new Integer(10); int w = z; // unboxing automatico G. Mecca - Programmazione Orientata agli Oggetti // prima di J2SE 5.0 int x = 10; Integer y = new Integer(x); Integer z = new Integer(10); int w = z.intValue(); 12 6 09/06/2005 Sintassi e Semantica: Conclusioni >> La Piattaforma Java Boxing e Unboxing m Un’operazione tipica con Integer ðestrarre un valore intero a partire da una stringa letta dalla tastiera ðil metodo public static int parseInt(String s) di Integer ðanalogamente per Float (parseFloat()) e Double (parseDouble()) ðin Boolean: public static boolean getBoolean(String s) G. Mecca - Programmazione Orientata agli Oggetti 13 Sintassi e Semantica: Conclusioni >> La Piattaforma Java JavaDoc m La forma standard della documentazione ðnome del package, elenco delle classi con breve descrizione e collegamento ðper ogni classe: nome e descrizione ðelenco delle eventuali proprietà pubbliche ðelenco dei metodi pubblici ðaltre informazioni (>>) ðquesto tipo di documentazione è chiamato JavaDoc G. Mecca - Programmazione Orientata agli Oggetti 14 7 09/06/2005 Sintassi e Semantica: Conclusioni >> La Piattaforma Java JavaDoc m JavaDoc ðdue cose diverse ðun formato per la documentazione del codice ðuno strumento per produrre la documentazione m Lo strumento javadoc.exe ðfornito a corredo della piattaforma in %JAVA_HOME%\bin G. Mecca - Programmazione Orientata agli Oggetti 15 Sintassi e Semantica: Conclusioni >> La Piattaforma Java JavaDoc m Utilizzo dello strumento ðeseguito su una classe o su un package, crea la documentazione nel formato javadoc ðtante pagine HTML m Sintassi ðjavadoc –d cartellaDest nomePackage ðjavadoc –d cartellaDest nomeClasse.java G. Mecca - Programmazione Orientata agli Oggetti 16 8 09/06/2005 Sintassi e Semantica: Conclusioni >> La Piattaforma Java JavaDoc m Come >> it.unibas.utilita.Console >> javadoc –d javadoc Console.java vengono specificate le descrizioni ðattraverso commenti particolari immersi nel codice java m Commento javadoc ðinizia con /** e finisce con */ ðè possibile indicare informazioni particolari per la classe, le proprietà e i metodi ðes: @author, @return, @parameter ecc. G. Mecca - Programmazione Orientata agli Oggetti 17 Sintassi e Semantica: Conclusioni >> La Piattaforma Java JavaDoc m Se >> javadoc –d javadoc calcolatrice nel codice non ci sono commenti ðjavadoc genera comunque la documentazione senza descrizioni ðnome delle classi, nome delle proprietà, nomi dei metodi m In generale ðè uno strumento molto utile anche nel caso in cui non si scrivano commenti espliciti G. Mecca - Programmazione Orientata agli Oggetti 18 9 09/06/2005 Sintassi e Semantica: Conclusioni >> Errori Frequenti Errori Frequenti m Gli errori più frequenti in Java ðerrori nell’utilizzo degli strumenti (compilatore e macchina virtuale) >> CLASSPATH ðerrori logici nell’uso degli oggetti m Errori nell’uso degli strumenti ðattenzione a verificare sempre che la struttura dei file su disco sia corretta e che consenta la visibilità di tutte le classi G. Mecca - Programmazione Orientata agli Oggetti 19 Sintassi e Semantica: Conclusioni >> Errori Frequenti Errori Frequenti m Errori logici nell’uso degli oggetti ðNullPointerException: si cerca di eseguire un metodo su un riferimento null >> verificare che il riferimento sia stato inizializzato ðArrayIndexOutOfBoundsException: sconfinamento nell’utilizzo di un array >> verificare l’uso degli indici G. Mecca - Programmazione Orientata agli Oggetti 20 10 09/06/2005 Sintassi e Semantica: Conclusioni >> Errori Frequenti Errori Frequenti m Un errore sintattico frequente ð“Variable might not have been initialized”: mancata inizializzazione di una variabile: viola la regola di inizializzazione obbligatoria >> inizializzare alla dichiarazione G. Mecca - Programmazione Orientata agli Oggetti 21 Sintassi e Semantica: Conclusioni >> Sommario Riassumendo m Riepilogo della Metafora m La Piattaforma Java ðBoxing e Unboxing ðjava.lang ðjavadoc m Errori Frequenti G. Mecca - Programmazione Orientata agli Oggetti 22 11 09/06/2005 Termini della Licenza Termini della Licenza m This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - Programmazione Orientata agli Oggetti 23 12