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