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

of 32 /32
Java 5 (Tiger) Programmazione “Object Oriented” Le basi del linguaggio

Embed Size (px)

Transcript of Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio.

  • Slide 1
  • Java 5 (Tiger) Programmazione Object Oriented Le basi del linguaggio
  • Slide 2
  • Bibliografia http://www.claudiodesio.com Manuale di Java 6, autore: Claudio De Sio Cesari, editore: Hoepli
  • Slide 3
  • Editor EJEeditor Java open source creato da Claudio De Sio Cesari: Semplice da utilizzare, intuitivo, e non richiede prerequisiti particolari Scaricabile gratuitamente da: http://www.claudiodesio.com http://sourceforge.net/projects/eje http://www.claudiodesio.com http://sourceforge.net/projects/eje Eclipse: Scaricabile gratuitamente da: http://www.eclipse.org http://www.eclipse.org
  • Slide 4
  • Convenzioni di scrittura Courier New Stile utilizzato per scrivere parti di codice di Java javac Pippo.java stile utilizzato per le frasi che appaiono nella console
  • Slide 5
  • Organizzazione file raccogliere in ununica 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
  • Slide 6
  • 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, lambiente di sviluppo. Consultazione della documentazione ufficiale. Obiettivo: possedere tutte le carte in regola per iniziare a programmare in Java.
  • Slide 7
  • Unit 1 Obiettivi 1.Saper definire il linguaggio di programmazione Java e le sue caratteristiche. 2.Interagire con lambiente di sviluppo: il Java Development Kit 3.Saper digitare, compilare e mandare in esecuzione una semplice applicazione
  • Slide 8
  • Cos JAVA? (1.1) Java un linguaggio orientato agli oggetti (object oriented), ovvero supporta i paradigmi dellincapsulamento, dellereditariet e del polimorfismo. Inoltre si tratta di un linguaggio in continua evoluzione
  • Slide 9
  • Breve storia di Java (1.1) Java ha visto la luce a partire da ricerche effettuate alla Stanford University allinizio 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.
  • Slide 10
  • 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.
  • Slide 11
  • Libreria e standardizzazione (1.1) Java possiede unenorme 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.
  • Slide 12
  • Indipendenza dallarchitettura (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.
  • Slide 13
  • 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.
  • Slide 14
  • 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 lindipendenza 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
  • Slide 15
  • 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 dinstallazione 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.
  • Slide 16
  • 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.
  • Slide 17
  • ComandoSpiegazione cd nomeCartellaSpostamento in una cartella contenuta nella cartella in cui ci si trova cd..Spostamento nella cartella che contiene la cartella in cui ci si trova. dirLista il contenuto della cartella in cui ci si trova con un allineamento verticale dir/wLista il contenuto della cartella in cui ci si trova con un allineamento orizzontale. dir/pLista il contenuto della cartella in cui ci si trova con un allineamento verticale. Se i file da listare eccedono la disponibilit visiva della finestra vengono visualizzati solo i primi file che rientrano nella prima finestra. Alla pressione di un qualsiasi ulteriore tasto, il sistema visualizzer la schermata successiva. control c(pressione del tasto ctrl contemporaneamente al tasto c) Interrompe il processo in corso (utile nel caso di processo con ciclo di vita infinito).
  • Slide 18
  • Installazione del Java Development Kit (JDK) (1.2) 1.Scaricare il JDK Standard Edition da http://java.sun.comhttp://java.sun.com 2.Scaricare anche la documentazione (si tratta di un file.zip). 3.Impostare la variabile dambiente 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 dambiente. 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\bin 4.Fare clic su OK e linstallazione terminata.
  • Slide 19
  • 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 unapplicazione 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.
  • Slide 20
  • 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.Salvataggio Salvare il nostro file con suffisso.java N.B. Se si utilizza Notepad bisogna salvare il file chiamandolo nomeFile.java ed includendo il nome tra virgolette, come in "nomeFile.java". Lutilizzo delle virgolette non invece necessario per salvare file con EJE. Non necessario neanche specificare il suffisso.java di default. 3.Compilazione Aprire 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.Esecuzione Scrivere dal prompt Dos il seguente comando: java nomeFile Notare che nomeFile senza suffissi. Lapplicazione, a meno di errori di codice, verr eseguita dalla JVM.
  • Slide 21
  • Primo approccio al codice (1.3) Applicazione: CiaoATutti Il fine di questa applicazione stampare a video il messaggio Ciao a tutti! Listato 1 public class CiaoATutti 2 { 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
  • Slide 22
  • Analisi del programma CiaoATutti (1.3) Riga 1 1 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 dappartenenza ad un package), sempre incluso allinterno della definizione di qualche classe (o strutture equivalenti come le interfacce). In seguito capiremo il significato della parola chiave public anteposta alla classe.
  • Slide 23
  • Righe 2 e 7 2 { 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 lALT; tenendo premuti i tasti CONTROL - SHIFT - ALT, e poi il tasto con il simbolo della parentesi quadra aperta "[ o della parentesi quadra chiusa ]
  • Slide 24
  • Riga 3 3 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 dellesecuzione di ogni programma. La prima istruzione che verr quindi eseguita in fase di esecuzione, sar quella che la JVM trover subito dopo lapertura 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:
  • Slide 25
  • 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 daccesso che rende di fatto il metodo accessibile anche al di fuori della classe 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 dellidentificatore 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 lidentificatore (nome) dellarray, ed lunica parola che pu variare nella definizione del metodo main(), anche se per convenzione si utilizza sempre args.
  • Slide 26
  • Righe 4 e 6 4 { 6 } Questa coppia di parentesi graffe racchiude il blocco di codice che definisce il metodo main.
  • Slide 27
  • Riga 5 5 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).
  • Slide 28
  • 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 allinterno 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 derrore, 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
  • Slide 29
  • Possibili messaggi di errore in fase di compilazione (1.3) javac: Command not found Il sistema operativo che non riconosce il comando "javac", il quale dovrebbe chiamare il compilatore del JDK. Probabilmente questultimo non stato installato correttamente. Un tipico problema di non aver impostato la variabile dambiente PATH CiaoATutti.java:5: cannot find symbol symbol : method printl(java.lang.String) location: class java.io.PrintStream System.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.
  • Slide 30
  • CiaoATutti.java:1: class or interface expected public 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: ';' expected System.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 lesistenza di errori inesistenti in successive righe di codice.
  • Slide 31
  • Possibili messaggi relativi alla fase di interpretazione (1.3) Exception in thread "main" java.lang.NoClassDefFoundError: CiaoATutti Caused 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.
  • Slide 32
  • Exception in thread "main" java.lang.NoClassDefFoundError: Ciao_ATutti Caused 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 "