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