Sei sulla pagina 1di 64

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

Contenuti
q Il linguaggio Java
q Applicazioni Java e il metodo main
q Esempi di applicazioni
Scrittore sullo schermo
Radice quadrata

q 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

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

Il linguaggio di programmazione Java


qJava
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

Java un linguaggio di programmazione


qOgni linguaggio di programmazione, e quindi anche
Java, caratterizzato da:
la sintassi - linsieme delle regole grammaticali
per scrivere i programmi con quel linguaggio
la semantica - linsieme 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

Java orientato agli oggetti . . .


qNel paradigma di programmazione orientato
agli oggetti
lesecuzione di un programma consiste nella
cooperazione di un insieme di oggetti
un programma la descrizione di un insieme di
oggetti

qIl progetto (la descrizione) di un oggetto


definito da una classe

http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

. . . Java orientato agli oggetti


qIn Java, lunit 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

Programmi Java
qIn 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

qUn 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 lesecuzione del programma
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

Applicazioni Java
qUna applicazione una classe applicazione
che definisce un oggetto classe e che sa eseguire
esclusivamente loperazione speciale main

qIn una applicazione Java


lapplicazione rappresentata da un oggetto classe
lutente dellapplicazione pu interagire solo con alcuni
degli oggetti coinvolti dallapplicazione
lutente dellapplicazione pu sicuramente interagire con
loggetto classe che rappresenta lapplicazione
lutente dellapplicazione pu richiedere alloggetto classe
che rappresenta lapplicazione solo di eseguire loperazione
speciale main
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

API di Java . . .
qLambiente 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
qLe API rappresentano quindi un supporto al
programmatore che gli permettono di
concentrarsi sullo sviluppo di classi e oggetti
relativi alle applicazioni di interesse
qGli oggetti e le classi delle API di Java
possono essere utilizzati conoscendone
linterfaccia
linterfaccia 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 . . .
qLa 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
qViene ora mostrata una panoramica sulla
programmazione in Java
qCome nellapprendimento dei linguaggi
naturali anche qui si incomincia imparando a
leggere
viene mostrato come leggere alcuni programmi
Java, di complessit via via crescente

qSolo 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


qSi vuole scrivere una applicazione Java che
visualizza sullo schermo le seguenti frasi
Questo corso
introduce i concetti di
base dell'informatica

qPi 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
qLapplicazione ha bisogno di visualizzare una
frase sullo schermo
lapplicazione pu utilizzare loggetto 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
delloperazione)
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

15

Lapplicazione 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");
}
}

qLa definizione di una classe


introdotta dalla parola class
seguita dal nome della classe ScrittoreSulloSchermo

qLa 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");
}
}

qLa 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");
}
}

qI 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");
}
}

qIl corpo della definizione di una classe contiene, tra le


altre cose, i metodi della classe per implementare le
operazioni
qLa classe ScrittoreSulloSchermo definisce un unico
metodo - di nome main - che un metodo speciale :
lunica operazione la cui esecuzione pu essere
richiesta dallutente 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");
}
}

qNella 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");
}
}

qIl 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
loggetto ScrittoreSulloSchermo deve svolgere
quando loggetto 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");

qLe tre istruzioni nel corpo del metodo main hanno una
struttura simile
ad esempio, nella prima istruzione
System.out il nome delloggetto (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 dellistruzione

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");
. . .

qLesecuzione di una istruzione consiste nello


svolgimento di una o pi azioni da parte delloggetto
che esegue listruzione
ad esempio, lesecuzione della prima istruzione consiste
nellinvio del messaggio println("Questo corso")
dalloggetto che esegue listruzione (ScrittoreSulloSchermo)
alloggetto System.out
in corrispondenza della ricezione di questo messaggio,
loggetto 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
qLesecuzione di un metodo consiste
nellesecuzione delle istruzioni scritte nel corpo
del metodo, una alla volta e in sequenza
qQuindi, lesecuzione del metodo main consiste
nellinvio, alloggetto 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 dellinformatica
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


lutente del programma

qQuesto Diagramma di collaborazione, nel


linguaggio UML, descrive i messaggi scambiati
quando un utente richiede al calcolatore di eseguire
lapplicazione ScrittoreSulloSchermo
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

26

Esercizio
qCommentare 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
qOra che abbiamo imparato a leggere proviamo anche
a scrivere in Java !
qUna 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)
qDefinire lapplicazione 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
qDurante 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)

qVa inoltre osservato che


lindividuazione degli errori grammaticali solitamente
supportata dagli strumenti di programmazione (in particolare,
dal compilatore)
viceversa, lindividuazione 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
qAlcuni 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 lordine delle parole o delle istruzioni


http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

31

Calcolo di una radice quadrata


qSi vuole scrivere una applicazione Java che
calcola e visualizza la radice quadrata di 144
lesecuzione di questo programma dovr
visualizzare sullo schermo il numero 12

qLapplicazione far uso della classe Math, per


calcolare la radice quadrata e della classe
System.out per la visualizzazione del risultato
qMath, 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

Lapplicazione 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


qUna stringa una sequenza finita di caratteri
le stringhe sono un tipo di dati di uso molto
comune consentono di rappresentare
informazioni testuali e descrittive

qJava supporta la gestione di stringhe


attraverso la classe String del package
java.lang
un oggetto String rappresenta una sequenza finita
di caratteri dellalfabeto Unicode
gli oggetti String sanno eseguire operazioni utili
per la loro gestione facenti parte dellinterfaccia
della classe
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

35

Stringhe e oggetti String


qIl valore (o contenuto) di un oggetto String
la stringa rappresentata da quelloggetto
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
qUn 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)
luso 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
qCome 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
qIl 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

qEsistono 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


qEssendo 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 delloggetto che
memorizzato in unaltra 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


qSe a una variabile riferimento (che referenzia
gi un oggetto A) viene assegnato il
riferimento a un altro oggetto B
il riferimento alloggetto A memorizzato dalla variabile
viene sostituito dal riferimento alloggetto B e loggetto 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
q 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


qLe 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

"inverno" : String
String

http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

42

Gli oggetti String sono immutabili


qUn oggetto String rappresenta una stringa
costante, immutabile
dopo la creazione, il valore di un oggetto String
non pu essere modificato
lunico modo di interagire con un oggetto String
mediante i metodi della classe String
nessun metodo della classe String modifica
loggetto su cui il metodo viene invocato

http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

43

Uso di oggetti String


qChe 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

qLa 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()


qIl 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

qAd esempio, lespressione


"automobile".length() vale 10

http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

45

La stringa vuota
qUna stringa vuota una sequenza vuota di
caratteri
la stringa vuota un oggetto String di lunghezza
zero
la stringa vuota denotata dal letterale "
lespressione "".length() vale 0

http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

46

Il metodo String concat(String x)


qLa concatenazione loperazione 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 loperazione 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

qAd esempio . . .
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

47

Concatenazione di stringhe
String s, t, u;
s = "auto";
t = "mobile";

"auto" : String
String

"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


qLe 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 (lultimo) 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, li-esimo carattere di una stringa
occupa la posizione i1
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

49

Il metodo
String substring(int inizio, int fine)
qIl 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 fine1 (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)


qIl 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 lultimo 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
qI 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

qIn 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


qLa 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


qCosa un programma Java
qCosa una applicazione Java
qCosa il metodo main
qAlcuni primi esempi di applicazioni Java
Scrittore sullo schermo
Radice quadrata

qAlcuni 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
qIn 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

qUn 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 lesecuzione del programma
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

57

Applicazioni Java
qUna applicazione una classe applicazione
che definisce un oggetto classe e che sa eseguire
esclusivamente loperazione speciale main

qIn una applicazione Java


lapplicazione rappresentata da un oggetto classe
lutente dellapplicazione pu interagire solo con alcuni
degli oggetti coinvolti dallapplicazione
lutente dellapplicazione pu sicuramente interagire con
loggetto classe che rappresenta lapplicazione
lutente dellapplicazione pu richiedere alloggetto classe
che rappresenta lapplicazione solo di eseguire loperazione
speciale main
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

58

Lapplicazione 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");
}
}

qIl corpo della definizione di una classe contiene, tra le


altre cose, i metodi della classe per implementare le
operazioni
qLa classe ScrittoreSulloSchermo definisce un unico
metodo - di nome main - che un metodo speciale :
lunica operazione la cui esecuzione pu essere
richiesta dallutente di una classe applicazione
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

60

Lapplicazione 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


qUna stringa una sequenza finita di caratteri
le stringhe sono un tipo di dati di uso molto
comune consentono di rappresentare
informazioni testuali e descrittive

qJava supporta la gestione di stringhe


attraverso la classe String del package
java.lang
un oggetto String rappresenta una sequenza finita
di caratteri dellalfabeto Unicode
gli oggetti String sanno eseguire operazioni utili
per la loro gestione facenti parte dellinterfaccia
della classe
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

62

Metodi della classe String


qLa 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


qPer 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

qIn 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 desame
http://www.dia.uniroma3.it/~java/fondinf/

Programmazione Java

64