http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 06 Programmazione Java Alfonso Miola Ottobre 2011
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 1
Corso di Laurea Ingegneria Informatica
Fondamenti di Informatica
Dispensa 06
Programmazione Java
Alfonso Miola
Ottobre 2011
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 2
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 3
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 4
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 5
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 6
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 7
. . . 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 8
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 9
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 10
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 11
. . . 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 12
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 13
. . . 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 14
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 15
System.out
L’applicazione ha bisogno di visualizzare una
frase sullo schermo
l’applicazione può utilizzare l’oggetto System.out
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)
System.out
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 16
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 17
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 18
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 19
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 20
Corpo della classe
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
/* 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 21
Il metodo main . . .
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 corpodel metodo e sono delimitati da parentesi graffe { e }
/* 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 22
. . . Il metodo main
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
/* 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 23
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 24
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 25
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 26
Interazione fra oggetti
Questo ―Diagramma di collaborazione‖, nel linguaggio UML, descrive i messaggi scambiati quando un utente richiede al calcolatore di eseguire l’applicazione ScrittoreSulloSchermo
rappresenta
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 27
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 28
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 29
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 30
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 31
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 32
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 33
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 34
Diagramma di collaborazione
per RadiceQuadrata
«applicazione»
RadiceQuadrata
main(...)
1: main(…)
System.out
println(double x)
1.2: println(radice)
Math
double sqrt(double n)
1.1: radice = sqrt(144)
Commentare questo diagramma
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 35
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 36
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 37
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 38
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 39
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
"estate" : Stringstagione
String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 40
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";
"estate" : Stringstagione
String
"inverno" : String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 41
Un oggetto può essere
referenziato da più variabili
È possibile che un oggetto sia
contemporaneamente referenziato da più variabiliString s, t;
s = "estate";
t = s; // copia in t il riferimento memorizzato da s
"estate" : Strings
String
String
t
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 42
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";
"estate" : Strings
String
String
t "inverno" : String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 43
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 44
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 45
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 46
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 47
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 Stringcomposto 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 48
Concatenazione di stringhe
String s, t, u;
s = "auto";
t = "mobile";
u = s.concat(t); // u vale (referenzia) "automobile"
"auto" : Strings
String
String
t "mobile" : String
String
u
String
u "automobile" : String
http://www.dia.uniroma3.it/~java/fondinf/ Programmazione Java 49
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 50
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 51
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 52
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 53
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 54
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 55
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 56
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 57
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 58
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 59
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 60
Il metodo main
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
/* 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 61
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 62
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 63
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 64
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