Download - Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Transcript
Page 1: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Java 5 (Tiger)

Programmazione “Object Oriented”Le basi del linguaggio

Page 2: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Bibliografia

• http://www.claudiodesio.com• Manuale di Java 6,

autore: Claudio De Sio Cesari, editore: Hoepli

Page 3: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Editor

• EJE editor Java open source creato da Claudio De Sio Cesari: Semplice da utilizzare, intuitivo, e non richiede prerequisiti particolariScaricabile gratuitamente da: http://www.claudiodesio.com http://sourceforge.net/projects/eje

• Eclipse: Scaricabile gratuitamente da: http://www.eclipse.org

Page 4: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Convenzioni di scrittura

• Courier New

Stile utilizzato per scrivere parti di codice di Java

• javac Pippo.javastile è utilizzato per le frasi che appaiono nella console

Page 5: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Organizzazione file

• raccogliere in un’unica cartella di lavoro, tutti gli esercizi (almeno inizialmente)

• crearsi una cartella nella directory “C:\”, e chiamarla per esempio “CorsoJava”

• Tutte le volte salvare i file creati sulla chiavetta “USB”

Page 6: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Le basi del linguaggio

Concetti fondamentali del linguaggio quali: classi, oggetti, metodi, operatori, costruttori e costrutti di controllo.

Passi che servono per creare applicazioni Java. La storia, le caratteristiche, l’ambiente di sviluppo.

Consultazione della documentazione ufficiale.Obiettivo:

possedere tutte le carte in regola per iniziare a programmare in Java.

Page 7: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Unità 1

Obiettivi1.Saper definire il linguaggio di programmazione

Java e le sue caratteristiche.2.Interagire con l’ambiente di sviluppo:

il Java Development Kit 3.Saper digitare, compilare e mandare in

esecuzione una semplice applicazione

Page 8: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Cos’è JAVA? (1.1)

Java è un linguaggio orientato agli oggetti (object oriented), ovvero supporta i paradigmidell’incapsulamento, dell’ereditarietà e del polimorfismo.

Inoltre si tratta di un linguaggio in continua evoluzione

Page 9: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Breve storia di Java (1.1)

Java ha visto la luce a partire da ricerche effettuate alla Stanford University all’inizio degli anni Novanta.

Già in questo Java si differenzia da molti altri importanti linguaggi, nati per volere di una multinazionale allo scopo di conquistare nuove fette di mercato.

Nello sviluppo di Java ci si impose invece di creare un “super-linguaggio” che superasse i limiti e i difetti di altri linguaggi. Più semplicemente ci si impose di creare il “linguaggio ideale”.

Page 10: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

• 1995: Nasce ufficialmente JAVA. Per la verità non si trattava di uno strumento molto performante, ma la sua nascita dimostrò al mondo che con Java si poteva iniziare a programmare per Internet.

• Nel nuovo millennio la tecnologia Java ha conquistato nuove nicchie di mercato come le smart card, i telefoni cellulari e il digitale terrestre. Queste conquiste sono sicuramente state un successo. Java ha infatti dato un grosso impulso alla diffusione di questi beni di consumo negli ultimi anni.

Page 11: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Libreria e standardizzazione (1.1)

Java possiede un’enorme libreria di classi standard, ottimamente documentate. Ciò rende Java un linguaggio di alto livello e permette anche ai neofiti di creare applicazioni complesse in breve tempo.

Per esempio, è piuttosto semplice gestire finestre di sistema (interfacce grafiche utente), collegamenti a database e connessioni di rete. E questo indipendentemente dalla piattaforma su cui si sviluppa.

Inoltre, grazie alle specifiche di Sun, non esisteranno per lo sviluppatore problemi di standardizzazione, come compilatori che compilano in modo differente.

Page 12: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Indipendenza dall’architettura (1.1)

Grazie al concetto di macchina virtuale ogni applicazione, una volta compilata, potrà essere eseguita su una qualsiasi piattaforma (per esempio un PC con sistema operativo Windows o una workstation Unix).

Questa è sicuramente la caratteristica più importante di Java. Infatti, nel caso in cui si debba implementare un programma destinato a diverse piattaforme, non ci sarà la necessità di doverlo convertire radicalmente da questa a quella. E’ evidente quindi che la diffusione di Internet ha favorito e favorirà sempre di più la diffusione di Java.

Page 13: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Java Virtual Machine (JVM) (1.1)

Software che svolge un ruolo da interprete per le applicazioni Java:

- Si scrive il programma in Java (file sorgente) - Lo si compila ( file in linguaggio "bytecode") - La JVM interpreta il bytecode ed facendo sì che il

nostro programma possa andare in esecuzione. Da quando ha visto la luce Java, i browser più diffusi

implementano al loro interno una versione della JVM, capace di mandare in esecuzione le applet Java.

Page 14: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Si parla di "macchina virtuale" perché in pratica questo software è stato implementato per simulare un hardware. Si potrebbe affermare che “il linguaggio macchina sta ad un computer come il bytecode sta ad una Java Virtual Machine”.

Oltre che permettere l’indipendenza dalla piattaforma, la JVM permette a Java di essere un linguaggio multithreaded (caratteristica di solito tipica dei sistemi operativi), ovvero capace di mandare in esecuzione più processi in maniera parallela.

Inoltre offre meccanismi di sicurezza molto potenti, la "supervisione" del codice da parte del Garbage Collector, validi aiuti per gestire codice al runtime e tanto altro…

Page 15: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Ambiente di sviluppo (1.2)Per scrivere un programma Java, abbiamo bisogno di:1. Un programma che permetta di scrivere il codice, cioè un

Editor Notepad, EJE, Eclipse, Jcreator

2. Il Java Development Kit versione Standard Edition (da ora in poi JDK). E‘ scaricabile gratuitamente sul sito di riferimento dello sviluppatore Java: http://java.sun.com, con le relative note d’installazione e documentazione. Il JDK offre tutto l'occorrente per lavorare in modo completo. Infatti implementa una suite di applicazioni, come un compilatore, una JVM, un formattatore di documentazione, un'altra JVM per interpretare applet, un generatore di file JAR (Java ARchive) e così via.

Page 16: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Comandi base per interagire con la riga di comando di Windows (1.2)

Il sistema operativo Dos, non ha interfaccia grafica a finestre.

Per navigare tra le cartelle, o per fare un qualsiasi altro tipo di operazione sui file, bisogna digitare un comando.

Ogni comando descritto deve essere seguito dalla pressione del tasto “invio” (“enter”) sulla tastiera, per avere effetto.

Page 17: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Comando Spiegazionecd nomeCartella Spostamento in una cartella contenuta nella cartella in cui ci si

trova

cd.. Spostamento nella cartella che contiene la cartella in cui ci sitrova.

dir Lista il contenuto della cartella in cui ci si trova conun allineamento verticale

dir/w Lista il contenuto della cartella in cui ci si trova con unallineamento orizzontale.

dir/p Lista il contenuto della cartella in cui ci si trova conun allineamento verticale. Se i file da listare eccedono ladisponibilità visiva della finestra vengono visualizzati solo iprimi file che rientrano nella prima finestra. Alla pressione diun qualsiasi ulteriore tasto, il sistema visualizzerà la schermatasuccessiva.

control c (pressione del tasto “ctrl” contemporaneamente al tasto“c”) Interrompe il processo in corso (utile nel caso di processocon ciclo di vita infinito).

Page 18: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Installazione del Java Development Kit (JDK) (1.2)

1. Scaricare il JDK Standard Edition da http://java.sun.com2. Scaricare anche la documentazione (si tratta di un file .zip).3. Impostare la variabile d’ambiente PATH, facendola puntare alla cartella

“bin” del JDK: per i sistemi Windows 2000/XP/NT, eseguire i seguenti passi:– Tasto destro su “Risorse del Computer”, fare clic su “Proprietà”.– Selezionare il tab “Avanzate” e cliccare su “Variabili d’ambiente” . – Tra le “Variabili di sistema” (o se preferite tra le “Variabili utente”),

selezionare la variabile PATH e fare clic su “Modifica”. – Spostarsi nella casella “Valore variabile” e portarsi con il cursore alla fine della

riga. – Se non c’è già, aggiungere un “;”. – Infine aggiungere il percorso alla cartella “bin” del JDK, che dovrebbe essere

simile a : C:\programmi\java\jdk1.6.0\bin4. Fare clic su “OK” e l’installazione è terminata.

Page 19: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Struttura del JDK (1.2)Il JDK (o J2SE) è formato da diverse cartelle:

• bin: contiene tutti i file eseguibili del JDK, ovvero “javac”, “java”, “jar”, “appletviewer” etc…

• demo: contiene varie dimostrazioni di cosa è possibile fare con Java.• include e lib: contengono librerie scritte in C e in Java che sono utilizzate dal JDK.• jre: sta per Java Runtime Environment (JRE). Affinché un’applicazione Java risulti

eseguibile su una macchina, basta installare solo il JRE. Si tratta della JVM con il supporto per le librerie supportate nella versione corrente di Java. Il JRE viene installato in questa cartella automaticamente, quando viene installato il JDK.

• docs: questa cartella deve essere scaricata ed installata a parte e contiene la documentazione della libreria standard di Java, più vari tutorial. Risulterà indispensabile.

• Nella cartella principale, oltre a vari file di servizio (licenza, copyright etc…) ci sarà anche un file di nome “src.zip”. Una volta scompattato “src.zip”, sarà possibile dare uno sguardo ai file sorgenti (i “.java”) della libreria.

Page 20: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Passi dello sviluppatore (1.2)1. Scrittura del codice

Scrivere il codice sorgente dell’ applicazione utilizzando un editor. “Blocco Note” di Windows va benino per adesso.

2. SalvataggioSalvare il nostro file con suffisso .javaN.B. Se si utilizza Notepad bisogna salvare il file chiamandolo nomeFile.java ed includendo il nome tra virgolette, come in "nomeFile.java".

L’utilizzo delle virgolette non è invece necessario per salvare file con EJE. Non è necessario neanche specificare il suffisso .java di default.

3. CompilazioneAprire un Prompt di Dos (prompt dei comandi). Da questo prompt dobbiamo spostarci nella cartella in cui è stato salvato il nostro file sorgente e compilarlo tramite il comando:

javac nomeFile.java

Se la compilazione ha esito positivo, verrà creato un file chiamato “nomeFile.class”. In questo file, come abbiamo già detto, ci sarà la traduzione in bytecode del file sorgente.

4. EsecuzioneScrivere dal prompt Dos il seguente comando:

java nomeFile

Notare che “nomeFile” è senza suffissi.L’applicazione, a meno di errori di codice, verrà eseguita dalla JVM.

Page 21: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Primo approccio al codice (1.3)Applicazione: “CiaoATutti”Il fine di questa applicazione è stampare a video il

messaggio “Ciao a tutti!”Listato1 public class CiaoATutti2 {3 public static void main(String args[])4 {5 System.out.println(“Ciao a tutti!");6 }7 }

N.B. Il file va salvato col nome della sua classe e quindi, in questo caso, col nome “CiaoATutti.java”

Page 22: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Analisi del programma “CiaoATutti” (1.3)

Riga 11 public class CiaoATutti

• Dichiarazione della classe CiaoATutti. • Come vedremo, ogni applicazione Java è costituita da

classi.• Tutto il codice scritto in applicazioni Java, a parte poche

eccezioni (le importazioni di librerie e le dichiarazioni d’appartenenza ad un package), è sempre incluso all’interno della definizione di qualche classe (o strutture equivalenti come le interfacce).

• In seguito capiremo il significato della parola chiave public anteposta alla classe.

Page 23: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Righe 2 e 72 {

…7 }

Questa coppia di parentesi graffe racchiude il blocco di codice che definisce la classe “CiaoATutti”.

Sulle tastiere italiane non esiste un tasto per stampare le parentesi graffe. Possiamo però ottenerne la scrittura in diversi modi, di seguito i più utilizzati:– tenendo premuto il tasto ALT e scrivendo 123 (125) con i tasti

numerici che si trovano sulla destra della vostra tastiera, per poi rilasciare l’ALT;

– tenendo premuti i tasti CONTROL - SHIFT - ALT, e poi il tasto con il simbolo della parentesi quadra aperta "[“ o della parentesi quadra chiusa “]”

Page 24: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Riga 33 public static void main(String args[])

• Questa riga deve essere definita in ogni applicazione Java: Trattasi della dichiarazione del metodo main().

• In Java, il termine “metodo” è sinonimo di “azione” (i metodi saranno trattati in seguito).

• In particolare il metodo main() definisce il punto di partenza dell’esecuzione di ogni programma. La prima istruzione che verrà quindi eseguita in fase di esecuzione, sarà quella che la JVM troverà subito dopo l’apertura del blocco di codice che definisce questo metodo.

• Oltre alla parola "main", la riga 3 contiene altre parole di cui studieremo in dettaglio il significato in seguito. Per adesso il lettore si dovrà accontentare della seguente tabella:

Page 25: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

public Modificatore del metodo. I modificatori sono utilizzati in Java come nel linguaggio umano sono utilizzati gli aggettivi. Se si antepone un modificatore alla dichiarazione di un elemento Java (un metodo, una variabile, una classe etc...), questo cambierà in qualche modo (a seconda del significato del modificatore) le sue proprietà. In questo caso, trattasi di uno specificatore d’accesso che rende di fatto il metodo accessibile anche al di fuori dellaclasse in cui è stato definito.

static Altro modificatore del metodo. La definizione di static è abbastanza complessa. E’ essenziale per la definizione del metodo main().

void E’ il tipo di ritorno del metodo. Significa "vuoto" e quindi questo metodo non restituisce nessun tipo di valore. Il metodo main() non deve mai avere un tipo di ritorno diverso da void.

main Nome o identificatore del metodo

(String args[]) Alla destra dell’identificatore di un metodo: coppia di parentesi tonde che racchiude opzionalmente una lista di parametri (detti anche argomenti del metodo). Il metodo main() vuole sempre come parametro un array di stringhe. Args è l’identificatore (nome) dell’array, ed è l’unica parola che può variare nella definizione del metodo main(), anche se per convenzione si utilizza sempre args.

Page 26: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Righe 4 e 64 {

…6 }

Questa coppia di parentesi graffe racchiude il blocco di codice che definisce il metodo “main”.

Page 27: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Riga 55 System.out.println(“Ciao a tutti!");

• Comando che stamperà su schermo la scritta:Ciao a tutti!

• println() è un metodo che appartiene alla libreria standard di Java cui si deve passare tra parentesi “()” come parametro la stringa che dovrà essere stampata

• Il punto e virgola “;” serve a concludere ogni statement (istruzione).

Page 28: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Salvare, compilare, eseguire (1.3)• Salvare il nostro file in una cartella di lavoro, chiamata ad esempio

"CorsoJava“• Il file va salvato con lo stesso nome (maisucolo e minuscolo compresi)

della classe• Aprire un prompt di Dos e spostarci all’interno della nostra cartella di

lavoro• Accertarsi che il file CiaoATutti.java esiste• Compilare il file mediante il comando:

javac CiaoATutti.java• Se al termine della compilazione non ci viene fornito nessun messaggio

d’errore, vuol dire che la compilazione ha avuto successo.• Notare che nella nostra cartella di lavoro è stato creato un file di nome

CiaoATutti.class: il file sorgente tradotto in bytecode, pronto per essere interpretato dalla JVM.

• Mandare il programma in esecuzione mediante il comando: java CiaoATutti

Page 29: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Possibili messaggi di errore in fase di compilazione (1.3)

• javac: Command not foundIl sistema operativo che non riconosce il comando "javac", il quale dovrebbe chiamare il compilatore del JDK. Probabilmente quest’ultimo non è stato installato correttamente. Un tipico problema è di non aver impostato la variabile d’ambiente PATH

• CiaoATutti.java:5: cannot find symbolsymbol : method printl(java.lang.String)location: class java.io.PrintStreamSystem.out.printl("Ciao a tutti!"); ^abbiamo semplicemente scritto “printl” in luogo di “println”. Il compilatore non può da solo accorgersi che è stato semplicemente un errore di battitura, ed allora ci ha segnalato che il metodo printl() non è stato trovato.

Page 30: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

• CiaoATutti.java:1: class or interface expectedpublic Class CiaoATutti ^Avremo scritto class con lettera maiuscola e quindi la JVM ha richiesto esplicitamente una dichiarazione di classe (o di interfaccia, concetto che chiariremo più avanti). “Class” NON E’ la stessa cosa di “class” in Java:Java è CASE SENSITIVE

• CiaoATutti.java:5: ';' expectedSystem.out.println("Ciao a tutti!") ^abbiamo dimenticato un punto e virgola, che serve a concludere ogni statement (istruzione). Purtroppo il nostro compilatore non sarà sempre così preciso. In alcuni casi, se dimentichiamo un punto e virgola, o peggio dimentichiamo di chiudere un blocco di codice con una parentesi graffa, il compilatore ci potrebbe segnalare l’esistenza di errori inesistenti in successive righe di codice.

Page 31: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

Possibili messaggi relativi alla fase di interpretazione (1.3)

• Exception in thread "main" java.lang.NoClassDefFoundError: CiaoATuttiCaused by: java.lang.ClassNotFoundException: CiaoATutti

at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)Abbiamo definito male il metodo main(). Probabilmente: • abbiamo dimenticato di dichiararlo static o public;• abbiamo scritto male la lista degli argomenti (deve essere String args[]); • abbiamo chiamato “main” il metodo.

Page 32: Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

• Exception in thread "main" java.lang.NoClassDefFoundError: Ciao_ATuttiCaused by: java.lang.ClassNotFoundException: Ciao_ATutti at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)In questo caso la JVM non trova la classe Java contenente il bytecode da

interpretare. Infatti, come si può notare, è stato lanciato il comando "java Ciao_ATutti" invece di "java CiaoATutti "