AA 2014/15 INTRODUZIONE A JAVA AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Linguaggio Java • Robusto – Non permeAe costruC “pericolosi” • Eredità Mul8pla • Ges8one della Memoria • Orientato agli oggeC – Ogni cosa ha un 8po – Ogni 8po è un oggeAo (quasi) • Protegge e ges8sce dagli errori – Verifica gli errori run8me – Ges8sce esplicitamente gli errori AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 1 AA 2014/15 Cara/eris2che Java -­‐ cont. • Portabile – Astrae l'accesso alle risorse del SO • File, network, etc. – Astrae i 8pi di dato • int, float, double – Ricco di librerie standard • Debug/Linking dinamico – Debug del bytecode – Il bytecode con8ene le informazioni per il linking a run8me AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Java Development Kit • bin: con8ene i file eseguibili – javac: compilatore – java: avvia la JVM ed esegue i programmi – jdb: esecuzione in modalità debug – javadoc: genera la documentazione – … • demo: esempi (anche complica8) per mostrare le potenzialità di Java • include e lib: codice binario usato da JDK • jre: la Java Virtual Machine • docs: documentazione delle librerie java AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 2 AA 2014/15 Java Virtual Machine • È un programma installato nel vostro PC • Crea l’ambiente esecu8vo per i programmi – Li intefaccia con la macchina • Avviata con “java” • Non è legata al linguaggio Java – Esegue bytecode • Il bytecode può essere generato in diversi modi – Il principale e javac AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili JVM e bytecode • Il programma compilato è “teoricamente” portabile – Non dipende dal SO – Mi serve solo la JVM • JVM astrae i SO • La JVM non è portabile – SO diversi hanno JVM diverse • TuAe le JVM dovrebbero avere le stesse caraAeris8che – Spesso non è vero – Ecco il perché del “teoricamente” AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 3 AA 2014/15 Linguaggio ed esecuzione • Java – Linguaggio (è uno solo) • Diverse piaAaforme – J2SE (Standard Edi8on) • Applicazioni desktop – J2EE (Enterprise Edi8on) • Applicazioni server oriented – J2ME (Mobile Edi8on) • Applicazioni Mobile – … AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 4 AA 2014/15 Per le esercitazioni Installare nel proprio pc i seguen8 sofware: • Java Plagorm, Standard Edi8on – Java JDK • Eclipse IDE for Java Developers – Ambiente integrato di sviluppo • Editor txt – Sublime Text – notepad++ – Fraise – ... AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Scaricare la JDK AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 5 AA 2014/15 Scegliere la versione AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Scaricare Eclipse AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 6 AA 2014/15 Il processo di sviluppo 1. ScriAura di un file txt salvato con estensione .java 2. javac esegue la compilazione in bytecode – non è codice na8vo – è il linguaggio macchina della JVM 3. java esegue la JVM che esegue il bytecode AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Portabilità • Lo stesso bytecode può essere eseguito su più piaAaforme • La JVM isola il programma dall'hardware specifico AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 7 AA 2014/15 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Hello world • Riga1: dichiarazione della classe • Righe 2-­‐7: parentesi graffe che contengono la classe • Riga 3: dichiarazione del metodo main • Riga 5: stampa la stringa “Hello World!” usando una libreria Java Esercizio 1 digitarlo in notepad e salvarlo come HelloWorld.java compilarlo con javac e eseguirlo con java Esercizio 2 Eseguirlo con Eclipse (vedi Tutorial) AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 8 AA 2014/15 COMPONENTI FONDAMENTALI DI UN PROGRAMMA JAVA AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Capitolo 2 1. Classe 2. OggeAo 3. Membro • • AAributo Metodo 4. CostruAore 5. Package AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 9 AA 2014/15 Classi ed OggeK • Una classe è una astrazione indicante un insieme di oggeC che condividono le stesse funzionalità • Un oggeAo è una istanza (fisica) di una classe AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili La classe Punto • Astrazione del punto cartesiano bidimensionale • Possiamo compilarlo – javac Punto.java • Non possiamo eseguirlo – java Punto • Abbiamo definito il “template” ma non l'oggeAo – La sua realizzazione fisica nel PC AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 10 AA 2014/15 Gli oggeK Punto La main per poter eseguire il codice Creo un oggeAo Creo un altro oggeAo AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Graficamente ... AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 11 AA 2014/15 Osservazioni • Classe Punto – Definisce la struAura da8 – La usiamo in compilazione – Sono gli oggeC che hanno un ruolo aCvo • A rigore – Le classi non dovrebbero possedere membri • Nota: sono gli oggeC che possiedono x e y – InfaC per accedere alla locazione di memoria • nomeOggeAo.nomeVariabile • La variabile appar8ene a punto1 e non a Punto AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Osservazioni • Prima Eccezione: La classe Principale – Esegue del codice nella classe – Non su un oggeAo creato dalla classe • Per storia: – Java non usa programmi “chiaman8” come il C++ – Java avvia i programmi un metodo “sta8co” della classe: la main – Va sempre dichiarata così: AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 12 AA 2014/15 Astrarre la realtà AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili UML AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 13 AA 2014/15 Dichiarare Metodi • Modificatori – cambiano le caraAeris8che del metodo – Esempi: public, sta8c • Tipo di ritorno – Il 8po di dato che il metodo res8tuisce – Può essere un 8po primi8vo (int) od un oggeAo (String) o nulla (void) • Nome del metodo • Parametri – Dichiarazione di variabili che possono essere passate al metodo – Possono non esserci – Se più di uno vanno separa8 dalla virgola • Corpo del metodo – Le istruzioni da eseguire AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Esempio AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 14 AA 2014/15 Accesso a Metodi e Variabili • Metodi: – nomeOggeAo.nomeMetodo() – Nota: l’oggeAo1 va creato con un new • Variabile – nomeOggeAo.nomevariabile AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Esempio AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 15 AA 2014/15 Dichiarare Variabili • Modificatori: – cambiano le caraAeris8che della variabile • Tipo di dato – Il 8po di dato della variabile • Nome della Variabile • Inizializzazione – Il valore a cui viene impostata la memoria di default AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Variabili • Variabili d’istanza – Dichiarate nella classe ma fuori da un metodo – Fanno parte dell’oggeAo • Vengono allocate con il new dell’oggeAo • Vengono de-­‐allocate quando l’oggeAo non esiste più • Variabili locali – Sono dichiarate all’interno dei metodi – Vengono allocate quando si esegue il metodo AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 16 AA 2014/15 Parametri o Argomen2 • Compaiono nella dichiarazione dei metodi • Sono crea8 quando chiamiamo il metodo AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili I Metodi Costru/ori • Metodi speciali con le seguen8 proprietà – Hanno lo stesso nome della classe – Non hanno 8po di ritorno – Sono chiama8 automa8camente se creo un oggeAo della classe AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 17 AA 2014/15 Creare oggeK • Dichiarazione ed istanza • Solo istanza – Non è u8lizzabile mi manca il riferimento all’oggeAo AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Costru/ori con parametri • Non posso più usare • Creo l’oggeAo con AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 18 AA 2014/15 Package • PermeAe di raggruppare classi java • In pra8ca: – È una cartella nel nostro PC • Per crearlo – Almeno una Classe deve dichiarare l’appartenenza al package – Tale classe deve risiedere in tale cartella AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Per casa • Fare gli esercizi del Capitolo 2 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 19 AA 2014/15 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili IDENTIFICATORI, TIPI DI DATI ED ARRAY AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 20 AA 2014/15 Capitolo 3 • S8le di codifica • Regole per gli iden8ficatori • Tipi di Dato – 8pi primi8vi: int, double, etc – 8pi non primi8vi: reference • Classi di Java – String • Array AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili S2le di Codifica e Commen2 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 21 AA 2014/15 Regole per gli iden2ficatori • Iden8ficatori: – nomi di classi, metodi, variabili, package, etc. • Primo caraAere – A-­‐Z, a-­‐z, _, $ • Altri caraAeri – A-­‐Z, a-­‐z, _, $, 0-­‐9 • Non possono essere una keyword java!! – ex new, class, etc – Elenco delle keyword sul libro AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Tipi Primi2vi • Tipi interi – byte, short, int, long • Tipi a virgola mobile – float e double • Tipo testuale – char • Tipo logico-­‐booleano – boolean AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 22 AA 2014/15 Tipi Primi2vi Tipo boolean char byte short int long float double AA 2014-­‐2015 Dimensione 1-bit 16-bit Unicode signed 8-bit signed 16-bit signed 32-bit signed 64-bit 32-bit (IEEE-754) 64-bit (IEEE-754) Valori true/false ‘\n’ -128…+127 -32768 … +32767 -231 … + 231-1 -263 … + 263-1 3.4e+38 (7 decim.) 1.7e+308 (15 decim) Programmazione Java per Disposi8vi Mobili Esplicitare il 2po • il 8po va esplicitato: – 10 è un int (default) – 10 è anche uno short – 10 è anche un byte – 10L è un long – 10F è un float – 10D è un double – 1.0F è un float – 1.0 è un double (default) AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 23 AA 2014/15 Conversioni di 2po • Conversioni automa8che se non c’è perdita di precisione: – da numeri interi a numeri in virgola mobile – fra interi di cardinalità minore a interi di cardinalità maggiore (int >> long) – da float a double • Negli altri casi devo usare un “cas*ng” esplicito – double >> int – (int)(5.5+0.4) vale 5 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Riferimen2 ad OggeK • Simile alla dichiarazione di 8pi primi8vi – Il nomeOggeAo è deAo reference (riferimento) – Con8ene un indirizzo di memoria AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 24 AA 2014/15 Schema di allocazione in memoria AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Schema di allocazione in memoria AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 25 AA 2014/15 Passaggio dei Parametri • Il passaggio dei Parametri avviene per valore – Al metodo viene passato il valore della variabile AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Passaggio dei Parametri AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 26 AA 2014/15 Passaggio dei Parametri • Risultato • Non permeAo ad un metodo di cambiare il “reference” dichiarato nel chiamamante • Riscriviamo il metodo • PermeAo al metodo di cambiare l’oggeAo che è “puntato” dal reference AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Librerie Standard • java.io – con8ene classi per realizzare l’input – output in Java • java.awt – con8ene classi per realizzare interfacce grafiche, (es. BuAon) • java.net – con8ene classi per realizzare connessioni, come Socket • java.applet – con8ene un’unica classe: Applet • java.u8l – raccoglie classi d’u8lità (es. Date) • java.lang – è il package che con8ene le classi nucleo del linguaggio, come System e String AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 27 AA 2014/15 Usare le Librerie • Comando import • Osservazioni: – java.lang.* è importato di default – Lo * non importa i soAopackage AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili La classe String • Creare una stringa • Oppure • Le stringhe sono oggeC con metodi: – toUpperCase() – toLowerCase() – trim() – etc. AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 28 AA 2014/15 OggeK Immutabili • Produce • I metodi di String non cambiano la stringa contenuta nell’oggeAo: – Res8tuiscono un’altra stringa modificata • Per gli altri metodi di String vedere la documentazione Java AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Documentazione Java • Comando javadoc – Genera codice html dal codice e dai commen8 • La documentazione Java è scriAa con javadoc – Vedere hAp://java.sun.com/javase/6/docs/api/ • Esercizio – Scrivere commen8 di 8po javadoc in una Classe – Eseguire • javadoc NomeClasse.java AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 29 AA 2014/15 Gli Array • Dichiarare Array • Creare Array • Inizializzare Array AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Gli Array • Dichiarazione/Creazione/Inizializza8one • Lunghezza di un Array AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 30 AA 2014/15 Array Mul2dimensionali • Sono Array di Array – Può non essere reAangolare!!! AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Limi2 degli Array • Non possono essere eterogenei • Non si possono ridimensionare • In realtà gli Array sono oggeC e quindi il seguente codice agisce solo sul riferimento • Per copiare gli Array si usa arraycopy – Della classe System • Vedremo classi Java che superano ques8 problemi AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 31 AA 2014/15 Per casa • Fare gli esercizi del Capitolo 3 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Operatori • Assegnazione = • Aritme8ci +, -­‐, *, /, % +=, -­‐=, *=, /=, %= • Unari di pre e post incremento/decremento ++, -­‐-­‐ • Bitwise ∼, &, |, ^, <<, >>, >>>, &=, |=, ^=, <<=, >>= • Relazionali ==, !=, >, <, <=, >= • Booleani ! , &, |, ^, &&, ||, &=, |=, ^= AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 32 AA 2014/15 Operazioni su Stringhe • Uguaglianza • Concatenazione AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Istruzioni if, else AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 33 AA 2014/15 Istruzioni if, else AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Operatore Ternario • Può sos8tuire il costruAo if else • true assegna expr1 • false assegna expr2 • Esempio AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 34 AA 2014/15 Istruzione while AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Istruzioni do while AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 35 AA 2014/15 Istruzione for AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Istruzioni switch case AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 36 AA 2014/15 Istruzioni break e con2nue AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Per casa • Fare gli esercizi del Capitolo 4 AA 2014-­‐2015 Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 37