Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario • • • • Uso dell’ambiente di sviluppo Eclipse API di Java Istruzione di scrittura Istruzione di lettura 16/01/2013 2 Installazione di Eclipse • Eclipse è un Ambiente di sviluppo integrato (IDE -Integrated Development Enviroment) open-source ovvero una piattaforma integrata che consente di gestire l'intero processo di sviluppo di applicazioni Java scaricabile gratuitamente da: http://www.eclipse.org/downloads • E’ necessario scegliere la versione adatta al proprio sistema operativo del file, nel mio caso: “Eclipse Classic 3.7.1, 174 MB • • • • Windows 32 Bit Mac OS X Linux 32bit Linux 64bit 16/01/2013 3 Installazione Eclipse Decomprimere il file scaricato dal sito di riferimento C:\Documents and Settings\Administrator\Desktop\eclipse-SDK-3.7.1-win32.zip Esecuzione Eclipse Per avviare Eclipse entrare nella cartella “eclipse” e avviare il file eclipse.exe Esecuzione Eclipse Ci sarà chiesto di specificare in quale cartella (workspace folder) inserire i nostri progetti. Esecuzione Eclipse Dopo aver dato OK parte Eclipse e inizia a caricare l’interfaccia (Loading Workbench) ……e viene visualizzata la finestra di Welcome ..dopo aver chiuso la finestra di Welcome … troviamo l’interfaccia grafica di Eclipse e siamo pronti per creare un nuovo Progetto Java, scegliendo File->New Project Java File->new Java Project otteniamo una finestra dove possiamo scrivere il nome del nostro progetto Scegliamo il nome esercizi di prova e spingiamo il tasto Finish Otteniamo la finestra con evidenziato il nome del progetto Ora per creare una classe Java scegliamo File->new class Otteniamo questa finestra Inseriamo il nome del programma (classe) e scegliamo di inserire il metodo main Inseriamo il nome e scegliamo di inserire il metodo main spingiamo Finish Esecuzione Eclipse Scrivo la prima istruzione Java nel primo programma: System.out.println("Benvenuto al corso di Java"); Compilo ed eseguo Compilo ed eseguo Compilo ed eseguo Istruzione di scrittura Per scrivere in output "Benvenuti al corso JAVA" è molto semplice! System.out.println ("Benvenuti al corso JAVA"); Per stampare una stringa di caratteri basta utilizzare System.out (oggetto ,predefinito di semplice uso, contenuto nel package java.io, appartenente alla classe (PrintStream) e dirgli di utilizzare il metodo println passandogli come parametro la stringa che segue 16/01/2013 27 Istruzione di scrittura System.out.println ("Benvenuti al corso JAVA"); Chiediamo il servizio di stampa, invocando il metodo println dell’oggetto System.out System.out.println (“Benvenuti oggetto 16/01/2013 dot notation metodo al corso JAVA"); informazioni fornite al metodo: i parametri 28 Primo Programma public class Benvenuto { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Benvenuto al corso di Java"); } } Le classi base non richiedono di importare il package, in quanto queste sono importate automaticamente 16/01/2013 Corso di Fondamenti di Informatica1 30 Programma con un errore in fase di compilazione public class Benvenuto { /** * @param args */ public static void main(string[] args) { // TODO Auto-generated method stub System.out.println("Benvenuto al corso di Java"); } } Le classi base non richiedono di importare il package, in quanto queste sono importate automaticamente 16/01/2013 Corso di Fondamenti di Informatica1 32 Le classi base non richiedono di importare il package, in quanto queste sono importate automaticamente 16/01/2013 Corso di Fondamenti di Informatica1 33 Le classi base non richiedono di importare il package, in quanto queste sono importate automaticamente 16/01/2013 Corso di Fondamenti di Informatica1 34 Le classi base non richiedono di importare il package, in quanto queste sono importate automaticamente 16/01/2013 Corso di Fondamenti di Informatica1 35 Le classi base non richiedono di importare il package, in quanto queste sono importate automaticamente 16/01/2013 Corso di Fondamenti di Informatica1 36 Istruzione di lettura Per leggere i dati da input è un po’ più complicato! In Java ci sono molti modi per leggere stringhe da tastiera 16/01/2013 Corso di Fondamenti di Informatica1 37 Istruzione di lettura Per le operazioni di lettura esiste System.in un oggetto analogo a System.out, che gestisce il flusso dei dati da tastiera. Ma per leggere i dati da input è un po’ più complicato in quanto è necessario prima di tutto definire un oggetto (es. In) in grado di acquisire i dati digitati in input ed inoltre , creare un oggetto (es. Tastiera ) appartenente alla classe BufferedReader, che consente tramite il metodo readLine() di leggere dallo standard input una riga alla volta. 16/01/2013 Corso di Fondamenti di Informatica1 38 Istruzione di lettura InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); String cognome,nome; System.out.print("Immetti cognome: "); cognome=Tastiera.readLine(); System.out.print("Immetti nome: "); nome=Tastiera.readLine(); System.out.println("Sono "+cognome+" "+nome); 16/01/2013 Corso di Fondamenti di Informatica1 39 Creo un nuovo programma (classe java di nome Lettura) 16/01/2013 Corso di Fondamenti di Informatica1 40 Vado a inserire le nuove istruzioni 16/01/2013 Corso di Fondamenti di Informatica1 41 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 42 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 43 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 44 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 45 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 46 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 47 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 48 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 49 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 50 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 51 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 52 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 53 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 54 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 55 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 56 Ottengo il programma dove sono evidenziati gli errori 16/01/2013 Corso di Fondamenti di Informatica1 57 import java.io.*; public class Lettura { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); String cognome,nome; System.out.print("Immetti cognome: "); cognome=Tastiera.readLine(); System.out.print("Immetti nome: "); nome=Tastiera.readLine(); System.out.println("Sono "+cognome+" "+nome); } } 16/01/2013 Corso di Fondamenti di Informatica1 58 Con questa dichiarazione viene creato un import java.io.*; In appartenente alla classe public class Lettura { oggetto InputStreamReader, che consente di /** acquisire dall’input i dati digitati dall’utente (byte-caratteri). * @param args Con questa dichiarazione * @throws IOException viene creato un oggetto */ Tastiera di classe public static void main(String[] args) throws IOException { BufferedReader, che consente tramite il metodo readLine() // TODO Auto-generated method stub di leggere dallo standard InputStreamReader In = new InputStreamReader(System.in); input una riga alla volta. BufferedReader Tastiera = new BufferedReader(In); String cognome,nome; System.out.print("Immetti cognome: "); cognome=Tastiera.readLine(); Per effettuare la lettura di una riga è System.out.print("Immetti nome: "); necessario dichiarare una variabile di nome=Tastiera.readLine(); classe stringa. System.out.println("Sono "+cognome+" "+nome); } } 16/01/2013 59 Input da tastiera Lo standard input di un computer è visto attraverso l’oggetto predefinito System.in Questo oggetto mette a disposizione la classe InputStreamReader a partire da questo oggetto si possono creare nuovi oggetti di tipo BufferedReader con maggiori funzionalità • La classe InputStreamReader Un InputStreamReader converte una sequenza di byte in una sequenza di caratteri in accordo con uno specifico sistema di codifica. • La classe BufferedReader Un BufferedReader legge una sequenza di caratteri, la memorizza in un buffer in modo da fornire funzioni per la lettura di intere linee. 1. InputStreamReader In = new InputStreamReader(System.in); 2. BufferedReader Tastiera = new BufferedReader(In); • Dopo queste operazioni posso utilizzare l’oggetto Tastiera e il metodo readLine() in grado di restituirmi una linea da tastiera (tutti i caratteri immessi fino alla pressione di un fine linea) sotto forma di stringa. • String nome = Tastiera.readLine(); 16/01/2013 60 Input In Java ci sono molti modi per leggere stringhe da tastiera. Il più semplice è quello che fa uso del metodo predefinito showInputDialog presente nella classe JOptionPane, che fa parte della libreria swing (che pertanto va importata). Usando tale metodo l'input da tastiera viene letto (in modo più semplice) attraverso una finestra di dialogo (pag.37 testo). 16/01/2013 61 16/01/2013 Corso di Fondamenti di Informatica1 62 Input Le istruzioni di lettura sono: String nome = JOptionPane.showInputDialog("Inserisci nome"); String cognome = JOptionPane.showInputDialog("Inserisci cognome"); ma richiedono di importare la libreria javax.swing.* : import javax.swing.* 16/01/2013 63 16/01/2013 Corso di Fondamenti di Informatica1 64 16/01/2013 Corso di Fondamenti di Informatica1 65 16/01/2013 Corso di Fondamenti di Informatica1 66 16/01/2013 Corso di Fondamenti di Informatica1 67 16/01/2013 Corso di Fondamenti di Informatica1 68 16/01/2013 Corso di Fondamenti di Informatica1 69 16/01/2013 Corso di Fondamenti di Informatica1 70 import javax.swing.*; public class LetturaG { /** Con questa dichiarazioni * @param args viene importata la classe */ JOptionPane dalla libreria public static void main(String[] args) { javax.swing // TODO Auto-generated method stub String nome = JOptionPane.showInputDialog("Inserisci nome"); String cognome = JOptionPane.showInputDialog("Inserisci cognome"); System.out.println("Ciao "+cognome+" "+nome); } } 16/01/2013 crea una finestra di dialogo avente come messaggio "Inserisci nome“ attraverso la quale legge una stringa da tastiera e restituisce (il Corso di Fondamenti di Informatica1 71 riferimento a) tale stringa alla variabile nome import javax.swing.*; public class LetturaG { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String nome = JOptionPane.showInputDialog("Inserisci nome"); String cognome = JOptionPane.showInputDialog("Inserisci cognome"); System.out.println("Ciao "+cognome+" "+nome); } Il metodo della classe JOptionPane: } showInputDialog(String messaggio) ad esempio JOptionPane.showInputDialog("Inserisci nome") crea una finestra come questa e restituisce la stringa inserita in questa form dall'utente Nella variabile cognome 16/01/2013 Corso di Fondamenti di Informatica1 72 utilizziamo swing anche per l’output 16/01/2013 Corso di Fondamenti di Informatica1 73 Basta sostituire l’istruzione: System.out.println("Ciao "+cognome+" "+nome); con String testo = "Ciao "+cognome+" "+nome; JOptionPane.showMessageDialog(null,testo); } } 16/01/2013 Corso di Fondamenti di Informatica1 74 16/01/2013 Corso di Fondamenti di Informatica1 75 16/01/2013 Corso di Fondamenti di Informatica1 76 import javax.swing.JOptionPane; public class LetturaescritturaG { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String nome = JOptionPane.showInputDialog("Inserisci nome"); String cognome = JOptionPane.showInputDialog("Inserisci cognome"); String testo = "Ciao "+cognome+" "+nome; JOptionPane.showMessageDialog(null,testo); } 16/01/2013 } crea una finestra di dialogo attraverso la quale stampa contenuto della stringa testo Corso di Fondamenti di Informatica1 77 il 78 API di Java Java è un linguaggio orientato agli oggetti basato sulla utilizzazione di packages (detti API - Application Programming Interface di Java) contenenti insieme di classi e oggetti con funzionalità affini. 79 Cosa abbiamo imparato finora? • Come scaricare Eclipse: http://www.eclipse.org/downloads ed installarlo. • Creare su Eclipse un nuovo progetto Java: File->New Project Java • Creare una nuova classe Java: File->new class ricordandoci di inserire il metodo main. • Compilare ed eseguire il programma. 16/01/2013 80 • Inserire un’istruzione di scrittura: System.out.println (“ "); • Inserire un’istruzione di lettura: InputStreamReader In = new InputStreamReader(System.in); BufferedReader Tastiera = new BufferedReader(In); o String nome = JOptionPane.showInputDialog("Inserisci nome"); String cognome = JOptionPane.showInputDialog("Inserisci cognome"); • Come poter utilizzare solo alcune classi di un package: import java.io.BufferedReader; import java.io.IOException; o tutte le classi: import java.io.*; import javax.swing.*; 16/01/2013 81 Questionario 1)Cosa contiene un file .class? □ Codice nativo; □ Programmi sorgente; □ Bytecodes; □ JVM. 2)Lo stesso file .class può essere eseguito sia su Microsoft Windows che su Linux, che Mac OS? □ No,mai; □ Si; □ Lo stesso file può essere eseguito su Microsoft Windows che su Linux, ma non su Mac OS. 3)Che tipo di piattaforma è Java? □ E’ una piattaforma operativa; □ E’ una piattaforma hardware e software; □ E’ una piattaforma hardware; □ E’ una piattaforma software. 16/01/2013 82 4) Quante sono le componenti di una piattaforma Java? □ Due, le API e le servlet; □ Due, La JVM e le servlet; □ Due, la JVM e le API; □ Una, la JVM. 5) Cosa sono i packages? □ Librerie di metodi; □ Librerie di file; □ Librerie di testi; □ Librerie di classi. 6)Quali delle seguenti affermazioni sulla piattaforma EclipseMe è corretta? □ EclipseMe è un programma autonomo che interagisce con un altro programma per ampliarne le funzioni; □ EclipseMe non permette di creare le Midlet; □ EclipseMe dopo aver creato il programma sorgente, consente di emulare il funzionamento tramite il Default ColorPhone; □ EclipseMe permette di sviluppare codice solo in Java. 16/01/2013 83 7) Quale tipo di codice permette di sviluppare la piattaforma integrata Eclipse? □ Matlab; □ Java, C/C++; □ Fortran 95 e C; □ Java, Javascript, JDBC e DOTNET. 8)In Java, i programmi sorgenti, scritti in formato testo dove sono contenuti? □ In file con estensione .java; □ In file con estensione .html; □ In file con estensione .javax; □ In file con estensione .class. 9) Si può applicare lo stesso file Eclipse IDE for Java Developers (92 MB) a qualsiasi tipo di sistema operativo? □ No, per ogni sistema operativo bisogna scegliere la versione più adatta; □ No, per il sistema operativo Linux c’è una versione apposita; □ Si; □ No, per il sistema operativo MacOs c’è una versione apposita. 16/01/2013 84 10)Cosa contengono le API di Java? □ Insieme di oggetti utili per la programmazione; □ Insieme di classi e oggetti utili per la programmazione; □ Insieme di classi utili per la programmazione; □ Insieme di stringhe utili per la programmazione. 11)Cosa mi permette di fare l’istruzione: “ import java.io.;”? □ Nulla l’istruzione è errata; □ Permette di usare tutte le classi di un package; □ Permette di usare tutti gli oggetti di un package; □ Permette di inserire dati; 12)Per stampare una stringa di caratteri quale istruzione di scrittura devo utilizzare? □ System.out.Println(“ ”); □ system.out.println(“ ”); □ System.out.(“ ”); □ System.out.println(“ ”); 16/01/2013 85 13) Che cosa rappresentano nell’istruzione System.in la parola chiave in? □ Una classe; □ Un metodo; □ Un oggetto; □ Un’istruzione. 14)Nell’istruzione di scrittura cosa rappresenta out? □ Una classe; □ Un metodo; □ Un oggetto; □ Un’istruzione. 15)Mentre System? □ Una classe; □ Un metodo; □ Un oggetto; □ Un’istruzione 16/01/2013 86 16)Cosa indica l’istruzione:“String[] args”? □ Indica il tipo dei parametri che vengono passati al programma dall'esterno per un'eventuale elaborazione; □ Indica il tipo dei parametri che vengono passati alla classe dall'esterno per un'eventuale elaborazione; □ Indica il tipo di oggetti che vengono passati al programma dall'esterno per un'eventuale elaborazione. □ Indica il tipo dei parametri che vengono passati al metodo dall'esterno per un'eventuale elaborazione. 17)Nelle classi base dobbiamo importare il package? □ Si sempre; □ No sono importate automaticamente; □ Solo se lo richiede la classe. 18) Quale di questi metodi permette di leggere stringhe da tastiera? □ showInputDialog; □ main; □ throw; □ JOptionPane. 16/01/2013 87 19) Analizzare il seguente programma: public class Esempio { public static void main(String[] args) throws IOException { String nome = JOptionPane.showInputDialog("Inserisci nome"); String cognome = JOptionPane.showInputDialog("Inserisci cognome"); System.out.println(“ Buongiorno ” +cognome+ “ ”+nome); } } Cosa visualizza in uscita? □ Una finestra di dialogo che chiederà di inserire prima il nome e poi il cognome; □ Un messaggio di errore; □ Una finestra di dialogo che chiederà di inserire prima il cognome e poi il nome; □ Un messaggio di Buongiorno sullo schermo. 16/01/2013 88 20)Quale libreria bisogna importare per la classe JOptionPane? □ javax.*; □ java.io.*; □ javax.swing.*; □ java.swing.*; 21)Si può utilizzare la libreria swing anche per avere l’output? Quale istruzione bisogna scrivere? □ Si, scrivendo: String prova = "Ciao "+cognome+" "+nome; JOptionPane.showMessageDialog(null, prova);; □ Si, scrivendo: int prova = "Ciao "+cognome+" "+nome; JOptionPane. (null, prova);; □ Si, scrivendo: System.out.println("Ciao "+cognome+" "+nome);; □ No può essere utilizzato solo per inserire dati da tastiera. 16/01/2013 89 22) Le riga di programma JOptionPane.showMessageDialog(null, prova); a cosa serve? □ Crea una finestra di dialogo vuota; □ Crea una finestra di dialogo attraverso la quale stampa il contenuto della stringa null; □ Crea una finestra di dialogo attraverso la quale stampa il contenuto della stringa prova; □ Crea una finestra di dialogo in cui bisogna inserire prima il nome e poi il cognome da tastiera. 16/01/2013 90 Esercizi • Scrivere una classe java Ciao che stampi la stringa “Ciao a tutti". • Scrivere una classe java Dati, che permetta di inserire da tastiera nome, cognome, città e data di nascita. 16/01/2013 91