© m. badella, g. malnati, l. tessitore 2003-05 programmazione ad oggetti a.a. 2004-05 java come...

Post on 02-May-2015

216 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 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)

top related