System.out - Dipartimento di Informatica e Automazione

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