Introduzione alla programmazione in Java

Introduzione
alla programmazione in Java
1
Programmare ad oggetti
La programmazione come attività di creazione di modelli.
I concetti di classe, oggetto e scambio di messaggi.
Un primo esempio di programma Java.
Meccanismi di scrittura ed esecuzione di programmi Java.
2
1
3
Alcuni linguaggi “famosi”
Fortran (1955)
Cobol, Basic (1960s)
Pascal (1969)
C (1970)
Ada (1984)
C++ (1980s)
Java (1990s)
4
Un primo programma Java
import java.io.*;
class Program1 {
public static void main (String[] arg) {
System.out.println("Benvenuti al corso");
}
}
2
5
Programmi e mondo reale
Il codice di un programma interagisce con
calcolatore ed i suoi componenti così come con
entità e processi esterni
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
6
I programmi come modelli
Il codice di un programma modella altre cose
– Interne: tastiera, dischi, reti, schermo
– Esterne: piani di volo, molecole, transazioni bancarie
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
NH2
NH2
3
7
Modelli
I modelli sono nati prima dei calcolatori e NON
devono necessariamente essere realizzati
mediante calcolatori
Chiamate
Operatori
8
Elementi del modello
Ogni modello è formato da elementi che
rappresentano altre entità
Gli elementi del modello presentano un
comportamento consistente
A seconda dei loro comportamenti comuni, gli
elementi possono essere raggruppati in
categorie diverse
Il comportamento di un elemento può essere
provocato da azioni esterne
4
9
Modelli in Java
Elementi del modello: Oggetti
La categorie di oggetti vengono chiamate Classi
Una classe:
– Determina il comportamento degli oggetti
appartenenti
– E’ definita da una sezione di codice
Un oggetto
– Appartiene ad una classe
– Costituisce una istanza di tale classe
10
Esempio
Classe operatore:
operatore
– Definisce il comportamento degli operatori (ad esempio,
cambiamento di locazione, registrano il tempo di un
intervento, ecc.)
– Ogni operatore in servizio è una istanza di tale classe
Classe chiamata:
– Definisce il comportamento delle chiamate (ad
esempio, priorità, orario di arrivo, cliente chiamante
ecc.)
– Per ogni chiamata che arriva si crea una istanza
5
11
Programmazione OO
Fuoco: gli oggetti
– e le classi che ne definiscono il comportamento
Filosofia: In un programma in esecuzione sono gli
oggetti che eseguono le operazioni desiderate
Programmare in Java
– Scrivere le definizioni delle classi che modellano il problema
– Usare tali classi per creare oggetti
Java è dotato di classi ed oggetti predefiniti
– Non si deve continuamente reinventare le ruota
12
Messaggi
Gli oggetti sono gli elementi attivi di un
programma
Come fanno gli oggetti a compiere le azioni
desiderate ?
Gli oggetti sono attivati dalla ricezioni di un
messaggio
Una classe determina i messaggi a cui un
oggetto può rispondere
I messaggi sono inviati da altri oggetti
6
13
Invio di un messaggio
Aumenta la luminosità del
monitor fisso
Rosa
Gerardo
14
Invio di un messaggio
Aumenta la luminosità del monitor fisso
Messaggio
Comportamento:
- Modifica
- La proprietà luminosità
- In aumento
Destinatario
(Receiver
Receiver))
Referenza ad un oggetto
Aumenta la luminosità del
monitor fisso
Gerardo
Rosa
7
15
Messaggi
Per l’invio di un messaggio è necessario
specificare:
– Ricevente
– Messaggio
– Eventuali informazioni aggiuntive
Non tutti i messaggi sono comprensibili da un
determinato oggetto:
– Es: abbassare il volume
– Un messaggio deve invocare un comportamento
dell’oggetto
16
Nomi e referenze
Le classi hanno un nome
–
–
–
–
Ogni classe Java deve avere un nome
Ogni classe ha un solo nome
Es: Impiegato, Molecola, ContoCorrente
Convenzione: comincia con una lettera maiuscola
Regole Java per i nomi (identificatori)
– Lettere, cifre e caratteri speciali (es: “_”)
– Devono cominciare con una lettera
– Il linguaggio è case sensitive
8
17
Nomi e referenze
Gli oggetti NON hanno nome
– In Java gli oggetti sono identificati da riferimenti
– Un riferimento (reference)
reference è una frase che si
riferisce ad un oggetto
• I riferimento sono espressioni
– E’ possibile avere più referenze ad uno stesso
oggetto
18
Classi ed oggetti predefiniti
Modellano componenti e comportamenti del sistema
Modellano l’interfaccia grafica di colloqui con l’utente
Modellano “oggetti” di uso comune, ad esempio Data e Calendario
Un esempio: il monitor
– Ci si riferisce a lui mediante il riferimento: System.out
import java.io.*;
class Program1 {
public static void main (String[] arg) {
System.out.println("Benvenuti al corso");
}
}
9
19
PrintStream e System.out
La classe PrintStream
– Modella monitor e stampanti
– Comportamento: visualizzare sequenze di caratteri
System.out
– Una referenze ad un oggetto predefinito
– Istanza della classe PrintStream
20
PrintStream e System.out
XXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
System.out
Un oggetto
PrintStream
Si riferisce a
XXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
XXXX
Un programma
Java
Modella
oppure
10
21
Messaggi in Java
Forma generale
Comportamento-desiderato (altre-informazioni)
Esempio:
println (“Benvenuti al corso”)
– Comportamento: println (stampa una linea)
– Informazione: “Benvenuti al corso”
(contenuto della linea)
22
Invio di un messaggio
Forma generale:
Riferimento-al-destinatario.messaggio
Esempio:
System.out.println (“Benvenuti al corso”)
Riferimento
Messaggio
– L’oggetto a cui si riferisce il riferimento System.out è il
destinatario del messaggio println(“Benvenuti al corso”)
11
23
Invio di un messaggio
XXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
System.out.println(“Benvenuti al corso”)
Invia un messaggio
XXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
XXXX
Un programma Java
println(“Benvenuti al corso”)
Un messaggio println
Benvenuti al corso
Modella
Destinatario: un oggetto PrintStream
24
Istruzioni
Le istruzioni Java
– Provocano un’azione (es: inviare un messaggio)
– Devono essere chiusi da punto e virgola “;”
Esempio
System.out.println (“Benvenuti al corso”);
– L’invio di un messaggio deve essere sempre
espresso da una istruzione
12
25
Forma di un programma
Almeno per le prime lezioni:
import java.io.*;
Class ProgramName {
public static void main (String[] arg) {
statement
statement
...
statement
}
}
26
Un primo esercizio
Scrivere un
programma che
annunci il vostro
primo programma e
l’intenzione di
continuare
This is my first Java program
but it won't be my last.
13
27
Meccanismi: Editing
Il testo dei programmi è memorizzato in file
I file sono creati con opportuni editor
import java.io.*;
Codifica
Class ProgramName {
public static void main (String[] arg) {
statement
statement
...
statement
}
}
Programma sorgente
28
Meccanismi: Compilazione
Il programma sorgente deve essere tradotto
(compilato)
compilato per poter essere eseguito
import java.io.*;
Class ProgramName {
public static void main (String[] arg) {
statement
statement
...
statement
}
}
Compilatore
Programma sorgente
Java byte code
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
14
29
Meccanismi: Compilazione
Compilazione
– JDK: javac nome-del-file
– IDE: voce di menu
Java Byte Code
–
–
–
–
Il linguaggio macchina di una macchina virtuale
Java Virtual Machine
NON leggibile dall’uomo
Conservato in class files
30
Meccanismi: Esecuzione
Un class file può essere eseguito su ogni
piattaforma che ha la Java Virtual Machine
– Un programma; interprete
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
Java Virtual Machine
(Windows)
Java Virtual Machine
(Unix)
Java Virtual Machine
(MacOS)
15
31
Meccanismi: Esecuzione
Esecuzione
– JDK: java nome-class
– IDE: voce di menu, icona
Byte code
Un programma Java NON può essere
eseguito senza Java Virtual Machine
Virtual machine
– Interpreta il codice Java Byte Code
– E’ a sua volta in esecuzione sul calcolatore
Piattaforma
32
Nomi dei file
Il compilatore produce un diverso class file per ogni
classe definita in un file sorgente
– Il nome di ogni class file coincide con il nome della classe
– File sorgenti: .java
C1.class
– Class file: .class
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
…
Class C1 { …
}
Class C2 { …
}
…
Class Cn { …
}
Prova.java
C2.class
Compilatore
01001010010010100
11100100110011100
00110111100001010
11001101001000110
01001010010010100
11100100110011100
00110111100001010
11001101001000110
Cn.class
16
33
Elementi del linguaggio Java
Regole per la costruzione delle frasi
Identificatori
Parole chiave (keywords)
– Significati predefiniti
– Es: import, class, public, static, void
– NON PrintStream
Ordine delle istruzioni
– Ordine lessicografico coincidente con l’ordine di
esecuzione
34
Elementi del linguaggio Java
Il formato del è libero
– Indentazione
– Convenzioni
• Una istruzione per linea
• Usare i tab e non gli spazi per l’indentazione
Commenti
– Racchiusi da delimitatori: /* …*/
– Su linea singola: //
17
35
Elementi del linguaggio Java
/* Il mio primo commento */
/*
* Il mio primo commento
*/
// Il mio primo commento
Statement // Il mio primo commento
36
Linee guida
Inserire un commento prima di ogni classe per
spiegarne scopo e comportamento
NON spiegare come funziona Java
Dare informazioni che non possono essere
facilmente derivate dal codice
Mai interrompere una istruzione con un
commento
18
37
Esempio
import java.io.*;
/*
*Program1: Stampa un saluto
*/
class Program1 {
public static void main (String[] arg) {
System.out.println("Benvenuti al corso");
}
}
38
Errori
A tempo di compilazione
– Scoperti dal compilatore
– Es: mancanza del punto e virgola, parentesi aperte e
non chiuse
A tempo di esecuzione (run time)
– Scoperti solo all’atto dell’esecuzione del programma
– Es: output difforme da quello atteso
19
Quick start
39
40
Passo 1: installazione J2SDK
Il J2SDK (Java 2 Software Development Kit) contiene
–
–
–
–
Compilatore Java->ByteCode (javac)
Java Virtual Machine, per eseguire i programmi Java (java)
Librerie: I/O, Rete, Interfacce Utente, Grafica, Utilità, etc.
E molto altro…
Per Windows è un eseguibile (.exe) Æ cliccare sull’icona
jdk-1_5_0_01-windows-i586-p
Per Linux: ./jdk-1_5_0_01-linux-i586.bin
Per Linux (RPM): rpm –ih ./jdk-1_5_0_01-linux-i586.bin
20
41
Passo 1: Installazione JDK
42
Passo 1: Installazione JDK
21
43
Passo 2: Settare il path
La variabile d’ambiente path contiene la lista dei
percorsi in cui l’interprete dei comandi o Explorer
vanno a cercare programmi eseguibili
– Occorre aggiungervi il percorso delle applicazioni del
Java SDK
Cliccare col tasto destro su “Risorse del
computer” e aprire la finestra Proprietà.
Selezionare il tab “Avanzate”
Cliccare su variabili d’ambiente e modificare la
variabile di sistema “Path”
44
Passo 2: Settare il path
22
45
Passo 2: Settare il path
Aggiungere in testa alla variabile di sistema path il percorso di J2SDK…\bin,
ovvero, nel nostro caso:
– C:\Programmi\Java\jdk1.5.0_01\bin
Separare tale percorso dal resto del contenuto della variabile mediante un
punto e virgola “;”
46
Passo 2: Settare il path
23
47
Il classpath
La variabile d’ambiente CLASSPATH contiene la
lista di percorsi in cui la Java Virtual Machine va
a cercare le classi quando un programma Java
viene eseguito
– Tale variabile deve contenere il “.” (directory
corrente)
– Necessario quando si esegue un programma Java
dalla directory in cui esso è contenuto
– Aggiungere la variabile in maniera simile a quanto
fatto per il PATH
48
Installazione documentazione
Decomprimere il file jdk-1_5_0-doc.zip nella
cartella C:\Programmi\Java\jdk1.5.0_01
Sarà creata una cartella docs contenente la
documentazione in html del J2SDK
Tale cartella conterrà ora documentazione html del
Java SDK
24
49
Passo 3: creazione programma
Un qualsiasi editor va bene (Notepad, Xemacs, etc.)
Salvare il file con estensione .java (es. prova.java)
50
Passo 4: compilazione
javac prova.java
25
51
Passo 5: esecuzione
52
Uso di un IDE: NetBeans
Integrated Development Environment (IDE) sviluppato
dalla SUN
–
–
–
–
–
–
–
Editor guidato dalla sintassi
Browsing delle classi
Wizard per la creazione automatica di classi
Compilazione e esecuzione dall’IDE
Editor (semplificato) di interfacce utente
Molto altro!!
Installarlo dall’apposito package
• jdk-1_5_0_01-nb-4_0-bin-win
26
53
NetBeans (I)
54
NetBeans (II)
27
55
NetBeans (III)
56
NetBeans (IV)
28
57
NetBeans (V)
58
NetBeans (VI)
29
59
Esercizi
Installare il J2SDK
Creare un semplice programma con un editor di
testo
Compilare il programma
Eseguire il programma
Ripetere l’operazione con NetBeans
30