Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Protocolli e contratti
c 2005-2010 Pearson Education Italia Capitolo 2 - 1 / 59
Sommario: Protocolli e contratti
1 Nozioni base della programmazione OO
La programmazione ad oggetti
Protocolli e contratti
Classi
2 Primi esempi di classi e oggetti
La classe ConsoleOutputManager
Creazione degli oggetti
Invocazione di un metodo
La classe ConsoleInputManager
3 Prototipi e segnature
4 La classe String
5 Variabili e tipi
Dichiarazione e definizione di variabili
Tipi primitivi e tipi riferimento
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 59
Paradigma di programmazione
Paradigma
...un insieme di teorie, standard e metodi che rappresentano un modo di
organizzare la conoscenza, cioè un modo di guardare il mondo.
T. Kuhn, La struttura delle rivoluzioni scientifiche, 1970
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 59
Paradigma di programmazione
Paradigma
...un insieme di teorie, standard e metodi che rappresentano un modo di
organizzare la conoscenza, cioè un modo di guardare il mondo.
T. Kuhn, La struttura delle rivoluzioni scientifiche, 1970
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 59
Paradigma di programmazione
Paradigma
...un insieme di teorie, standard e metodi che rappresentano un modo di
organizzare la conoscenza, cioè un modo di guardare il mondo.
T. Kuhn, La struttura delle rivoluzioni scientifiche, 1970
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 59
Paradigma di programmazione
Paradigma
...un insieme di teorie, standard e metodi che rappresentano un modo di
organizzare la conoscenza, cioè un modo di guardare il mondo.
T. Kuhn, La struttura delle rivoluzioni scientifiche, 1970
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 59
Esempio: Acquisti su Internet
INTERNET
BOOKSHOP
BANCA BANCA
D’APPOGGIO UTENTE
UTENTE
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 4 / 59
Programmazione a oggetti
00
11 000
111
00
11 000
111
00
11 000
111
00
11 000
111
00
11 000 000
111 111
00
11 000
111
00
11 000
111 000
111
00
11 000
111 000
111
00
11 000
111 000
111
00
11 000
111
00
11 000
111
00
11
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 5 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 59
Esempio: PinoPasticcino
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 59
Oggetti
Gli oggetti sono caratterizzati da stato e comportamento.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 8 / 59
Oggetti
Gli oggetti sono caratterizzati da stato e comportamento.
Stato
Insieme delle proprietà che caratterizzano l’oggetto in un determinato
istante.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 8 / 59
Oggetti
Gli oggetti sono caratterizzati da stato e comportamento.
Stato
Insieme delle proprietà che caratterizzano l’oggetto in un determinato
istante.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 8 / 59
Oggetti
Gli oggetti sono caratterizzati da stato e comportamento.
Stato
Insieme delle proprietà che caratterizzano l’oggetto in un determinato
istante.
Comportamento
Insieme delle azioni che l’oggetto può eseguire.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 8 / 59
Oggetti
Gli oggetti sono caratterizzati da stato e comportamento.
Stato
Insieme delle proprietà che caratterizzano l’oggetto in un determinato
istante.
Comportamento
Insieme delle azioni che l’oggetto può eseguire.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 59
Messaggi e oggetti
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 59
Messaggi e oggetti
ordinaTorta(torta,data)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 59
Messaggi e oggetti
ordinaTorta(torta,data)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 59
Messaggi e oggetti
ordinaTorta(torta,data)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 59
Protocolli e contratti
Protocollo (interfaccia)
Definisce le regole di comunicazione con l’oggetto, ovvero:
l’insieme dei messaggi
il formato dei messaggi
che l’oggetto può riconoscere.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 10 / 59
Protocolli e contratti
Protocollo (interfaccia)
Definisce le regole di comunicazione con l’oggetto, ovvero:
l’insieme dei messaggi
il formato dei messaggi
che l’oggetto può riconoscere.
Contratto
Associato ad ogni messaggio
Descrive il modo in cui l’oggetto garantisce di rispondere al messaggio
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 10 / 59
PinoPasticcino è un Pasticcere
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 11 / 59
PinoPasticcino è un Pasticcere
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 11 / 59
PinoPasticcino è un Pasticcere
ordinaTorta(torta,data)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 11 / 59
PinoPasticcino è un Pasticcere
ordinaTorta(torta,data)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 11 / 59
Classi in Java
Classe
Una classe è un modello che specifica lo stato e il comportamento di tutte
le sue istanze (oggetti).
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 12 / 59
Classi in Java
Classe
Una classe è un modello che specifica lo stato e il comportamento di tutte
le sue istanze (oggetti).
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 12 / 59
Classi in Java
Classe
Una classe è un modello che specifica lo stato e il comportamento di tutte
le sue istanze (oggetti).
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 12 / 59
Classi in Java
Classe
Una classe è un modello che specifica lo stato e il comportamento di tutte
le sue istanze (oggetti).
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 12 / 59
Esempio: la classe Pasticceria
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 13 / 59
Riassunto
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 14 / 59
Riassunto
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 14 / 59
Riassunto
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 14 / 59
Riassunto
Classe:
ogni oggetto è istanza di una qualche classe
la classe definisce i metodi eseguibili dalle proprie istanze
tutti gli oggetti di una classe rispondono ai messaggi nello stesso modo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 14 / 59
Sommario: Protocolli e contratti
1 Nozioni base della programmazione OO
La programmazione ad oggetti
Protocolli e contratti
Classi
2 Primi esempi di classi e oggetti
La classe ConsoleOutputManager
Creazione degli oggetti
Invocazione di un metodo
La classe ConsoleInputManager
3 Prototipi e segnature
4 La classe String
5 Variabili e tipi
Dichiarazione e definizione di variabili
Tipi primitivi e tipi riferimento
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 15 / 59
Programmi Java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 16 / 59
Programmi Java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 16 / 59
Programmi Java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 16 / 59
Programmi Java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 16 / 59
Programmi Java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 16 / 59
ConsoleOutputManager (prog.io)
Contratto: ConsoleOutputManager
Le sue istanze realizzano canali di comunicazione con il dispositivo di
output standard, cioè con il video.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 59
ConsoleOutputManager (prog.io)
Contratto: ConsoleOutputManager
Le sue istanze realizzano canali di comunicazione con il dispositivo di
output standard, cioè con il video.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 59
ConsoleOutputManager (prog.io)
Contratto: ConsoleOutputManager
Le sue istanze realizzano canali di comunicazione con il dispositivo di
output standard, cioè con il video.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Costruzione degli oggetti
Utilizziamo un metodo speciale detto costruttore
Espressione di creazione
new nome del costruttore(lista argomenti)
new ConsoleOutputManager()
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 18 / 59
Memorizzazione del riferimento
Dobbiamo:
dichiarare una variabile del tipo opportuno
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 59
Memorizzazione del riferimento
Dobbiamo:
dichiarare una variabile del tipo opportuno
assegnarle il valore restituito dall’espressione di creazione
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 59
Memorizzazione del riferimento
Dobbiamo:
dichiarare una variabile del tipo opportuno
assegnarle il valore restituito dall’espressione di creazione
ConsoleOutputManager video;
video = new ConsoleOutputManager();
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 59
Memorizzazione del riferimento
Dobbiamo:
dichiarare una variabile del tipo opportuno
assegnarle il valore restituito dall’espressione di creazione
ConsoleOutputManager video;
video = new ConsoleOutputManager();
Oppure
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 59
Situazione in memoria
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 59
Situazione in memoria
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 59
Situazione in memoria
l’oggetto contiene
le informazioni che ne caratterizzano lo stato
le informazioni che servono alla JVM per la gestione
dell’oggetto
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 59
Espressioni
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 21 / 59
Espressioni
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 21 / 59
Espressioni
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 21 / 59
Espressione di creazione
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 59
Espressione di creazione
Espressione di creazione
new nome del costruttore(lista argomenti)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 59
Espressione di creazione
Espressione di creazione
new nome del costruttore(lista argomenti)
Esempio
new ConsoleOutputManager()
Tipo ConsoleOutputManager
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 59
Espressione di creazione
Espressione di creazione
new nome del costruttore(lista argomenti)
Esempio
new ConsoleOutputManager()
Tipo ConsoleOutputManager
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 59
Invocazione di un metodo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 23 / 59
Invocazione di un metodo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 23 / 59
Invocazione di un metodo
Esempio
ConsoleOutputManager video = new ConsoleOutputManager();
video.println("Ecco il mio primo programma");
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 23 / 59
L’applicazione
import prog.io.ConsoleOutputManager;
class PrimoProgramma {
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 24 / 59
Direttive di importazione
import prog.io.ConsoleOutputManager;
Non sono istruzioni, e per questo devono stare al di fuori della classe
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 25 / 59
Direttive di importazione
import prog.io.ConsoleOutputManager;
Non sono istruzioni, e per questo devono stare al di fuori della classe
La direttiva qui sopra informa il compilatore che verranno usati tipi e
metodi della classe ConsoleOutputManager
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 25 / 59
Direttive di importazione
import prog.io.ConsoleOutputManager;
Non sono istruzioni, e per questo devono stare al di fuori della classe
La direttiva qui sopra informa il compilatore che verranno usati tipi e
metodi della classe ConsoleOutputManager
Il linker si occuperà di trovare il file ConsoleOutputManager.class
contenente il bytecode della classe, incluso il codice per eseguire i
metodi
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 25 / 59
Direttive di importazione
import prog.io.ConsoleOutputManager;
Non sono istruzioni, e per questo devono stare al di fuori della classe
La direttiva qui sopra informa il compilatore che verranno usati tipi e
metodi della classe ConsoleOutputManager
Il linker si occuperà di trovare il file ConsoleOutputManager.class
contenente il bytecode della classe, incluso il codice per eseguire i
metodi
Come alternativa a import posso usare
prog.io.ConsoleOutputManager video;
video = new prog.io.ConsoleOutputManager();
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 25 / 59
Compilazione ed esecuzione
Compilazione
> javac PrimoProgramma.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 26 / 59
Compilazione ed esecuzione
Compilazione
> javac PrimoProgramma.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 26 / 59
Compilazione ed esecuzione
Compilazione
> javac PrimoProgramma.java
Esecuzione
> java PrimoProgramma
Ecco il mio primo programma!
PrimoProgramma.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 26 / 59
ConsoleInputManager (prog.io)
Contratto: ConsoleInputManager
Le sue istanze realizzano canali di comunicazione con il dispositivo di input
standard, cioè la tastiera.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 27 / 59
ConsoleInputManager (prog.io)
Contratto: ConsoleInputManager
Le sue istanze realizzano canali di comunicazione con il dispositivo di input
standard, cioè la tastiera.
Metodi
readLine legge una riga di testo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 27 / 59
ConsoleInputManager (prog.io)
Contratto: ConsoleInputManager
Le sue istanze realizzano canali di comunicazione con il dispositivo di input
standard, cioè la tastiera.
Metodi
readLine legge una riga di testo
...
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 27 / 59
Esempio
import prog.io.ConsoleOutputManager;
import prog.io.ConsoleInputManager;
class Pappagallo {
public static void main(String[] args) {
//predisposizione dei canali di comunicazione
ConsoleInputManager tastiera = new ConsoleInputManager();
ConsoleOutputManager video = new ConsoleOutputManager();
//lettura e comunicazione
String messaggio = tastiera.readLine();
video.println(messaggio);
}
}
Pappagallo.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 28 / 59
Sommario: Protocolli e contratti
1 Nozioni base della programmazione OO
La programmazione ad oggetti
Protocolli e contratti
Classi
2 Primi esempi di classi e oggetti
La classe ConsoleOutputManager
Creazione degli oggetti
Invocazione di un metodo
La classe ConsoleInputManager
3 Prototipi e segnature
4 La classe String
5 Variabili e tipi
Dichiarazione e definizione di variabili
Tipi primitivi e tipi riferimento
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 29 / 59
Segnature e prototipi
Segnatura di un metodo
È costituita da:
nome del metodo
lista degli argomenti con il relativo tipo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 30 / 59
Segnature e prototipi
Segnatura di un metodo
È costituita da:
nome del metodo
lista degli argomenti con il relativo tipo
Esempio
println(String s)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 30 / 59
Segnature e prototipi
Prototipo di un metodo
È costituito da:
tipo del valore restituito dal metodo
nome del metodo
lista degli argomenti con il relativo tipo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 31 / 59
Segnature e prototipi
Prototipo di un metodo
È costituito da:
tipo del valore restituito dal metodo
nome del metodo
lista degli argomenti con il relativo tipo
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 31 / 59
Segnature e prototipi
Prototipo di un metodo
È costituito da:
tipo del valore restituito dal metodo
nome del metodo
lista degli argomenti con il relativo tipo
Esempio
String readline()
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 31 / 59
Alcuni metodi di ConsoleOutputManager
void
È una parola chiave
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 32 / 59
Alcuni metodi di ConsoleOutputManager
Overloading (“sovraccaricamento”)
Possibilità di avere metodi con lo stesso nome ma segnatura diversa
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 32 / 59
Sommario: Protocolli e contratti
1 Nozioni base della programmazione OO
La programmazione ad oggetti
Protocolli e contratti
Classi
2 Primi esempi di classi e oggetti
La classe ConsoleOutputManager
Creazione degli oggetti
Invocazione di un metodo
La classe ConsoleInputManager
3 Prototipi e segnature
4 La classe String
5 Variabili e tipi
Dichiarazione e definizione di variabili
Tipi primitivi e tipi riferimento
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 33 / 59
La classe String
Contratto: String
Le istanze della classe String modellano stringhe, cioè sequenze arbitrarie
di caratteri Unicode
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 59
La classe String
Contratto: String
Le istanze della classe String modellano stringhe, cioè sequenze arbitrarie
di caratteri Unicode
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 59
La classe String
Contratto: String
Le istanze della classe String modellano stringhe, cioè sequenze arbitrarie
di caratteri Unicode
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 59
La classe String
Contratto: String
Le istanze della classe String modellano stringhe, cioè sequenze arbitrarie
di caratteri Unicode
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 59
La classe String
Contratto: String
Le istanze della classe String modellano stringhe, cioè sequenze arbitrarie
di caratteri Unicode
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 59
La classe String
Contratto: String
Le istanze della classe String modellano stringhe, cioè sequenze arbitrarie
di caratteri Unicode
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 59
Situazione in memoria
s
String
"Java"
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 35 / 59
Letterali di tipo String
Letterali
Rappresentano i valori di un tipo all’interno di un programma Java
int x = 3;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 36 / 59
Letterali di tipo String
Letterali
Rappresentano i valori di un tipo all’interno di un programma Java
int x = 3;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 36 / 59
Letterali di tipo String
Letterali
Rappresentano i valori di un tipo all’interno di un programma Java
int x = 3;
String s = "Java";
è equivalente a
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 36 / 59
Sequenze di escape: notazione esadecimale
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 37 / 59
Sequenze di escape: notazione esadecimale
X ∈ {0, 1, . . . , 9, A, B, C , D, E , F }
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 37 / 59
Sequenze di escape: notazione esadecimale
X ∈ {0, 1, . . . , 9, A, B, C , D, E , F }
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 37 / 59
Sequenze di escape: notazione esadecimale
X ∈ {0, 1, . . . , 9, A, B, C , D, E , F }
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 37 / 59
Sequenze di escape
Escape.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 38 / 59
Differenza Unicode e sequenze di escape
I letterali del tipo \uXXXX nel file sorgente vengono subito rimpiazzati dal
compilatore con i caratteri Unicode corrispondenti
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 39 / 59
Differenza Unicode e sequenze di escape
I letterali del tipo \uXXXX nel file sorgente vengono subito rimpiazzati dal
compilatore con i caratteri Unicode corrispondenti
L’invocazione di metodo
video.println("Un doppio apice: \" ");
stampa a video
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 39 / 59
Differenza Unicode e sequenze di escape
I letterali del tipo \uXXXX nel file sorgente vengono subito rimpiazzati dal
compilatore con i caratteri Unicode corrispondenti
L’invocazione di metodo
video.println("Un doppio apice: \" ");
stampa a video
L’invocazione di metodo
println("Un doppio apice: \u0022 ")
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 59
public String toUpperCase()
Contratto
Restituisce come risultato il riferimento a una nuova stringa costituita dagli
stessi caratteri della stringa che esegue il metodo, con l’eccezione delle
lettere minuscole, che sono trasformate nelle maiuscole corrispondenti.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 59
public String toUpperCase()
Contratto
Restituisce come risultato il riferimento a una nuova stringa costituita dagli
stessi caratteri della stringa che esegue il metodo, con l’eccezione delle
lettere minuscole, che sono trasformate nelle maiuscole corrispondenti.
Esempi
(1) String s1 = "Ciao";
String s2 = s1.toUpperCase();
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 59
public String toUpperCase()
Contratto
Restituisce come risultato il riferimento a una nuova stringa costituita dagli
stessi caratteri della stringa che esegue il metodo, con l’eccezione delle
lettere minuscole, che sono trasformate nelle maiuscole corrispondenti.
Esempi
(1) String s1 = "Ciao";
String s2 = s1.toUpperCase();
Pappagallo2.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 59
Osservazione
...
String messaggio = tastiera.readLine();
String risposta = messaggio.toUpperCase();
...
String
messaggio
"Ciao"
risposta
String
"CIAO"
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 41 / 59
Osservazione
...
String messaggio = tastiera.readLine();
String risposta = messaggio.toUpperCase();
...
String
messaggio
"Ciao"
risposta
String
"CIAO"
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 41 / 59
public String toLowerCase()
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 59
public String toLowerCase()
Contratto
Restituisce come risultato il riferimento a una nuova stringa costituita dagli
stessi caratteri della stringa che esegue il metodo, con l’eccezione delle
lettere maiuscole, che sono trasformate nelle minuscole corrispondenti.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 59
public String toLowerCase()
Contratto
Restituisce come risultato il riferimento a una nuova stringa costituita dagli
stessi caratteri della stringa che esegue il metodo, con l’eccezione delle
lettere maiuscole, che sono trasformate nelle minuscole corrispondenti.
Esempi
(1) String s1 = "CIAO";
String s2 = s1.toLowerCase();
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 59
public String toLowerCase()
Contratto
Restituisce come risultato il riferimento a una nuova stringa costituita dagli
stessi caratteri della stringa che esegue il metodo, con l’eccezione delle
lettere maiuscole, che sono trasformate nelle minuscole corrispondenti.
Esempi
(1) String s1 = "CIAO";
String s2 = s1.toLowerCase();
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 59
public int length()
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 43 / 59
public int length()
Contratto
Restituisce un valore di tipo int, cioè un numero intero, uguale alla
lunghezza della stringa rappresentata dall’oggetto che esegue il metodo.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 43 / 59
public int length()
Contratto
Restituisce un valore di tipo int, cioè un numero intero, uguale alla
lunghezza della stringa rappresentata dall’oggetto che esegue il metodo.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 43 / 59
public int length()
Contratto
Restituisce un valore di tipo int, cioè un numero intero, uguale alla
lunghezza della stringa rappresentata dall’oggetto che esegue il metodo.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 43 / 59
public int length()
Contratto
Restituisce un valore di tipo int, cioè un numero intero, uguale alla
lunghezza della stringa rappresentata dall’oggetto che esegue il metodo.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 43 / 59
public String concat(String str)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 44 / 59
public String concat(String str)
Contratto
Restituisce un riferimento alla stringa ottenuta concatenando alla stringa
che esegue il metodo la stringa fornita come argomento.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 44 / 59
public String concat(String str)
Contratto
Restituisce un riferimento alla stringa ottenuta concatenando alla stringa
che esegue il metodo la stringa fornita come argomento.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 44 / 59
public String concat(String str)
Contratto
Restituisce un riferimento alla stringa ottenuta concatenando alla stringa
che esegue il metodo la stringa fornita come argomento.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 44 / 59
public String concat(String str)
Contratto
Restituisce un riferimento alla stringa ottenuta concatenando alla stringa
che esegue il metodo la stringa fornita come argomento.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 45 / 59
L’operatore + su stringhe
è equivalente a
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 45 / 59
Spezzare le righe
Non è possibile scrivere letterali di tipo String che occupino più di una
riga
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 46 / 59
Spezzare le righe
Non è possibile scrivere letterali di tipo String che occupino più di una
riga
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 46 / 59
public String substring(int begin, int end)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 47 / 59
public String substring(int begin, int end)
Contratto
Restituisce il riferimento a una stringa formata dai caratteri che vanno
dalla posizione begin fino alla posizione end - 1 della stringa che esegue
il metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 47 / 59
public String substring(int begin, int end)
Contratto
Restituisce il riferimento a una stringa formata dai caratteri che vanno
dalla posizione begin fino alla posizione end - 1 della stringa che esegue
il metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.
Esempi
(1) "distruggere"
ha 11 caratteri, d è in posizione 0, la ultima e in posizione 10
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 47 / 59
public String substring(int begin, int end)
Contratto
Restituisce il riferimento a una stringa formata dai caratteri che vanno
dalla posizione begin fino alla posizione end - 1 della stringa che esegue
il metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.
Esempi
(1) "distruggere"
ha 11 caratteri, d è in posizione 0, la ultima e in posizione 10
(2) "distruggere".substring(2, 9)
fornisce come risultato un riferimento alla stringa "strugge"
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 47 / 59
public String substring(int begin)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 48 / 59
public String substring(int begin)
Contratto
Restituisce un riferimento a una stringa formata da tutti i caratteri della
stringa che esegue il metodo che si trovano tra la posizione specificata
nell’argomento e la fine della stringa.
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 48 / 59
public String substring(int begin)
Contratto
Restituisce un riferimento a una stringa formata da tutti i caratteri della
stringa che esegue il metodo che si trovano tra la posizione specificata
nell’argomento e la fine della stringa.
Esempi
"distruggere".substring(8)
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 48 / 59
Sommario: Protocolli e contratti
1 Nozioni base della programmazione OO
La programmazione ad oggetti
Protocolli e contratti
Classi
2 Primi esempi di classi e oggetti
La classe ConsoleOutputManager
Creazione degli oggetti
Invocazione di un metodo
La classe ConsoleInputManager
3 Prototipi e segnature
4 La classe String
5 Variabili e tipi
Dichiarazione e definizione di variabili
Tipi primitivi e tipi riferimento
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 49 / 59
Java: linguaggio fortemente tipato
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 50 / 59
Java: linguaggio fortemente tipato
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 50 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
int x;
int y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 51 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
int x;
int y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 51 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
int x;
int y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 51 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
String x;
String y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
String x;
String y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
String x;
String y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
String x;
int y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 53 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
String x;
int y;
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 53 / 59
Espressioni e tipi
Esempio
Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.
String x;
int y;
LaSommaVale.java
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 53 / 59
Dichiarazione e definizione di variabili
Dichiarazione di variabili
Tipo var1, var2, . . . ;
Esempio
// dichiarazione
int x, y;
String s;
// definizione
int i = 4, j = 3;
String nome = "pippo";
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 55 / 59
Tipi primitivi e tipi riferimento
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 55 / 59
Tipi primitivi e tipi riferimento
Esempio
i
int i = 10; 10
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 55 / 59
Tipi primitivi e tipi riferimento
Tipi primitivi
byte short int long
char
boolean
float double
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 56 / 59
Tipi primitivi e tipi riferimento
Tipi primitivi
byte short int long
char
boolean
float double
Tipi riferimento
classi
interfacce
array
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 56 / 59
Assegnamento fra variabili di tipo primitivo
int x = 10, y;
y = x;
x x
10 10
y = x
y y
10
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 57 / 59
Assegnamento fra variabili di tipo riferimento
String x = "pippo", y;
y = x;
x x
String String
"pippo" y = x "pippo"
y y
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 58 / 59
Il letterale null
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 59 / 59
Il letterale null
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 59 / 59
Il letterale null
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 59 / 59
Il letterale null
Esempio
String s;
s = null;
int x = s.length(); //ERRORE IN FASE DI ESECUZIONE
c 2005-2010 Pearson Education Italia Capitolo 2 - Protocolli e contratti 59 / 59