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