Upload
nico-brunelli
View
216
Download
2
Embed Size (px)
Citation preview
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
A.A. 2004-05
Java come linguaggio di programmazione
2
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Argomenti della lezione
Programmare in JavaUn esempio elementareGli strumenti di Java
Struttura di un programma JavaMetodi staticiVariabiliTipi elementari Istruzioni principali
3
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Il linguaggio Java
Formalismo ad alto livello...Permette di descrivere programmi basandosi su
concetti primitivi “sofisticati” (file, finestre, tabelle, liste, ecc.)
...basato su una notazione testuale familiareCodice sorgenteSimile, nella sintassi e nelle istruzioni al
linguaggio C
4
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Codice Sorgente
I programmi Java sono suddivisi in “classi” Le classi sono descritte all’interno di file di
testo con estensione “.java” Ogni file contiene una sola classe Il nome file deve coincidere con il nome
della classe
5
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Un esempio
public class Hello {
// Il programma più semplice
public static void main(String[] args) {
// Stampa un messaggio sul video
System.out.println(“Hello Java”);
}
}
public class Hello {
// Il programma più semplice
public static void main(String[] args) {
// Stampa un messaggio sul video
System.out.println(“Hello Java”);
}
}
Hello.javaHello.java
6
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Passi concettuali (1)
J
.javaCodice
sorgente
10010110110..
10010110110..
.classByteCode
Scrittura Compilazione
7
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
I passi concettuali (2)
10010110110..
10010110110..
.classByteCode
Hello,
Java!
Hello,
Java!
Esecuzione
8
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Gli strumenti di Java
La macchina virtualeIl compilatore Gli ambienti di sviluppoLa documentazioneIl debugger
9
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Macchina virtuale (1)
Sistema OperativoSistema Operativo
HardwareHardware
Applicazionetradizionale
Applicazionetradizionale
MacchinaVirtuale
MacchinaVirtuale
ApplicazioneJava
ApplicazioneJava
10
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Macchina virtuale (2)
Astrazione di un elaboratore “generico” Ambiente di esecuzione delle applicazioni Java
Esempio: java Hello
Responsabilità:Caricamento classi dal discoVerifica consistenza codiceEsecuzione applicazione
11
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Il compilatore
Traduzione dei sorgenti testuali in bytecodeLinguaggio della macchina virtuale Java
Esempio:javac Hello.java
J 10010110110..
10010110110..
12
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Ambienti di sviluppo
Il codice sorgente Java è composto da testoUn editor qualsiasi è sufficiente
Si possono usare ambienti integrati per lo sviluppo (IDE)Offrono strumenti per la redazione, la
compilazione, l’esecuzione e la ricerca degli errori
13
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Esempi
Eclipsehttp://www.eclipse.org
JCreator http://www.jcreator.com
BlueJhttp://www.bluej.org
14
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Documentazione (1)
Strumento necessario alla sopravvivenza del programmatore Java!!
Raccolta di informazioni relative alle classi appartenenti alle librerie standard di Javahttp://java.sun.com/docs/
15
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Documentazione (2)
Per ogni classe:Descrizione funzionaleElenco di attributi:
funzionalità, caratteristicheElenco dei metodi:
funzionalità, parametri in ingresso, valori di ritorno, …
16
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Il debugger
Strumento ausiliarioal programmatoreMonitorare l’esecuzione
di una applicazioneAnalisi dei valori assunti dalle variabili, i metodi
della classe, …
Comando jdb.exe
17
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Cellulari ePC palmariCellulari ePC palmari
ElettrodomesticiElettrodomestici
PC clientPC client
ServerServer
Apparati di rete
Apparati di rete
Dove si usa Java?
18
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Java nei sistemi Client
VantaggiFacilità di realizzazione delle interfacce grafiche Indipendenza dalla piattaforma di sviluppo e di
utilizzoCiclo di sviluppo rapido Distribuzione immediata, a richiesta, tramite web
SvantaggiPrestazioni limitate rispetto ad applicazioni nativeAmbienti di esecuzione in forte evoluzione
Oggetto di questo corso
19
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Java nei sistemi Server
Varie tipologie di utilizzo:Servlet / Java Server Pages / Java Server FacesEnterpriseJavaBeanApplication server
È il contesto in cui Java sta ottenendo il massimo successo
Oggetto del corso “Programmazione in ambienti distribuiti”
20
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Java nei sistemi Embedded
Segmento di mercato in forte crescita:Milioni di PC connessi ad InternetCentinaia di milioni di telefoni cellulariMiliardi di elettrodomestici
Vengono usate librerie specificheJavaCard, Java Micro Edition, …
21
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Installare Java (1)
Java Software Development KIT (J2SE SDK) Versione utilizzata nel corso 1.4.xDisponibile gratuitamente:
http://java.sun.com/compilatore, librerie standard, macchina
virtuale, …
22
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Installare Java (2)
Necessario modificare la variabile d’ambientePATH= ... ;<JAVA_HOME>/binper invocare i comandi java (compilatore,
macchina virtuale, debugger, ...)
In Windows 2000/XPPannello di controllo
Sistema Avanzate Variabili d’ambiente
25
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Programmi Java
Java è un linguaggio ad oggettiL’unità minima di programmazione è la classeUn programma Java utilizza una o più classi
Per ora, consideriamo programmi formati dauna sola classeUn solo file sorgente Il nome del file coincide con il nome della classeL’estensione del file è “.java”
26
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Formato generale
public class Prova { /*
qui vengono riportati attributi emetodi della classe …
*/
}
public class Prova { /*
qui vengono riportati attributi emetodi della classe …
*/
}
Prova.javaProva.java
Stesso nome!
27
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
main(…): la porta sul mondo Java
public static void main(String[] args){/* istruzioni ... */
}Punto di ingresso di ogni applicazione
Invocato automaticamente dalla VM Java
28
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Metodi statici
Sequenze di istruzioni che svolgono un determinato compitoHanno un nomePossono avere dei parametriPossono ritornare un valoreDovrebbero avere un commento!
29
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
public class Test {
static int m1(int a, int b) { int c = a*a+b*b; return c; }
public static void main(String[] args) {
int i = m1(3,4); System.out.println(i);
}}
public class Test {
static int m1(int a, int b) { int c = a*a+b*b; return c; }
public static void main(String[] args) {
int i = m1(3,4); System.out.println(i);
}}
30
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Commenti
Servono a documentare un programma (o una sua parte)Racchiusi da “/*” e “*/” “//” inizia un commento che termina a fine riga
Usati sempre troppo poco!
31
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Variabili locali
I metodi possono utilizzare variabili:Servono a memorizzare
risultati intermediDichiarate nel corpo del metodoDurata temporanea: quando il metodo ritorna, la
variabile è distrutta
32
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi: una forma per i dati
Variabili, parametri, valori ritornati hanno un tipo che ne precisa/limita l’usoPossono contenere solo valori conformi al proprio
tipoEsistono tipi
Semplici (primitivi)Composti (classi) – descritti nelle lezioni
successive
33
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi primitivi
Numerici interibyte, short, int, long
Numerici reali float, double
Non numericiboolean, char
34
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi numerici interi (1)
Valori ammissibilibyte {-128 ... 127}short {-32768 ... 32767}int {-2147483648 ... 2147483647}long {-9.22 E18 ... 9.22E18}
35
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi numerici interi (2)
Operazioni consentitearitmetiche
+, -, *, /, %, ++, --, >>logiche (bit a bit)
^, &, |, ~, <<, >>>confronto
==, !=, >, >=, <, <=
36
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi numerici reali
Valori float {±3.403E38}
6 cifre significativedouble {±1.798E308}
15 cifre significative
Operazioniaritmetiche (+, -, *, /)confronto (==, !=,
>, >=, <, <=)
37
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi non numerici: boolean
Valori {false, true}
Operazioni logiche (&&, ||, !)confronto (==, !=)
38
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi non numerici: char
Rappresentazione dei caratteri secondo lo standard UnicodeLettere di vari alfabeti
arabo, armeno, bengalese, cirillico,greco, latino, ...
Simbolidiacritici, punteggiatura, matematici, tecnici, ...
39
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Tipi non numerici: char
Rappresentazione su due byteLe costanti sono indicate tra apici semplici (‘a’) I valori non stampabili sono rappresentati nel
formato unicode (‘\u27AF’)
Operazioni confronto
(==, !=, >,>=, <, <=)
40
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Dichiarazioni
Introducono l’utilizzo di una variabileFormato generale
<Tipo> <Nome> ‘;’<Tipo> <Nome> ‘=’ <ValoreIniziale> ‘;’
Esempichar c; int i = 10; long l1, l2;
La mancata dichiarazione è un errore sintattico
Opzionale
41
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Usare le variabili (1)
Si può dichiarare una variabile ovunque nel codice di un metodoBisogna farlo, però, prima di usarlaVisibilità limitata al blocco di istruzioni in cui è
dichiarata
Le variabili devono essere inizializzate! int a; int b = a;
Errore!La variabile “a” non è statainizializzata, e il suo valoreè casuale
Errore!La variabile “a” non è statainizializzata, e il suo valoreè casuale
42
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Usare le variabili (2)
Ad una variabile può essere assegnato:Un valore costante Il risultato di una formula
Esempi int i = 1, j = 5; i = (5*j) % 10; long l = 10L;char c1 = ‘a’, c2 = ‘\u0062’;boolean b = false;
43
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Convenzioni sui nomi
Le classi hanno nomi che iniziano con la lettera maiuscola
Metodi, attributi e variabili hanno l’iniziale minuscolaSe un nome è composto da più parole
giustapposte, l’iniziale di ogni parola successiva alla prima è maiuscola
int contatoreNumeroOccorrenze = 0;class CentraleTelefonica { }
44
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Costrutti di programmazione
Istruzioni sempliciSceltaRipetizioneSalto strutturato
Invocazione di metodiTrattata più in dettaglio
successivamenteBlocchi di istruzioni
Racchiusi tra parentesi graffe {...}
45
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Istruzioni di scelta (1)
Verifica della condizioneVera si esegue l’istruzione o il blocco di istruzioni
successivoFalsa si salta all’istruzione successiva oppure
viene eseguito il blocco “else”
if (condizione)...
if (condizione)... else ...
if (condizione)...
if (condizione)... else ...
46
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Istruzioni di scelta (2)
Struttura di selezione multiplaValutazione del valore di una variabileval1, …, valN:
espressioni costanti (interi o caratteri)
switch (var) {case val1: … break;case valN: … break;default: …
}
switch (var) {case val1: … break;case valN: … break;default: …
}
47
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Istruzioni di ripetizione (1)
espr1: inizializzazione variabile/i di controlloespr2: condizione di continuazioneespr3: modifica della/e variabili di controllo
for(espr1; espr2; espr3){… //istruzioni da ripetere
}
for(espr1; espr2; espr3){… //istruzioni da ripetere
}
48
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Istruzioni di ripetizione (2)
Esecuzione di un blocco di istruzioni finché la condizione rimane vera
do/while garantisce almeno una iterazione
while (cond ){…
}
while (cond ){…
}
do {…
} while(cond );
do {…
} while(cond );
49
© M
. Bad
ella
, G. M
alna
ti, L
. Tes
sito
re 2
003-
05
Programmazione ad Oggetti
Salto strutturato
Istruzioni che permettono di alterare il flusso di esecuzione:break : provoca l’uscita immediata dal bloccocontinue: salto delle rimanenti istruzioni del
blocco, procede con l’interazione successiva del ciclo
Usati nei costrutti while, do/while, for, switch (quest’ultimo, solo break)