Corso di Laurea Ingegneria Informatica
Fondamenti di Informatica
Dispensa 06
Programmazione Java
Alfonso Miola
Ottobre 2012
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
1
Contenuti
Il linguaggio Java
Applicazioni Java e il metodo main
Esempi di applicazioni
Scrittore sullo schermo
Radice quadrata
Esempi di classi e oggetti Java
Gli oggetti String, i loro metodi e le possibili
applicazioni
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
2
Prerequisiti
Questo capitolo presuppone la conoscenza
degli argomenti già trattati nelle
precedenti lezioni di questo corso e
riportati nelle rispettive dispense, con
particolare riferimento al capitolo 1 e al
capitolo 2 del libro di testo
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
3
Il linguaggio di programmazione Java
Java è
un linguaggio di programmazione
• un linguaggio di programmazione orientato agli oggetti
indipendente dalla piattaforma
• realizzato per tipi diversi di calcolatori
– write once, run everywhere
realizzato per le reti di calcolatori
• supportato dai principali browser Web
• sviluppato dalla Sun Microsystems, e rilasciato nel 1995
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
4
Java è un linguaggio di programmazione
Ogni linguaggio di programmazione, e quindi anche
Java, è caratterizzato da:
la sintassi - l’insieme delle regole grammaticali
per scrivere i programmi con quel linguaggio
la semantica - l’insieme delle regole che
stabiliscono il significato dei programmi, ovvero
il modo in cui i programmi devono essere
interpretati ed eseguiti dal calcolatore
Una successiva dispensa tratterà
questi argomenti in dettaglio
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
5
Java è orientato agli oggetti . . .
Nel paradigma di programmazione orientato
agli oggetti
l’esecuzione di un programma consiste nella
cooperazione di un insieme di oggetti
un programma è la descrizione di un insieme di
oggetti
Il progetto (la descrizione) di un oggetto è
definito da una classe
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
6
. . . Java è orientato agli oggetti
In Java, l’unità fondamentale di
programmazione è la classe
Java permette di definire classi
una classe può essere il progetto di un singolo
oggetto (un oggetto classe) o di oggetti (oggetti
istanza) di una certa tipologia
una classe implementa il comportamento e lo stato
di una certa tipologia di oggetti
• le operazioni sono implementate da metodi
• le proprietà sono rappresentate da variabili
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
7
Programmi Java
In Java, ogni programma è un oggetto:
esistono due tipi di programmi Java
applicazioni Java
• un programma a sé stante, che viene eseguito da un
interprete Java, chiamato macchina virtuale Java (o JVM,
Java Virtual Machine)
applet Java
• un programma immerso in una pagina web, che viene
eseguito dalla JVM di un browser web
Un programma Java consiste nella definizione
di un insieme di classi
una classe che modella il programma (applicazione)
una classe per ciascuna tipologia di oggetti
necessari per l’esecuzione del programma
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
8
Applicazioni Java
Una applicazione è una classe applicazione
che definisce un oggetto classe e che sa eseguire
esclusivamente l’operazione speciale main
In una applicazione Java
l’applicazione è rappresentata da un oggetto classe
l’utente dell’applicazione può interagire solo con alcuni degli
oggetti coinvolti dall’applicazione
l’utente dell’applicazione può sicuramente interagire con
l’oggetto classe che rappresenta l’applicazione
l’utente dell’applicazione può richiedere all’oggetto classe
che rappresenta l’applicazione solo di eseguire l’operazione
speciale main
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
9
API di Java . . .
L’ambiente di sviluppo per Java è corredato
da un numeroso insieme di classi e oggetti
predefiniti - le API (Application Programming
Interface) di Java
le API sono in insieme di elementi standard di
programmazione per la gestione di aspetti
applicativi di carattere generale — input-output,
stringhe, grafica, ...
• le classi delle API sono raggruppate in “librerie” —
chiamate package
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
10
. . . API di Java
Le API rappresentano quindi un supporto al
programmatore che gli permettono di
concentrarsi sullo sviluppo di classi e oggetti
relativi alle applicazioni di interesse
Gli oggetti e le classi delle API di Java
possono essere utilizzati conoscendone
l’interfaccia
l’interfaccia degli elementi delle API di Java è
documentata da un insieme di pagine web
disponibile al programmatore
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
11
Programmazione in Java . . .
La programmazione in Java coinvolge i
seguenti aspetti
conoscenza del linguaggio Java
• ovvero, conoscenza della sintassi e della semantica di
Java
uso di oggetti e classi predefiniti (ad esempio,
definiti nelle API di Java o in altri package a
disposizione) di cui si conoscano le interfacce
definizione di nuove classi Java
• per implementare programmi, oggetti classe o tipologie di
oggetti istanza necessari alla soluzione del problema
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
12
. . . Programmazione in Java
Viene ora mostrata una panoramica sulla
programmazione in Java
Come nell’apprendimento dei linguaggi
naturali anche qui si incomincia imparando a
“leggere”
viene mostrato come leggere alcuni programmi
Java, di complessità via via crescente
Solo successivamente impareremo a
“scrivere” e quindi a . . . “parlare Java”
alla progettazione e scrittura di programmi Java
sono dedicati molti dei successivi capitoli
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
13
Scrittore sullo schermo
Si vuole scrivere una applicazione Java che
visualizza sullo schermo le seguenti frasi
Questo corso
introduce i concetti di
base dell'informatica
Più precisamente, si vuole definire una classe
che è il progetto di un oggetto classe che
è una classe applicazione
sa eseguire una operazione il cui effetto è quello di
visualizzare quelle tre frasi sullo schermo
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
14
System.out
L’applicazione ha bisogno di visualizzare una
frase sullo schermo
l’applicazione può utilizzare l’oggetto System.out
System.out
•println(String frase)
System.out è un oggetto definito dalle API di Java
System.out modella lo schermo del calcolatore
System.out sa eseguire una operazione println
che visualizza una frase (che è il parametro
dell’operazione)
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
15
L’applicazione ScrittoreSulloSchermo
/* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
16
ScrittoreSulloSchermo è una classe
/* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
La definizione di una classe
• è introdotta dalla parola class
• è seguita dal nome della classe — ScrittoreSulloSchermo
La classe ScrittoreSulloSchermo è una classe
applicazione e quindi è una classe statica
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
17
Commenti
/* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
La frase delimitata da /* e */ è un commento
i commenti non sono operazioni e quindi non hanno nessuna
influenza sul significato dei programmi - ma sono molto utili per
documentare i programmi – quindi più ce ne sono e meglio è !
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
18
Definizione di una classe
/* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
I dettagli della definizione di una classe sono chiamati
il corpo della classe
il corpo della classe è delimitato da parentesi graffe { e } ed è
scritto dopo il nome della classe
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
19
Corpo della classe
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println("base dell'informatica");
}
}
Il corpo della definizione di una classe contiene, tra le
altre cose, i metodi della classe per implementare le
operazioni
La classe ScrittoreSulloSchermo definisce un unico
metodo - di nome main - che è un metodo speciale : è
l’unica operazione la cui esecuzione può essere
richiesta dall’utente di una classe applicazione
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
20
Il metodo main . . .
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println("base dell'informatica");
}
}
Nella definizione di un metodo
c’è il nome del metodo — main
ci sono alcune parole (misteriose, per ora) che precedono e
che seguono il nome del metodo
• ad esempio, la parola static indica che il metodo è un metodo di classe
i dettagli della definizione di un metodo sono chiamati il corpo
del metodo e sono delimitati da parentesi graffe { e }
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
21
. . . Il metodo main
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println("base dell'informatica");
}
}
Il corpo del metodo main
è composto da un blocco che è una sequenza di istruzioni,
separate da punto e virgola ; e delimitata da parentesi graffe
{e}
ciascuna istruzione del metodo specifica una azione che
l’oggetto ScrittoreSulloSchermo deve svolgere
quando l’oggetto ScrittoreSulloSchermo riceve il messaggio
main(...), deve eseguire il metodo main, ovvero deve eseguire
le istruzioni scritte nel corpo del metodo main
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
22
Istruzioni
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println("base dell'informatica");
Le tre istruzioni nel corpo del metodo main hanno una
struttura simile
ad esempio, nella prima istruzione
• System.out è il nome dell’oggetto (predefinito) che modella lo
schermo del calcolatore
• println("Questo corso") è il messaggio che si vuole inviare a
System.out
• il punto, il punto e virgola, le parentesi e le virgolette hanno il
ruolo di separare le varie parti dell’istruzione
ciascuna di queste tre istruzioni è una istruzione di invio di
un messaggio a un oggetto (o invocazione di metodo)
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
23
Esecuzione di istruzioni e azioni
System.out.println("Questo corso");
. . .
L’esecuzione di una istruzione consiste nello
svolgimento di una o più azioni da parte dell’oggetto
che esegue l’istruzione
ad esempio, l’esecuzione della prima istruzione consiste
nell’invio del messaggio println("Questo corso") dall’oggetto
che esegue l’istruzione (ScrittoreSulloSchermo) all’oggetto
System.out
in corrispondenza della ricezione di questo messaggio,
l’oggetto System.out (lo schermo) visualizza la frase Questo
corso su se stesso
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
24
Esecuzione di un metodo
L’esecuzione di un metodo consiste
nell’esecuzione delle istruzioni scritte nel corpo
del metodo, una alla volta e in sequenza
Quindi, l’esecuzione del metodo main consiste
nell’invio, all’oggetto System.out, di tre
messaggi, in sequenza
in corrispondenza alla ricezione dei tre messaggi, lo
schermo System.out visualizzerà successivamente
su se stesso le tre frasi
Questo corso
introduce i concetti di
base dell’informatica
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
25
Interazione fra oggetti
«applicazione»
ScrittoreSulloSchermo
•println(String frase)
•main(...)
1: main(...)
System.out
1.1: println("Questo corso")
1.2: println("introduce i concetti di")
1.3: println("base dell'informatica")
questa icona rappresenta
l’utente del programma
Questo “Diagramma di collaborazione”, nel
linguaggio UML, descrive i messaggi scambiati
quando un utente richiede al calcolatore di eseguire
l’applicazione ScrittoreSulloSchermo
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
26
Esercizio
Commentare la definizione della seguente
classe
/* Applicazione che visualizza sullo schermo
* la poesia Mattino di Giuseppe Ungaretti. */
class Mattino {
public static void main(String[] args) {
System.out.println("M'illumino");
System.out.println("d'immenso");
}
}
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
27
Esercizio
Ora che abbiamo imparato a leggere proviamo anche
a “scrivere” in Java !
Una lunga tradizione vuole che il primo programma
scritto da un programmatore sia quello che visualizza
sullo schermo la frase Hello, world (che significa
“Ciao, mondo”)
Definire l’applicazione Java CiaoMondo che visualizza
sullo schermo la frase Hello, world
Ovviamente possiamo anche scrivere altro a piacere
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
28
Errori di programmazione
Durante la scrittura di classi è possibile commettere
degli errori di programmazione – ad esempio
la frase scritta non è corretta nel linguaggio di
programmazione (errori grammaticali)
la frase scritta è corretta nel linguaggio di programmazione,
ma il suo significato è diverso da quanto ci si era prefissi
(errori non grammaticali)
Va inoltre osservato che
l’individuazione degli errori grammaticali è solitamente
supportata dagli strumenti di programmazione (in particolare,
dal compilatore)
viceversa, l’individuazione degli errori non grammaticali non
è supportata dagli strumenti di programmazione, ed è quindi
necessario ricorrere a opportune metodologie
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
29
Esempi di errori possibili
/* Applicazione che visualizza sullo
* schermo la poesia Mattino
* di Giuseppe Ungaretti. */
Class Mattino {
public static viod Main(String[] args)
{
System.out.println("M'illumino“];
System.out.Println("di mmenso");
}
}
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
30
Errori comuni
Alcuni possibili errori di programmazione
• omissione o uso errato della punteggiatura
– ad esempio, omettere i punti e virgola — sono solitamente errori
grammaticali, ma non sempre
• uso errato delle parentesi
– ad esempio, dimenticare di chiudere una parentesi graffa
• uso errato delle lettere maiuscole e minuscole
– ad esempio, scrivere Class anziché class (errore grammaticale) —
oppure Main anziché main (errore non grammaticale)
• errori di battitura
– ad esempio, scrivere viod anziché void
• dimenticare parole
• inserire spazi erronei
– ad esempio, scrivere Scrittore Sullo Schermo
• invertire l’ordine delle parole o delle istruzioni
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
31
Calcolo di una radice quadrata
Si vuole scrivere una applicazione Java che
calcola e visualizza la radice quadrata di 144
l’esecuzione di questo programma dovrà
visualizzare sullo schermo il numero 12
L’applicazione farà uso della classe Math, per
calcolare la radice quadrata e della classe
System.out per la visualizzazione del risultato
Math, come System.out e altre classi e
oggetti, è un oggetto predefinito nelle API
(Application Programming Interface) di Java
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
32
L’applicazione RadiceQuadrata
/* Applicazione che calcola e
* visualizza sullo schermo
* la radice quadrata di 144. */
class RadiceQuadrata {
public static void main(String[] args) {
double radice;
radice = Math.sqrt(144);
System.out.println(radice);
}
}
Commentare questa applicazione
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
33
Diagramma di collaborazione
per RadiceQuadrata
1.1: radice = sqrt(144)
1: main(…)
«applicazione»
RadiceQuadrata
Math
double sqrt(double n)
main(...)
1.2: println(radice)
System.out
println(double x)
Commentare questo diagramma
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
34
Stringhe e oggetti String
Una stringa è una sequenza finita di caratteri
le stringhe sono un tipo di dati di uso molto
comune – consentono di rappresentare
informazioni testuali e descrittive
Java supporta la gestione di stringhe
attraverso la classe String del package
java.lang
un oggetto String rappresenta una sequenza finita
di caratteri dell’alfabeto Unicode
gli oggetti String sanno eseguire operazioni utili
per la loro gestione facenti parte dell’interfaccia
della classe
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
35
Stringhe e oggetti String
Il valore (o contenuto) di un oggetto String è
la stringa rappresentata da quell’oggetto
ad esempio, il letterale "calcolatore" è un nome,
cioè denota un oggetto String, il cui valore (stato) è
la stringa calcolatore
"calcolatore" : String
calcolatore
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
36
Letterali stringa
Un letterale String è una stringa racchiusa tra
doppi apici " e "
ad esempio, "calcolatore"
il valore di un letterale String è la stringa racchiusa
tra apici (apici esclusi)
l’uso di un letterale String è equivalente alla
creazione di un oggetto di tipo String
un letterale String è una espressione di tipo String
• vedremo che ogni letterale e ogni espressione ha un tipo
così come tutte le altre componenti linguistiche Java
ad esempio, "calcolatore" è il nome, cioè il
riferimento, di un oggetto di tipo String che ha
come valore la stringa calcolatore
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
37
Variabili e tipi
Come già detto ad ogni variabile deve essere associato
un tipo con una apposita istruzione
Ad esempio per assegnare il tipo dei numeri reali ad una
variabile di nome radice si usa la seguente espressione
double radice
Il tipo double è uno dei tipi primitivi di Java
esso è già predefinito in Java
una variabile di tipo primitivo memorizza un valore
una variabile di tipo double memorizza un valore numero reale
Esistono anche i tipi riferimento
ogni classe definisce un tipo riferimento
una variabile può essere di tipo riferimento e non memorizza un
valore ma un riferimento ad un oggetto della classe
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
38
Uso di variabili riferimento
Essendo String il nome di una classe, è
possibile dichiarare variabili di tipo String
si tratta di variabili riferimento cioè di variabili che
permettono di memorizzare il riferimento a un
oggetto ma non il valore dell’oggetto – che è
memorizzato in un’altra area di memoria
String stagione;
stagione = "estate";
System.out.println(stagione); // visualizza estate
stagione
"estate" : String
String
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
39
Variabili riferimento e assegnazioni
Se a una variabile riferimento (che referenzia
già un oggetto A) viene assegnato il
riferimento a un altro oggetto B
• il riferimento all’oggetto A memorizzato dalla variabile
viene sostituito dal riferimento all’oggetto B e l’oggetto A
continua ad esistere
String stagione;
stagione = "estate";
stagione = "inverno";
stagione
"estate" : String
String
"inverno" : String
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
40
Un oggetto può essere
referenziato da più variabili
È possibile che un oggetto sia
contemporaneamente referenziato da più
variabili
String s, t;
s = "estate";
t = s; // copia in t il riferimento memorizzato da s
s
"estate" : String
String
t
String
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
41
Le variabili sono indipendenti
Le variabili sono indipendenti
una assegnazione a una variabile modifica il valore
di una sola variabile
String s, t;
s = "estate";
t = s; // copia in t il riferimento memorizzato da s
t = "inverno";
s
"estate" : String
String
t
"inverno" : String
String
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
42
Gli oggetti String sono immutabili
Un oggetto String rappresenta una stringa
costante, immutabile
dopo la creazione, il valore di un oggetto String
non può essere modificato
l’unico modo di interagire con un oggetto String è
mediante i metodi della classe String
nessun metodo della classe String modifica
l’oggetto su cui il metodo viene invocato
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
43
Uso di oggetti String
Che cosa è un oggetto String?
dal punto di vista del contenuto informativo, un
oggetto String rappresenta una stringa
dal punto di vista comportamentale, un oggetto
String è un oggetto che sa eseguire un certo
numero di operazioni per la manipolazione di se
stesso
La classe String è usata per rappresentare il
tipo delle stringhe
• un insieme di elementi — le stringhe
• un insieme di operazioni, per la manipolazione degli
elementi di un tale insieme
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
44
Il metodo int length()
Il metodo int length() della classe String
calcola la lunghezza della stringa
la lunghezza di una stringa è il numero di caratteri
della sequenza che costituisce la stringa
Ad esempio, l’espressione
"automobile".length() vale 10
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
45
La stringa vuota
Una stringa vuota è una sequenza vuota di
caratteri
la stringa vuota è un oggetto String di lunghezza
zero
la stringa vuota è denotata dal letterale "“
l’espressione "".length() vale 0
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
46
Il metodo String concat(String x)
La concatenazione è l’operazione che a
partire da due stringhe S e T calcola una
nuova stringa il cui valore è dato dalla
sequenza di caratteri di S seguita dalla
sequenza di caratteri di T
il metodo String concat(String x) della classe
String implementa l’operazione di concatenazione
di stringhe
crea e restituisce un nuovo oggetto String
composto dai caratteri della stringa su cui il
metodo viene invocato seguiti dai caratteri della
stringa argomento x
Ad esempio . . .
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
47
Concatenazione di stringhe
String s, t, u;
s = "auto";
t = "mobile";
s
"auto" : String
String
t
"mobile" : String
String
u
String
u = s.concat(t); // u vale (referenzia) "automobile"
u
"automobile" : String
String
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
48
Posizione dei caratteri in una stringa
Le posizioni dei caratteri di una stringa sono
numerate da sinistra verso destra
il carattere più a sinistra (il primo) ha posizione 0
in una stringa composta da N caratteri, il carattere
più a destra (l’ultimo) ha posizione N – 1
a u t o m o b i l e
0 1 2 3 4 5 6 7 8 9
in generale, l’i-esimo carattere di una stringa
occupa la posizione i–1
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
49
Il metodo
String substring(int inizio, int fine)
Il metodo String substring(int inizio, int fine)
della classe String
(crea e) restituisce un nuovo oggetto String
composto dai caratteri della stringa su cui il
metodo è stato invocato che occupano le posizioni
tra inizio (inclusa) e fine (esclusa)
• detto in altro modo, la stringa restituita comprende i
caratteri tra le posizioni inizio e fine–1 (estremi inclusi)
• ad esempio
String s, t;
s = "automobile";
t = s.substring(2,6); // t vale "tomo"
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
50
Il metodo String substring(int inizio)
Il metodo String substring(int inizio) della
classe String
(crea e) restituisce un nuovo oggetto String che
consiste dei caratteri della stringa su cui il metodo
viene invocato compresi tra quello di posizione
inizio e l’ultimo carattere della stringa (incluso)
ad esempio
String s, t;
s = "automobile";
t = s.substring(4); // t vale "mobile"
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
51
Pre-condizioni delle operazioni
substring
I metodi substring sono soggetti alle seguenti
pre-condizioni
• inizio deve essere maggiore o uguale a zero e minore o
uguale alla lunghezza della stringa
• fine deve essere minore o uguale alla lunghezza della
stringa
• inizio deve essere minore o uguale a fine
In caso di violazione delle pre-condizioni
viene generato un errore al tempo di
esecuzione di tipo
IndexOutOfBoundsException
• ovvero di tipo indice fuori dai limiti
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
52
Esercizio
Cosa visualizza questa applivazione ?
public class JFK {
public static void main(String[] args) {
String first = "John";
String middle = "Fitzgerald";
String last = "Kennedy";
String initials;
String firstInit, middleInit, lastInit;
firstInit = first.substring(0,1);
middleInit = middle.substring(0,1);
lastInit = last.substring(0,1);
initials = firstInit.concat(middleInit);
initials = initials.concat(lastInit);
System.out.println(initials);
}
}
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
53
Altri metodi della classe String
La classe String ha molti metodi,
consideriamone ora alcuni altri, altri ancora
ne vedremo più avanti
String toUpperCase()
• per convertire tutti i caratteri di una stringa in
MAIUSCOLE
• ad esempio "Java".toUpperCase() costruisce la
stringa di valore JAVA
String toLowerCase()
• per convertire tutti i caratteri di una stringa in minuscole
• ad esempio "Java".toLowerCase() costruisce la
stringa di valore java
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
54
Esempio: MaiuscoleMinuscole
public class UpperLowerCase {
public static void main(String[] args) {
String s, upper, lower;
s = "Hello";
upper = s.toUpperCase();
lower = s.toLowerCase();
System.out.println(s);
System.out.print("upper = ");
System.out.println(upper);
System.out.print("lower = ");
System.out.println(lower);
}
}
Questo programma costruisce 3 stringhe distinte (che non vengono
più modificate): la stringa "Hello" iniziale, la stringa "HELLO"
denotata attraverso upper, e la stringa "hello" denotata da lower
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
55
Riepilogo della dispensa
Cosa è un programma Java
Cosa è una applicazione Java
Cosa è il metodo main
Alcuni primi esempi di applicazioni Java
Scrittore sullo schermo
Radice quadrata
Alcuni primi esempi di classi e oggetti
Gli oggetti String con alcuni metodi e le loro possibili
applicazioni
Le successive diapositive sintetizzano quanto visto
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
56
Programmi Java
In Java, ogni programma è un oggetto:
esistono due tipi di programmi Java
applicazioni Java
• un programma a sé stante, che viene eseguito da un
interprete Java, chiamato macchina virtuale Java (o JVM,
Java Virtual Machine)
applet Java
• un programma immerso in una pagina web, che viene
eseguito dalla JVM di un browser web
Un programma Java consiste nella definizione
di un insieme di classi
una classe che modella il programma (applicazione)
una classe per ciascuna tipologia di oggetti
necessari per l’esecuzione del programma
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
57
Applicazioni Java
Una applicazione è una classe applicazione
che definisce un oggetto classe e che sa eseguire
esclusivamente l’operazione speciale main
In una applicazione Java
l’applicazione è rappresentata da un oggetto classe
l’utente dell’applicazione può interagire solo con alcuni degli
oggetti coinvolti dall’applicazione
l’utente dell’applicazione può sicuramente interagire con
l’oggetto classe che rappresenta l’applicazione
l’utente dell’applicazione può richiedere all’oggetto classe
che rappresenta l’applicazione solo di eseguire l’operazione
speciale main
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
58
L’applicazione ScrittoreSulloSchermo
/* Applicazione che visualizza una frase
sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println(“base dell'informatica");
}
}
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
59
Il metodo main
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("Questo corso");
System.out.println("introduce i concetti di");
System.out.println("base dell'informatica");
}
}
Il corpo della definizione di una classe contiene, tra le
altre cose, i metodi della classe per implementare le
operazioni
La classe ScrittoreSulloSchermo definisce un unico
metodo - di nome main - che è un metodo speciale : è
l’unica operazione la cui esecuzione può essere
richiesta dall’utente di una classe applicazione
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
60
L’applicazione RadiceQuadrata
/* Applicazione che calcola e
* visualizza sullo schermo
* la radice quadrata di 144. */
class RadiceQuadrata {
public static void main(String[] args) {
double radice;
radice = Math.sqrt(144);
System.out.println(radice);
}
}
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
61
Stringhe e oggetti String
Una stringa è una sequenza finita di caratteri
le stringhe sono un tipo di dati di uso molto
comune – consentono di rappresentare
informazioni testuali e descrittive
Java supporta la gestione di stringhe
attraverso la classe String del package
java.lang
un oggetto String rappresenta una sequenza finita
di caratteri dell’alfabeto Unicode
gli oggetti String sanno eseguire operazioni utili
per la loro gestione facenti parte dell’interfaccia
della classe
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
62
Metodi della classe String
La classe String ha, tra gli altri, i seguenti
metodi
int length()
String concat(String x)
String substring(int inizio, int fine)
String substring(int inizio)
String toUpperCase()
String toLowerCase()
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
63
Riferimenti al libro di testo
Per lo studio di questi argomenti si fa riferimento al
libro di testo, e in particolare ai capitoli
3 su Oggetti e Java
7 su Leggibilità
9 su Variabili e assegnazione
12 sulle Stringhe
In questa lezione abbiamo omesso gli argomenti
trattati nei seguenti paragrafi
3.2.3 – Perimetro di un triangolo
3.2.4 – Lettura e somma di due numeri interi
3.2.6 – Una classe per istanziare oggetti
Dal 12.5 al 12.10
• Li vedremo tutti più avanti
3.2.5 – Robot in un labirinto
• Che invece non farà parte del programma d’esame
http://www.dia.uniroma3.it/~java/fondinf/
Programmazione Java
64