Introduzione a Java
La programmazione
Il linguaggio Java
Primi programmi
12/08/02
Introduzione
1
Concetti generali sulla programmazione
Qual è l'obiettivo della programmazione?
 L'algoritmo
 Il programma
 L'esecuzione del programma
Cosa si intende per programma corretto?
 Correttezza sintattica:

Correttezza semantica:
L'area di un triangolo e base per altezza
L'area di un triangolo è base per altezza
Cosa è il debugging di un programma?
.... ed il testing?
12/08/02
Introduzione
2
Il ciclo modifica-compila-correggi
Modifica
programma
Modifica
programma
Compila
programma
Errori di
compilazione
?
No
Compila
programma
Errori di
compilazione?
Sì
No
Collauda
programma
Sì
Collauda
programma
Errori di
esecuzione?
Ci sono nuove
specifiche?
No
No
Fine
Fine
12/08/02
Errori di
esecuzione?
No
Sì
Sì
Sì
Introduzione
3
Storia di Java
Java
Basato sul C e C++
Sviluppato nel 1991 per dispositivi elettronici intelligenti di consumo
Ma il mercato non ebbe sviluppo, il progetto rischiò di essere cancellato
Internet esplose nel 1993, il progetto ebbe nuova vita
Java fu formalmente annunciato nel 1995
Ora è usato in pagine web con contenuto interattivo, per aggiungere funzionalità
a server web, in applicazioni per dispositivi di consumo (ad esempio:
cercapersone, cellulari)...
12/08/02
Introduzione
4
Primo programma Java
Programma Java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// Benvenuti.java
// Il mio primo programma Java
public class Benvenuti {
public static void main( String args[] ) {
System.out.println( “Benvenuti alla programmazione in Java!” );
}
}
Output del programma
Benvenuti alla programmazione in Java!
12/08/02
Introduzione
5
Commenti
1. // Benvenuti.java
// il resto della riga è un commento
I commenti sono ignorati
Servono per documentare e descrivere il codice
Commenti su più righe: /* ... */
/* Questo è un commento su
più righe. */
2.
// Il mio primo programma Java
Un’altra riga di commento
N.B.: I numeri di linea non sono parte del programma
12/08/02
Introduzione
6
La prima classe
3.
Linea vuota
Rende il programma più leggibile
Linee vuote, spazi e caratteri di tabulazione sono chiamati whitespace characters
Vengono ignorati dal compilatore
4. public class Benvenuti {
Introduce la definizione della classe Benvenuti
Ogni programma Java deve avere almeno una classe
definita dall’utente
Keyword: parola riservata del linguaggio Java
La keyword class è seguita dal nome della classe
Per convenzione nei nomi di classe si usa la lettera
maiuscola per ogni parola (soprattutto la prima)
EsempioDiNomeDiClasse
12/08/02
Introduzione
7
Identificatori
4.
public class Benvenuti {
Il nome della classe è chiamato identificatore:
Una serie di caratteri costituita da lettere, cifre, underscore “_”
Non può iniziare con un numero e non può contenere spazi
Esempi:
Welcome1, _valore, button7
7button non è lecito
Lettere maiuscole e minuscole sono considerate differenti:
a1 e A1 sono nomi diversi
La classe deve essere introdotta dalla keyword public
(poi vedremo il significato)
12/08/02
Introduzione
8
Parole chiave di Java
Keyword di Java
abstract
boolean
break
byte
case
catch
char
class
continue
default
do
double
else
extends
false
final
finally
float
for
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while
Keyword riservate ma non usate da Java
const
12/08/02
goto
Introduzione
9
Il corpo di una classe
4.
public class Benvenuti {
Nomi dei file
Il nome del file deve essere uguale al nome della classe con l’estensione
.java
Benvenuti.java
Parentesi graffa aperta {
Inizia il corpo di ogni classe
La parentesi graffa chiusa termina il corpo (linea 10)
12/08/02
Introduzione
10
Il metodo main
6.
public static void main( String args[] ) {
Deve essere presente in ogni applicazione Java
Le applicazioni iniziano l’esecuzione del programma a partire dal main
Le parentesi tonde indicano che main è un metodo
Le applicazioni contengono uno o più metodi
I metodi eseguono dei compiti e restituiscono delle informazioni
void indica che main non restituisce alcuna informazione
La parentesi graffa aperta { inizia il corpo del metodo che termina con la parentesi
graffa chiusa (linea 8)
12/08/02
Introduzione
11
Un comando di stampa
7.
System.out.println( “Benvenuti alla programmazione in Java!” );
Ordina al computer di eseguire una azione:
Stampa una stringa di caratteri
Stringa – una sequenza di caratteri tra doppi apici
Whitespaces nelle stringhe non sono ignorate dal compilatore
System.out
L’oggetto che rappresenta lo Standard output del sistema
Il metodo System.out.println
Stampa una linea di testo (il parametro del metodo tra parentesi) sulla
finestra di comando
L’intera linea viene chiamata istruzione
Ogni istruzione deve terminare con il carattere“;”
12/08/02
Introduzione
12
Il corpo di una classe (2)
8.
}
Indica la fine del metodo
10. }
Indica la fine della classe
Si possono aggiungere commenti per rendere più chiaro il significato delle
parentesi
Le linee possono essere riscritte come:
8.
10. }
12/08/02
}
// fine del metodo main()
// fine della classe Benvenuti
Introduzione
13
Compilazione di un programma
Si apra una finestra di comando, si entri nella directory dove il programma è
memorizzato
Si digiti javac Benvenuti.java <invio>
Se non vi sono errori è stato creato il file Benvenuti.class
Contiene il “bytecode” dell’applicazione
Il Bytecode verrà utilizzato dall’interprete Java
C:\> E:
E:\> cd \Java\esempi\Benvenuti
E:\Java\esempi\Benvenuti> javac Benvenuti.java
E:\Java\esempi\Benvenuti>
12/08/02
Introduzione
14
Start command prompt
12/08/02
Introduzione
15
Compilazione di un programma
Con il programma
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// Benvenuti.java
// Il mio primo programma Java
public class Benvenuti {
public static void main( String args[] ) {
System.out.println
(“Benvenuti alla programmazione in Java!”)
}
}
E:\Java\esempi\Benvenuti> javac Benvenuti.java
Benvenuti.java:8: ';' expected.
("Benvenuti alla programmazione in Java!")^
1 error
E:\Java\esempi\Benvenuti>
12/08/02
Introduzione
16
Compilazione di un programma
Attenzione all’errore: command not found
Il PATH non è impostato
correttamente
% cd esempi/benvenuti
~/esempi/benvenuti% javac Benvenuti.java
Bash: javac: command not found
~/esempi/benvenuti% PATH=$PATH:/usr/local/java/bin
~/esempi/benvenuti% javac Benvenuti.java
~/esempi/benvenuti% ls -l
total 2
-rw-r--r-1 luca
450 Aug 8 12:13 Benvenuti.class
-rw-r--r-1 luca
207 Aug 8 12:12 Benvenuti.java
~/esempi/benvenuti% java Benvenuti
Benvenuti alla programmazione in Java!
~/esempi/benvenuti%
Con windows il comando sarà diverso
PATH=%PATH%;c:\jdk1.3\bin
Il carattere separatore è “;” non “:”
Le directory dipendono
dalla configurazione
12/08/02
Introduzione
17
Esecuzione di un programma
Si digiti java Benvenuti <invio>
L’interprete carica il file .class per la classe Benvenuti
L’estensione .class viene omessa
L’interprete esegue le istruzioni del metodo main (che deve essere presente)
E:\Java\esempi\Benvenuti> java Benvenuti
Benvenuti alla programmazione in Java!
E:\Java\esempi\Benvenuti>
12/08/02
Introduzione
18
Dal codice sorgente al programma in
esecuzione
Codice
sorgente
Compilatore
File di
bytecode
Interprete
Programma in
esecuzione
Librerie
File .java scritto dal
programmatore
File .class creato
dal compilatore
Fornite insieme al
compilatore
12/08/02
Introduzione
19
Secondo programma
1
2
3
4
5
6
7
8
9
10
11
// Benvenuti2.java
// Stampa una linea usando più istruzioni
public class Benvenuti2 {
public static void main( String args[] ) {
System.out.print( “Benvenuti alla programmazione” );
System.out.println( “in Java!” );
}
}
System.out.print mantiene il cursore sulla
stessa linea, perciò System.out.println
continuerà la stampa sulla stessa linea .
Output del programma
Benvenuti alla programmazione in Java!
12/08/02
Introduzione
20
Caratteri di escape
Il carattere Backslash “\” indica che in una stringa deve essere utilizzato un carattere
speciale
Backslash insieme a un secondo carattere definisce una sequenza di
escape
\n - newline (a capo)
\r - carriage return
\" - doppi apici
\t - il carattere di tabulazione
\\ - il carattere di backslash stesso
12/08/02
Introduzione
21
Caratteri di escape
Esempio:
Possono essere usati con System.out.println o System.out.print per spezzare un
testo su più linee
System.out.print(“Benvenuti\n\tin\n\t\"Java\"!\n”);
Benvenuti
in
"Java"!
Il cursore è andato a capo per ogni sequenza \n
Il carattere di tabulazione \t in genere
corrisponde ad un rientro di 8 spazi
12/08/02
Introduzione
22
Tipi di programma Java
Esistono tre diversi tipi di programmi java
1) Applicazione da riga di comando
2) Applicazioni grafiche
3) Applet
Ci occuperemo soprattutto del primo tipo di programmi
12/08/02
Introduzione
23
Applicazione da riga di comando
1.
2.
3.
4.
5.
6.
7.
8.
9.
/**
* The HelloWorldApp class implements an application that
* simply displays "Hello World!" to the standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
E:\Java\esempi\HelloWorld> java HelloWorldApp
java HelloWorld!
E:\Java\esempi\HelloWorld>
12/08/02
Introduzione
24
Applicazione grafica
1. import java.awt.*;
2.
3. public class HelloWorldFrame extends Frame {
4.
5.
public static void main(String [] args) {
6.
Frame f = new HelloWorldFrame();
7.
f.setSize(300, 200);
8.
f.setTitle("Program: Hello World Frame");
9.
f.show();
10.
}
11.
public void paint(Graphics g) {
12.
g.drawString("Hello world!", 110, 100);
13.
}
14. }
E:\Java\esempi\HelloWorld > java HelloWorldFrame
12/08/02
Introduzione
25
Applet Java
1.
2.
3.
4.
5.
6.
7.
8.
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello world!", 50, 25);
}
}
È necessario anche un file html
<HTML>
<!-- file hello.html -->
<HEAD><TITLE> A Simple Program </TITLE></HEAD>
<BODY>
Here is the output of my program:
<APPLET CODE="HelloWorldApplet.class" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>
12/08/02
Introduzione
26
Applet Java
Può essere eseguito da riga di comando tramite il programma appletviewer
E:\Java\esempi\HelloWorld> appletviewer hello.html
Oppure caricando tramite
browser la pagina hello.html
12/08/02
Introduzione
27
COMMENTI
Tre diversi stili:
/* Commento tradizionale, eventualmente su più linee, non nidificato */
// Commento su di una sola linea
/** Commento di documentazione". */
Solo immediatamente prima di una dichiarazione
di classe, interfaccia, metodo o campo, e viene
incluso nella documentazione generabile automaticamente a partire dal codice sorgente (es.: javadoc)
28
Documentazione
Commenti che iniziano con /**
Sono utilizzati dal programma
javadoc
che produce pagine html
La documentazione standard di Java
è prodotta in questo modo
12/08/02
Introduzione
29
Documentazione in linea
API:
http://java.sun.com/j2se/1.4/docs/api/
Tutorial:
http://java.sun.com/docs/books/tutorial/
12/08/02
Introduzione
30
ESEMPIO
/** Questo è un esempio di commento di
documentazione per una classe “Automobile”
* @see Ruota
* @see Carrozzeria
* @author Roberto
* @version 1.0
*/
31
TAGS
Tag
Descrizione
Si applica a
@see
Nome di classe collegata Classe, metodo, campo
@author
Nome autore
Classe
@version
Versione
Classe
@param
Nome e descrizione
parametro
Metodo
@return
Descrizione del valore di
ritorno
Metodo
@exception
Nome e descrizione
eccezione
Metodo
32
Esercizi
Scrivere un programma che stampi nome cognome e numero di matricola
12/08/02
Introduzione
33