Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e...

148
Capitolo 2 Protocolli e contratti c 2005 Pearson Education Italia Capitolo 2 - 1 / 82

Transcript of Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e...

Page 1: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Capitolo 2

Protocolli e contratti

c© 2005 Pearson Education Italia Capitolo 2 - 1 / 82

Page 2: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Sommario: Protocolli e contratti

1 Nozioni base della programmazione OOLa programmazione ad oggettiProtocolli e contrattiClassi

2 Primi esempi di classi e oggettiLa classe ConsoleOutputManagerCreazione degli oggettiInvocazione di un metodoLa classe ConsoleInputManager

3 Prototipi e segnature

4 La classe String

5 Variabili e tipiDichiarazione e definizione di variabiliTipi primitivi e tipi riferimento

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82

Page 3: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Paradigma di programmazione

Paradigma

...un insieme di teorie, standard e metodi che rappresentano un modo diorganizzare la conoscenza, cioe un modo di guardare il mondo.

T. Kunh, La struttura delle rivoluzioni scientifiche, 1970

Un paradigma di programmazione fornisce un metodo per:

concettualizzare il processo di computazione

organizzare e strutturare i compiti che un calcolatore deve svolgere

OOP e un paradigma contrapposto a quelli tradizionali:

imperativo (Pascal, C, . . . )funzionale (LISP, FP, . . . )logico (Prolog)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 82

Page 4: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Paradigma di programmazione

Paradigma

...un insieme di teorie, standard e metodi che rappresentano un modo diorganizzare la conoscenza, cioe un modo di guardare il mondo.

T. Kunh, La struttura delle rivoluzioni scientifiche, 1970

Un paradigma di programmazione fornisce un metodo per:

concettualizzare il processo di computazione

organizzare e strutturare i compiti che un calcolatore deve svolgere

OOP e un paradigma contrapposto a quelli tradizionali:

imperativo (Pascal, C, . . . )funzionale (LISP, FP, . . . )logico (Prolog)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 82

Page 5: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Paradigma di programmazione

Paradigma

...un insieme di teorie, standard e metodi che rappresentano un modo diorganizzare la conoscenza, cioe un modo di guardare il mondo.

T. Kunh, La struttura delle rivoluzioni scientifiche, 1970

Un paradigma di programmazione fornisce un metodo per:

concettualizzare il processo di computazione

organizzare e strutturare i compiti che un calcolatore deve svolgere

OOP e un paradigma contrapposto a quelli tradizionali:

imperativo (Pascal, C, . . . )funzionale (LISP, FP, . . . )logico (Prolog)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 82

Page 6: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Paradigma di programmazione

Paradigma

...un insieme di teorie, standard e metodi che rappresentano un modo diorganizzare la conoscenza, cioe un modo di guardare il mondo.

T. Kunh, La struttura delle rivoluzioni scientifiche, 1970

Un paradigma di programmazione fornisce un metodo per:

concettualizzare il processo di computazione

organizzare e strutturare i compiti che un calcolatore deve svolgere

OOP e un paradigma contrapposto a quelli tradizionali:

imperativo (Pascal, C, . . . )funzionale (LISP, FP, . . . )logico (Prolog)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 3 / 82

Page 7: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Vogliamo ordinare una torta per una festa di compleanno.

Come agiamo ?

Andiamo dal nostro pasticcere di fiducia (PinoPasticcino)

Gli comunichiamo il tipo della torta e il giorno in cui passeremo aritirarla

Astraendo dai dettagli: inviamo un messaggio al commesso dellapasticceria

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 4 / 82

Page 8: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Vogliamo ordinare una torta per una festa di compleanno.

Come agiamo ?

Andiamo dal nostro pasticcere di fiducia (PinoPasticcino)

Gli comunichiamo il tipo della torta e il giorno in cui passeremo aritirarla

Astraendo dai dettagli: inviamo un messaggio al commesso dellapasticceria

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 4 / 82

Page 9: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Vogliamo ordinare una torta per una festa di compleanno.

Come agiamo ?

Andiamo dal nostro pasticcere di fiducia (PinoPasticcino)

Gli comunichiamo il tipo della torta e il giorno in cui passeremo aritirarla

Astraendo dai dettagli: inviamo un messaggio al commesso dellapasticceria

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 4 / 82

Page 10: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Vogliamo ordinare una torta per una festa di compleanno.

Come agiamo ?

Andiamo dal nostro pasticcere di fiducia (PinoPasticcino)

Gli comunichiamo il tipo della torta e il giorno in cui passeremo aritirarla

Astraendo dai dettagli: inviamo un messaggio al commesso dellapasticceria

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 4 / 82

Page 11: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Per risolvere il problema abbiamo:

individuato un agente appropriato

inviato a tale agente un messaggio contenente la nostra richiesta

Osserviamo che PinoPasticcino

si assume la responsabilita di soddisfare la nostra richiesta

utilizzera un qualche metodo (algoritmo) per soddisfarla

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 5 / 82

Page 12: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Per risolvere il problema abbiamo:

individuato un agente appropriato

inviato a tale agente un messaggio contenente la nostra richiesta

Osserviamo che PinoPasticcino

si assume la responsabilita di soddisfare la nostra richiesta

utilizzera un qualche metodo (algoritmo) per soddisfarla

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 5 / 82

Page 13: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: PinoPasticcino

Per risolvere il problema abbiamo:

individuato un agente appropriato

inviato a tale agente un messaggio contenente la nostra richiesta

Osserviamo che PinoPasticcino

si assume la responsabilita di soddisfare la nostra richiesta

utilizzera un qualche metodo (algoritmo) per soddisfarla

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 5 / 82

Page 14: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Oggetti

Gli oggetti sono caratterizzati da stato e comportamento.

Stato

Insieme delle proprieta che caratterizzano l’oggetto in un determinatoistante.

cane: nome, colore, razza, eta,. . .

auto: colore, potenza, livello carburante, velocita,. . .

Comportamento

Insieme delle azioni che l’oggetto puo eseguire.

cane: abbaiare, scodinzolare, mangiare,. . .

auto: accelerare, consumare, sterzare,. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 82

Page 15: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Oggetti

Gli oggetti sono caratterizzati da stato e comportamento.

Stato

Insieme delle proprieta che caratterizzano l’oggetto in un determinatoistante.

cane: nome, colore, razza, eta,. . .

auto: colore, potenza, livello carburante, velocita,. . .

Comportamento

Insieme delle azioni che l’oggetto puo eseguire.

cane: abbaiare, scodinzolare, mangiare,. . .

auto: accelerare, consumare, sterzare,. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 82

Page 16: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Oggetti

Gli oggetti sono caratterizzati da stato e comportamento.

Stato

Insieme delle proprieta che caratterizzano l’oggetto in un determinatoistante.

cane: nome, colore, razza, eta,. . .

auto: colore, potenza, livello carburante, velocita,. . .

Comportamento

Insieme delle azioni che l’oggetto puo eseguire.

cane: abbaiare, scodinzolare, mangiare,. . .

auto: accelerare, consumare, sterzare,. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 82

Page 17: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Oggetti

Gli oggetti sono caratterizzati da stato e comportamento.

Stato

Insieme delle proprieta che caratterizzano l’oggetto in un determinatoistante.

cane: nome, colore, razza, eta,. . .

auto: colore, potenza, livello carburante, velocita,. . .

Comportamento

Insieme delle azioni che l’oggetto puo eseguire.

cane: abbaiare, scodinzolare, mangiare,. . .

auto: accelerare, consumare, sterzare,. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 82

Page 18: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Oggetti

Gli oggetti sono caratterizzati da stato e comportamento.

Stato

Insieme delle proprieta che caratterizzano l’oggetto in un determinatoistante.

cane: nome, colore, razza, eta,. . .

auto: colore, potenza, livello carburante, velocita,. . .

Comportamento

Insieme delle azioni che l’oggetto puo eseguire.

cane: abbaiare, scodinzolare, mangiare,. . .

auto: accelerare, consumare, sterzare,. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 6 / 82

Page 19: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Messaggi e oggetti

Nella programmazione ad oggetti un’azione viene iniziata inviando unmessaggio ad un agente (un oggetto) responsabile di svolgerla.

Il messaggio codifica la richiesta di un’azione ed e corredato conl’informazione necessaria (argomenti) a soddisfarla

ordinaTorta(torta,data)

Il ricevente, se accetta il messaggio, si assume la responsabilita diportare a compimento la relativa azione

In risposta al messaggio il ricevente eseguira un metodo per soddisfarela richiesta

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 82

Page 20: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Messaggi e oggetti

Nella programmazione ad oggetti un’azione viene iniziata inviando unmessaggio ad un agente (un oggetto) responsabile di svolgerla.

Il messaggio codifica la richiesta di un’azione ed e corredato conl’informazione necessaria (argomenti) a soddisfarla

ordinaTorta(torta,data)

Il ricevente, se accetta il messaggio, si assume la responsabilita diportare a compimento la relativa azione

In risposta al messaggio il ricevente eseguira un metodo per soddisfarela richiesta

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 82

Page 21: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Messaggi e oggetti

Nella programmazione ad oggetti un’azione viene iniziata inviando unmessaggio ad un agente (un oggetto) responsabile di svolgerla.

Il messaggio codifica la richiesta di un’azione ed e corredato conl’informazione necessaria (argomenti) a soddisfarla

ordinaTorta(torta,data)

Il ricevente, se accetta il messaggio, si assume la responsabilita diportare a compimento la relativa azione

In risposta al messaggio il ricevente eseguira un metodo per soddisfarela richiesta

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 82

Page 22: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Messaggi e oggetti

Nella programmazione ad oggetti un’azione viene iniziata inviando unmessaggio ad un agente (un oggetto) responsabile di svolgerla.

Il messaggio codifica la richiesta di un’azione ed e corredato conl’informazione necessaria (argomenti) a soddisfarla

ordinaTorta(torta,data)

Il ricevente, se accetta il messaggio, si assume la responsabilita diportare a compimento la relativa azione

In risposta al messaggio il ricevente eseguira un metodo per soddisfarela richiesta

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 82

Page 23: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Messaggi e oggetti

Nella programmazione ad oggetti un’azione viene iniziata inviando unmessaggio ad un agente (un oggetto) responsabile di svolgerla.

Il messaggio codifica la richiesta di un’azione ed e corredato conl’informazione necessaria (argomenti) a soddisfarla

ordinaTorta(torta,data)

Il ricevente, se accetta il messaggio, si assume la responsabilita diportare a compimento la relativa azione

In risposta al messaggio il ricevente eseguira un metodo per soddisfarela richiesta

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 7 / 82

Page 24: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

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 puo riconoscere.

Contratto

Associato ad ogni messaggio

Descrive il modo in cui l’oggetto garantisce di rispondere al messaggio

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 8 / 82

Page 25: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

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 puo riconoscere.

Contratto

Associato ad ogni messaggio

Descrive il modo in cui l’oggetto garantisce di rispondere al messaggio

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 8 / 82

Page 26: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

PinoPasticcino e un Pasticcere

E se fossi entrato in una pasticceria a caso?

In realta avrei potuto risolvere il mio problema entrando in unaqualunque pasticceria

Infatti, in base alla mia esperienza, ogni Pasticceria e in grado di“rispondere” al messaggio

ordinaTorta(torta,data)

per il solo fatto di appartenere alla categoria dei pasticceri.

Una categoria di agenti che condividono il medesimo comportamentoprende il nome di classe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 82

Page 27: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

PinoPasticcino e un Pasticcere

E se fossi entrato in una pasticceria a caso?

In realta avrei potuto risolvere il mio problema entrando in unaqualunque pasticceria

Infatti, in base alla mia esperienza, ogni Pasticceria e in grado di“rispondere” al messaggio

ordinaTorta(torta,data)

per il solo fatto di appartenere alla categoria dei pasticceri.

Una categoria di agenti che condividono il medesimo comportamentoprende il nome di classe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 82

Page 28: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

PinoPasticcino e un Pasticcere

E se fossi entrato in una pasticceria a caso?

In realta avrei potuto risolvere il mio problema entrando in unaqualunque pasticceria

Infatti, in base alla mia esperienza, ogni Pasticceria e in grado di“rispondere” al messaggio

ordinaTorta(torta,data)

per il solo fatto di appartenere alla categoria dei pasticceri.

Una categoria di agenti che condividono il medesimo comportamentoprende il nome di classe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 82

Page 29: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

PinoPasticcino e un Pasticcere

E se fossi entrato in una pasticceria a caso?

In realta avrei potuto risolvere il mio problema entrando in unaqualunque pasticceria

Infatti, in base alla mia esperienza, ogni Pasticceria e in grado di“rispondere” al messaggio

ordinaTorta(torta,data)

per il solo fatto di appartenere alla categoria dei pasticceri.

Una categoria di agenti che condividono il medesimo comportamentoprende il nome di classe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 9 / 82

Page 30: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Classi in Java

Classe

Una classe e un modello che specifica lo stato e il comportamento di tuttele sue istanze (oggetti).

Tutti gli oggetti sono istanze di una classe

Il metodo utilizzato da un oggetto per rispondere a un messaggio edeterminato dalla classe da cui e stato istanziato

Tutti gli oggetti ottenuti istanziando una medesima classe rispondonoad un certo messaggio mediante il medesimo metodo

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 10 / 82

Page 31: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Classi in Java

Classe

Una classe e un modello che specifica lo stato e il comportamento di tuttele sue istanze (oggetti).

Tutti gli oggetti sono istanze di una classe

Il metodo utilizzato da un oggetto per rispondere a un messaggio edeterminato dalla classe da cui e stato istanziato

Tutti gli oggetti ottenuti istanziando una medesima classe rispondonoad un certo messaggio mediante il medesimo metodo

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 10 / 82

Page 32: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Classi in Java

Classe

Una classe e un modello che specifica lo stato e il comportamento di tuttele sue istanze (oggetti).

Tutti gli oggetti sono istanze di una classe

Il metodo utilizzato da un oggetto per rispondere a un messaggio edeterminato dalla classe da cui e stato istanziato

Tutti gli oggetti ottenuti istanziando una medesima classe rispondonoad un certo messaggio mediante il medesimo metodo

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 10 / 82

Page 33: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Classi in Java

Classe

Una classe e un modello che specifica lo stato e il comportamento di tuttele sue istanze (oggetti).

Tutti gli oggetti sono istanze di una classe

Il metodo utilizzato da un oggetto per rispondere a un messaggio edeterminato dalla classe da cui e stato istanziato

Tutti gli oggetti ottenuti istanziando una medesima classe rispondonoad un certo messaggio mediante il medesimo metodo

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 10 / 82

Page 34: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio: la classe Pasticceria

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 11 / 82

Page 35: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Sommario: Protocolli e contratti

1 Nozioni base della programmazione OOLa programmazione ad oggettiProtocolli e contrattiClassi

2 Primi esempi di classi e oggettiLa classe ConsoleOutputManagerCreazione degli oggettiInvocazione di un metodoLa classe ConsoleInputManager

3 Prototipi e segnature

4 La classe String

5 Variabili e tipiDichiarazione e definizione di variabiliTipi primitivi e tipi riferimento

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 12 / 82

Page 36: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Programmi Java

Un programma e costituito da un insieme di oggetti che cooperano perrealizzare un obiettivo

Per realizzare un programma dovremo:

conoscere le classi (fondamentali) che abbiamo a disposizione

costruire e memorizzare gli oggetti che ci servono per realizzare uncompito

inviare messaggi agli oggetti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 13 / 82

Page 37: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Programmi Java

Un programma e costituito da un insieme di oggetti che cooperano perrealizzare un obiettivo

Per realizzare un programma dovremo:

conoscere le classi (fondamentali) che abbiamo a disposizione

costruire e memorizzare gli oggetti che ci servono per realizzare uncompito

inviare messaggi agli oggetti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 13 / 82

Page 38: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Programmi Java

Un programma e costituito da un insieme di oggetti che cooperano perrealizzare un obiettivo

Per realizzare un programma dovremo:

conoscere le classi (fondamentali) che abbiamo a disposizione

costruire e memorizzare gli oggetti che ci servono per realizzare uncompito

inviare messaggi agli oggetti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 13 / 82

Page 39: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Programmi Java

Un programma e costituito da un insieme di oggetti che cooperano perrealizzare un obiettivo

Per realizzare un programma dovremo:

conoscere le classi (fondamentali) che abbiamo a disposizione

costruire e memorizzare gli oggetti che ci servono per realizzare uncompito

inviare messaggi agli oggetti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 13 / 82

Page 40: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Programmi Java

Un programma e costituito da un insieme di oggetti che cooperano perrealizzare un obiettivo

Per realizzare un programma dovremo:

conoscere le classi (fondamentali) che abbiamo a disposizione

costruire e memorizzare gli oggetti che ci servono per realizzare uncompito

inviare messaggi agli oggetti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 13 / 82

Page 41: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

ConsoleOutputManager (prog.io)

Contratto: ConsoleOutputManager

Le sue istanze realizzano canali di comunicazione con il dispositivo dioutput standard, cioe con il video.

La classe mette a disposizione metodi che consentono di visualizzare avideo vari tipi di dati

Ad un’istanza di questa classe possiamo inviare il messaggio

println("Ecco il mio primo programma")

che ha l’effetto di visualizzare sul video la stringa

"Ecco il mio primo programma"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 15 / 82

Page 42: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

ConsoleOutputManager (prog.io)

Contratto: ConsoleOutputManager

Le sue istanze realizzano canali di comunicazione con il dispositivo dioutput standard, cioe con il video.

La classe mette a disposizione metodi che consentono di visualizzare avideo vari tipi di dati

Ad un’istanza di questa classe possiamo inviare il messaggio

println("Ecco il mio primo programma")

che ha l’effetto di visualizzare sul video la stringa

"Ecco il mio primo programma"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 15 / 82

Page 43: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

ConsoleOutputManager (prog.io)

Contratto: ConsoleOutputManager

Le sue istanze realizzano canali di comunicazione con il dispositivo dioutput standard, cioe con il video.

La classe mette a disposizione metodi che consentono di visualizzare avideo vari tipi di dati

Ad un’istanza di questa classe possiamo inviare il messaggio

println("Ecco il mio primo programma")

che ha l’effetto di visualizzare sul video la stringa

"Ecco il mio primo programma"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 15 / 82

Page 44: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 45: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 46: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 47: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 48: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 49: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 50: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Costruzione degli oggetti

Espressione di creazione

new nome del costruttore(lista argomenti)

new: operatore unario prefisso

nome del costruttore(lista argomenti): operando

nome del costruttore: coincide con il nome della classe

lista argomenti: dipende dai costruttori che la classe mette adisposizione

Il risultato dell’espressione e un riferimento all’oggetto costruito

new ConsoleOutputManager()

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 17 / 82

Page 51: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni

Le espressioni sono sequenze di operatori e di operandi costruite secondo leregole sintattiche del linguaggio.

Hanno un tipo complessivo determinato dagli operatori e dal tipodegli operandi

Danno luogo, in fase di esecuzione, a un valore

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 82

Page 52: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni

Le espressioni sono sequenze di operatori e di operandi costruite secondo leregole sintattiche del linguaggio.

Hanno un tipo complessivo determinato dagli operatori e dal tipodegli operandi

Danno luogo, in fase di esecuzione, a un valore

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 82

Page 53: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni

Le espressioni sono sequenze di operatori e di operandi costruite secondo leregole sintattiche del linguaggio.

Hanno un tipo complessivo determinato dagli operatori e dal tipodegli operandi

Danno luogo, in fase di esecuzione, a un valore

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 19 / 82

Page 54: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressione di creazione

Espressione di creazione

new nome del costruttore(lista argomenti)

Tipo la classe dell’oggetto costruito

Valore il riferimento a un oggetto della classe specificata dalcostruttore

Esempio

new ConsoleOutputManager()

Tipo ConsoleOutputManager

Valore riferimento ad un oggetto di tipo ConsoleOutputManager

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 82

Page 55: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressione di creazione

Espressione di creazione

new nome del costruttore(lista argomenti)

Tipo la classe dell’oggetto costruito

Valore il riferimento a un oggetto della classe specificata dalcostruttore

Esempio

new ConsoleOutputManager()

Tipo ConsoleOutputManager

Valore riferimento ad un oggetto di tipo ConsoleOutputManager

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 82

Page 56: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressione di creazione

Espressione di creazione

new nome del costruttore(lista argomenti)

Tipo la classe dell’oggetto costruito

Valore il riferimento a un oggetto della classe specificata dalcostruttore

Esempio

new ConsoleOutputManager()

Tipo ConsoleOutputManager

Valore riferimento ad un oggetto di tipo ConsoleOutputManager

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 82

Page 57: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressione di creazione

Espressione di creazione

new nome del costruttore(lista argomenti)

Tipo la classe dell’oggetto costruito

Valore il riferimento a un oggetto della classe specificata dalcostruttore

Esempio

new ConsoleOutputManager()

Tipo ConsoleOutputManager

Valore riferimento ad un oggetto di tipo ConsoleOutputManager

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 20 / 82

Page 58: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Memorizzazione del riferimento

Dobbiamo:

dichiarare una variabile del tipo opportuno

assegnarle il valore restituito dall’espressione di creazione

ConsoleOutputManager video;video = new ConsoleOutputManager();

Oppure

ConsoleOutputManager video = new ConsoleOutputManager();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 82

Page 59: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Memorizzazione del riferimento

Dobbiamo:

dichiarare una variabile del tipo opportuno

assegnarle il valore restituito dall’espressione di creazione

ConsoleOutputManager video;video = new ConsoleOutputManager();

Oppure

ConsoleOutputManager video = new ConsoleOutputManager();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 82

Page 60: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Memorizzazione del riferimento

Dobbiamo:

dichiarare una variabile del tipo opportuno

assegnarle il valore restituito dall’espressione di creazione

ConsoleOutputManager video;video = new ConsoleOutputManager();

Oppure

ConsoleOutputManager video = new ConsoleOutputManager();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 82

Page 61: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Memorizzazione del riferimento

Dobbiamo:

dichiarare una variabile del tipo opportuno

assegnarle il valore restituito dall’espressione di creazione

ConsoleOutputManager video;video = new ConsoleOutputManager();

Oppure

ConsoleOutputManager video = new ConsoleOutputManager();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 22 / 82

Page 62: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Situazione in memoria

ConsoleOutputManager video = new ConsoleOutputManager();

video e una variabile che contiene come valore un riferimento a unoggetto

l’oggetto contiene

le informazioni che ne caratterizzano lo statole informazioni che servono alla JVM per la gestionedell’oggetto

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 24 / 82

Page 63: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Situazione in memoria

ConsoleOutputManager video = new ConsoleOutputManager();

video e una variabile che contiene come valore un riferimento a unoggetto

l’oggetto contiene

le informazioni che ne caratterizzano lo statole informazioni che servono alla JVM per la gestionedell’oggetto

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 24 / 82

Page 64: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Situazione in memoria

ConsoleOutputManager video = new ConsoleOutputManager();

video e una variabile che contiene come valore un riferimento a unoggetto

l’oggetto contiene

le informazioni che ne caratterizzano lo statole informazioni che servono alla JVM per la gestionedell’oggetto

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 24 / 82

Page 65: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Invocazione di un metodo

Invocazione di metodo

riferimento a oggetto.nome metodo(lista argomenti)

Esempio

ConsoleOutputManager video = new ConsoleOutputManager();video.println("Ecco il mio primo programma");

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 26 / 82

Page 66: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Invocazione di un metodo

Invocazione di metodo

riferimento a oggetto.nome metodo(lista argomenti)

Esempio

ConsoleOutputManager video = new ConsoleOutputManager();video.println("Ecco il mio primo programma");

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 26 / 82

Page 67: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

L’applicazione

import prog.io.ConsoleOutputManager;

class PrimoProgramma {

public static void main(String[] args) {ConsoleOutputManager video = new ConsoleOutputManager();

video.println("Ecco il mio primo programma!");}

}

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 28 / 82

Page 68: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Compilazione ed esecuzione

Compilazione

> javac PrimoProgramma.java

Viene generato il file PrimoProgramma.class contenente il bytecode

Esecuzione

> java PrimoProgrammaEcco il mio primo programma!

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 30 / 82

Page 69: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Compilazione ed esecuzione

Compilazione

> javac PrimoProgramma.java

Viene generato il file PrimoProgramma.class contenente il bytecode

Esecuzione

> java PrimoProgrammaEcco il mio primo programma!

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 30 / 82

Page 70: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Compilazione ed esecuzione

Compilazione

> javac PrimoProgramma.java

Viene generato il file PrimoProgramma.class contenente il bytecode

Esecuzione

> java PrimoProgrammaEcco il mio primo programma!

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 30 / 82

Page 71: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

ConsoleInputManager (prog.io)

Contratto: ConsoleInputManager

Le sue istanze realizzano canali di comunicazione con il dispositivo di inputstandard, cioe la tastiera.

Messaggi:

readLine legge una riga di testo

readInt legge un numero intero

. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 31 / 82

Page 72: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

ConsoleInputManager (prog.io)

Contratto: ConsoleInputManager

Le sue istanze realizzano canali di comunicazione con il dispositivo di inputstandard, cioe la tastiera.

Messaggi:

readLine legge una riga di testo

readInt legge un numero intero

. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 31 / 82

andreamasini
Highlight
andreamasini
Highlight
andreamasini
Sticky Note
fine lezione 13 ottobre
Page 73: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

ConsoleInputManager (prog.io)

Contratto: ConsoleInputManager

Le sue istanze realizzano canali di comunicazione con il dispositivo di inputstandard, cioe la tastiera.

Messaggi:

readLine legge una riga di testo

readInt legge un numero intero

. . .

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 31 / 82

Page 74: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Esempio

import prog.io.ConsoleOutputManager;import prog.io.ConsoleInputManager;

class Pappagallo {public static void main(String[] args) {//predisposizione dei canali di comunicazioneConsoleInputManager tastiera = new ConsoleInputManager();ConsoleOutputManager video = new ConsoleOutputManager();

//lettura e comunicazioneString messaggio = tastiera.readLine();video.println(messaggio);

}}

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 33 / 82

Page 75: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Sommario: Protocolli e contratti

1 Nozioni base della programmazione OOLa programmazione ad oggettiProtocolli e contrattiClassi

2 Primi esempi di classi e oggettiLa classe ConsoleOutputManagerCreazione degli oggettiInvocazione di un metodoLa classe ConsoleInputManager

3 Prototipi e segnature

4 La classe String

5 Variabili e tipiDichiarazione e definizione di variabiliTipi primitivi e tipi riferimento

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 34 / 82

Page 76: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Segnature e prototipi

Segnatura di un metodo

E costituita da:

nome del metodo

lista degli argomenti con il relativo tipo

Esempio

println(String s)

nome lista argomenti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 35 / 82

Page 77: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Segnature e prototipi

Segnatura di un metodo

E costituita da:

nome del metodo

lista degli argomenti con il relativo tipo

Esempio

println(String s)

nome lista argomenti

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 35 / 82

Page 78: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Segnature e prototipi

Prototipo di un metodo

E costituito da:

tipo del valore restituito dal metodo

nome del metodo

lista degli argomenti con il relativo tipo

prototipo = tipo restituito + segnatura

Esempio

String readline()

tipo restituito nome lista argomenti (vuota)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 36 / 82

Page 79: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Segnature e prototipi

Prototipo di un metodo

E costituito da:

tipo del valore restituito dal metodo

nome del metodo

lista degli argomenti con il relativo tipo

prototipo = tipo restituito + segnatura

Esempio

String readline()

tipo restituito nome lista argomenti (vuota)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 36 / 82

Page 80: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Segnature e prototipi

Prototipo di un metodo

E costituito da:

tipo del valore restituito dal metodo

nome del metodo

lista degli argomenti con il relativo tipo

prototipo = tipo restituito + segnatura

Esempio

String readline()

tipo restituito nome lista argomenti (vuota)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 36 / 82

Page 81: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Alcuni metodi di ConsoleOutputManager

tipo restituito nome del metodo argomentivoid print intvoid print riferimento a Stringvoid println nessunovoid println intvoid println riferimento a String

void

E una parola chiave

Indica che il metodo non restituisce nulla

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 37 / 82

Page 82: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Alcuni metodi di ConsoleOutputManager

tipo restituito nome del metodo argomentivoid print intvoid print riferimento a Stringvoid println nessunovoid println intvoid println riferimento a String

Overloading (“sovraccaricamento”)

Possibilita di avere metodi con lo stesso nome ma segnatura diversa

Il compilatore e in grado di capire quale metodo intendiamo invocarein base al modo in cui lo invochiamo (alla lista degli argomenti cheforniamo)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 37 / 82

Page 83: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Sommario: Protocolli e contratti

1 Nozioni base della programmazione OOLa programmazione ad oggettiProtocolli e contrattiClassi

2 Primi esempi di classi e oggettiLa classe ConsoleOutputManagerCreazione degli oggettiInvocazione di un metodoLa classe ConsoleInputManager

3 Prototipi e segnature

4 La classe String

5 Variabili e tipiDichiarazione e definizione di variabiliTipi primitivi e tipi riferimento

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 38 / 82

Page 84: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

La classe String

Contratto: String

Le istanze della classe String modellano stringhe, cioe sequenze arbitrariedi caratteri

Mette a disposizione (fra gli altri) un costruttore che riceve comeargomento una sequenza di caratteri compresa fra doppi apici

String s = new String("Java");

Vari metodi per la manipolazione di stringhe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 82

Page 85: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

La classe String

Contratto: String

Le istanze della classe String modellano stringhe, cioe sequenze arbitrariedi caratteri

Mette a disposizione (fra gli altri) un costruttore che riceve comeargomento una sequenza di caratteri compresa fra doppi apici

String s = new String("Java");

Vari metodi per la manipolazione di stringhe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 82

Page 86: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

La classe String

Contratto: String

Le istanze della classe String modellano stringhe, cioe sequenze arbitrariedi caratteri

Mette a disposizione (fra gli altri) un costruttore che riceve comeargomento una sequenza di caratteri compresa fra doppi apici

String s = new String("Java");

Vari metodi per la manipolazione di stringhe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 82

Page 87: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

La classe String

Contratto: String

Le istanze della classe String modellano stringhe, cioe sequenze arbitrariedi caratteri

Mette a disposizione (fra gli altri) un costruttore che riceve comeargomento una sequenza di caratteri compresa fra doppi apici

String s = new String("Java");

Vari metodi per la manipolazione di stringhe

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 40 / 82

Page 88: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Letterali di tipo String

Letterali

Rappresentano i valori di un tipo all’interno di un programma Java

Un letterale di tipo String e una sequenza di caratteri compresi fradoppi apici

Il linguaggio fornisce un meccanismo implicito per creare oggetti ditipo String ricorrendo semplicemente al letterale

String s = "Java";

e equivalente a

String s = new String("Java");

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 82

Page 89: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Letterali di tipo String

Letterali

Rappresentano i valori di un tipo all’interno di un programma Java

Un letterale di tipo String e una sequenza di caratteri compresi fradoppi apici

Il linguaggio fornisce un meccanismo implicito per creare oggetti ditipo String ricorrendo semplicemente al letterale

String s = "Java";

e equivalente a

String s = new String("Java");

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 82

Page 90: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Letterali di tipo String

Letterali

Rappresentano i valori di un tipo all’interno di un programma Java

Un letterale di tipo String e una sequenza di caratteri compresi fradoppi apici

Il linguaggio fornisce un meccanismo implicito per creare oggetti ditipo String ricorrendo semplicemente al letterale

String s = "Java";

e equivalente a

String s = new String("Java");

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 82

Page 91: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Letterali di tipo String

Letterali

Rappresentano i valori di un tipo all’interno di un programma Java

Un letterale di tipo String e una sequenza di caratteri compresi fradoppi apici

Il linguaggio fornisce un meccanismo implicito per creare oggetti ditipo String ricorrendo semplicemente al letterale

String s = "Java";

e equivalente a

String s = new String("Java");

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 42 / 82

Page 92: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Sequenze di escape

Alcuni caratteri che hanno un significato particolare possono essererappresentati mediante sequenze di escape:

Sequenza di escape Unicode Significato\b \u0008 backspace BS\t \u0009 horizontal tab HT\n \u000a linefeed LF\f \u000c form feed FF\r \u000d carriage return CR\" \u0022 double quote\’ \u0027 single quote ’\\ \u005c backslash

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 44 / 82

Page 93: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toUpperCase()

tipo restituito nome del metodo argomenti

riferimento a String toUpperCase nessuno

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere minuscole, che sono trasformate nelle maiuscole corrispondenti.

Esempi

(1) String s1 = "Ciao";String s2 = s1.toUpperCase();

(2) String s2 = "Ciao".toUpperCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 46 / 82

Page 94: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toUpperCase()

tipo restituito nome del metodo argomenti

riferimento a String toUpperCase nessuno

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere minuscole, che sono trasformate nelle maiuscole corrispondenti.

Esempi

(1) String s1 = "Ciao";String s2 = s1.toUpperCase();

(2) String s2 = "Ciao".toUpperCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 46 / 82

Page 95: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toUpperCase()

tipo restituito nome del metodo argomenti

riferimento a String toUpperCase nessuno

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere minuscole, che sono trasformate nelle maiuscole corrispondenti.

Esempi

(1) String s1 = "Ciao";String s2 = s1.toUpperCase();

(2) String s2 = "Ciao".toUpperCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 46 / 82

Page 96: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toUpperCase()

tipo restituito nome del metodo argomenti

riferimento a String toUpperCase nessuno

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere minuscole, che sono trasformate nelle maiuscole corrispondenti.

Esempi

(1) String s1 = "Ciao";String s2 = s1.toUpperCase();

(2) String s2 = "Ciao".toUpperCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 46 / 82

Page 97: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Osservazione

...String messaggio = tastiera.readLine();String risposta = messaggio.toUpperCase();...

messaggioString

"Ciao"

String

"CIAO"

risposta

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 48 / 82

Page 98: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toLowerCase()

tipo restituito nome del metodo argomenti

riferimento a String toLowerCase nessuno

Contratto

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere maiuscole, che sono trasformate nelle minuscole corrispondenti.

Esempi

(1) String s1 = "CIAO";String s2 = s1.toLowerCase();

(2) String s2 = "ciao".toLowerCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 50 / 82

Page 99: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toLowerCase()

tipo restituito nome del metodo argomenti

riferimento a String toLowerCase nessuno

Contratto

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere maiuscole, che sono trasformate nelle minuscole corrispondenti.

Esempi

(1) String s1 = "CIAO";String s2 = s1.toLowerCase();

(2) String s2 = "ciao".toLowerCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 50 / 82

Page 100: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toLowerCase()

tipo restituito nome del metodo argomenti

riferimento a String toLowerCase nessuno

Contratto

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere maiuscole, che sono trasformate nelle minuscole corrispondenti.

Esempi

(1) String s1 = "CIAO";String s2 = s1.toLowerCase();

(2) String s2 = "ciao".toLowerCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 50 / 82

Page 101: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String toLowerCase()

tipo restituito nome del metodo argomenti

riferimento a String toLowerCase nessuno

Contratto

Restituisce come risultato il riferimento a una nuova stringa costituita daglistessi caratteri della stringa che esegue il metodo, con l’eccezione dellelettere maiuscole, che sono trasformate nelle minuscole corrispondenti.

Esempi

(1) String s1 = "CIAO";String s2 = s1.toLowerCase();

(2) String s2 = "ciao".toLowerCase();

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 50 / 82

Page 102: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public int length()

tipo restituito nome del metodo argomenti

int length nessuno

Contratto

Restituisce un valore di tipo int, cioe un numero intero, uguale allalunghezza della stringa rappresentata dall’oggetto che esegue il metodo.

(1) "Ciao".length() restituisce 4

(2) "".length() restituisce 0

Il letterale "" rappresenta la stringa vuota

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 82

Page 103: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public int length()

tipo restituito nome del metodo argomenti

int length nessuno

Contratto

Restituisce un valore di tipo int, cioe un numero intero, uguale allalunghezza della stringa rappresentata dall’oggetto che esegue il metodo.

(1) "Ciao".length() restituisce 4

(2) "".length() restituisce 0

Il letterale "" rappresenta la stringa vuota

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 82

Page 104: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public int length()

tipo restituito nome del metodo argomenti

int length nessuno

Contratto

Restituisce un valore di tipo int, cioe un numero intero, uguale allalunghezza della stringa rappresentata dall’oggetto che esegue il metodo.

(1) "Ciao".length() restituisce 4

(2) "".length() restituisce 0

Il letterale "" rappresenta la stringa vuota

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 82

Page 105: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public int length()

tipo restituito nome del metodo argomenti

int length nessuno

Contratto

Restituisce un valore di tipo int, cioe un numero intero, uguale allalunghezza della stringa rappresentata dall’oggetto che esegue il metodo.

(1) "Ciao".length() restituisce 4

(2) "".length() restituisce 0

Il letterale "" rappresenta la stringa vuota

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 82

Page 106: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public int length()

tipo restituito nome del metodo argomenti

int length nessuno

Contratto

Restituisce un valore di tipo int, cioe un numero intero, uguale allalunghezza della stringa rappresentata dall’oggetto che esegue il metodo.

(1) "Ciao".length() restituisce 4

(2) "".length() restituisce 0

Il letterale "" rappresenta la stringa vuota

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 52 / 82

Page 107: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String concat(String str)

tipo restituito nome del metodo argomenti

riferimento a String concat riferimento a String

Contratto

Restituisce un riferimento alla stringa ottenuta concatenando alla stringache esegue il metodo la stringa fornita come argomento.

(1) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome).concat("!");

(2) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome.concat("!"));

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 54 / 82

Page 108: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String concat(String str)

tipo restituito nome del metodo argomenti

riferimento a String concat riferimento a String

Contratto

Restituisce un riferimento alla stringa ottenuta concatenando alla stringache esegue il metodo la stringa fornita come argomento.

(1) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome).concat("!");

(2) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome.concat("!"));

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 54 / 82

Page 109: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String concat(String str)

tipo restituito nome del metodo argomenti

riferimento a String concat riferimento a String

Contratto

Restituisce un riferimento alla stringa ottenuta concatenando alla stringache esegue il metodo la stringa fornita come argomento.

(1) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome).concat("!");

(2) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome.concat("!"));

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 54 / 82

Page 110: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String concat(String str)

tipo restituito nome del metodo argomenti

riferimento a String concat riferimento a String

Contratto

Restituisce un riferimento alla stringa ottenuta concatenando alla stringache esegue il metodo la stringa fornita come argomento.

(1) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome).concat("!");

(2) String nome = "Pippo";String risposta = "Buongiorno ".concat(nome.concat("!"));

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 54 / 82

Page 111: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

L’operatore + su stringhe

Fornisce un’abbreviazione per la concatenazione di stringhe:

String nome = "Pippo";String risposta = "Buongiorno ".concat(nome).concat("!");

e equivalente a

String risposta = "Buongiorno " + nome + "!";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 56 / 82

Page 112: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

L’operatore + su stringhe

Fornisce un’abbreviazione per la concatenazione di stringhe:

String nome = "Pippo";String risposta = "Buongiorno ".concat(nome).concat("!");

e equivalente a

String risposta = "Buongiorno " + nome + "!";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 56 / 82

Page 113: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Spezzare le righe

Non e possibile scrivere letterali di tipo String che occupino piu di unariga

String mess = "Questo e’ un messaggio particolarmentelungo che dobbiamo spezzare in piu’righe";

non viene accettata dal compilatore

String mes = "Questo e’ un messaggio particolarmente " +"lungo che dobbiamo spezzare in piu’ " +"righe";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 58 / 82

Page 114: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Spezzare le righe

Non e possibile scrivere letterali di tipo String che occupino piu di unariga

String mess = "Questo e’ un messaggio particolarmentelungo che dobbiamo spezzare in piu’righe";

non viene accettata dal compilatore

String mes = "Questo e’ un messaggio particolarmente " +"lungo che dobbiamo spezzare in piu’ " +"righe";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 58 / 82

Page 115: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin, int end)

tipo restituito nome del metodo argomenti

riferimento a String substring due int

Contratto

Restituisce il riferimento a una stringa formata dai caratteri che vannodalla posizione begin fino alla posizione end - 1 della stringa che esegueil metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.

Esempi

(1) "distruggere"

ha 11 caratteri, d e in posizione 0, la ultima e in posizione 10

(2) "distruggere".substring(2, 9)

fornisce come risultato un riferimento alla stringa "strugge"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 60 / 82

Page 116: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin, int end)

tipo restituito nome del metodo argomenti

riferimento a String substring due int

Contratto

Restituisce il riferimento a una stringa formata dai caratteri che vannodalla posizione begin fino alla posizione end - 1 della stringa che esegueil metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.

Esempi

(1) "distruggere"

ha 11 caratteri, d e in posizione 0, la ultima e in posizione 10

(2) "distruggere".substring(2, 9)

fornisce come risultato un riferimento alla stringa "strugge"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 60 / 82

Page 117: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin, int end)

tipo restituito nome del metodo argomenti

riferimento a String substring due int

Contratto

Restituisce il riferimento a una stringa formata dai caratteri che vannodalla posizione begin fino alla posizione end - 1 della stringa che esegueil metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.

Esempi

(1) "distruggere"

ha 11 caratteri, d e in posizione 0, la ultima e in posizione 10

(2) "distruggere".substring(2, 9)

fornisce come risultato un riferimento alla stringa "strugge"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 60 / 82

Page 118: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin, int end)

tipo restituito nome del metodo argomenti

riferimento a String substring due int

Contratto

Restituisce il riferimento a una stringa formata dai caratteri che vannodalla posizione begin fino alla posizione end - 1 della stringa che esegueil metodo. Le posizioni di una stringa lunga n vanno da 0 a n − 1.

Esempi

(1) "distruggere"

ha 11 caratteri, d e in posizione 0, la ultima e in posizione 10

(2) "distruggere".substring(2, 9)

fornisce come risultato un riferimento alla stringa "strugge"

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 60 / 82

Page 119: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin)

tipo restituito nome del metodo argomenti

riferimento a String substring un int

Contratto

Restituisce un riferimento a una stringa formata da tutti i caratteri dellastringa che esegue il metodo che si trovano tra la posizione specificatanell’argomento e la fine della stringa.

Esempi

"distruggere".substring(8)

restituisce un riferimento alla stringa "ere".

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 62 / 82

Page 120: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin)

tipo restituito nome del metodo argomenti

riferimento a String substring un int

Contratto

Restituisce un riferimento a una stringa formata da tutti i caratteri dellastringa che esegue il metodo che si trovano tra la posizione specificatanell’argomento e la fine della stringa.

Esempi

"distruggere".substring(8)

restituisce un riferimento alla stringa "ere".

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 62 / 82

Page 121: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

public String substring(int begin)

tipo restituito nome del metodo argomenti

riferimento a String substring un int

Contratto

Restituisce un riferimento a una stringa formata da tutti i caratteri dellastringa che esegue il metodo che si trovano tra la posizione specificatanell’argomento e la fine della stringa.

Esempi

"distruggere".substring(8)

restituisce un riferimento alla stringa "ere".

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 62 / 82

Page 122: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Sommario: Protocolli e contratti

1 Nozioni base della programmazione OOLa programmazione ad oggettiProtocolli e contrattiClassi

2 Primi esempi di classi e oggettiLa classe ConsoleOutputManagerCreazione degli oggettiInvocazione di un metodoLa classe ConsoleInputManager

3 Prototipi e segnature

4 La classe String

5 Variabili e tipiDichiarazione e definizione di variabiliTipi primitivi e tipi riferimento

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 63 / 82

Page 123: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Java: linguaggio fortemente tipato

Il tipo di ogni variabile e di ogni espressione che appare in un programmapuo essere identificato leggendo il testo del programma e, dunque, e notoal momento della compilazione.

Durante la compilazione sono effettuati tutti i controlli relativi allacompatibilita dei tipi e sono stabilite eventuali conversioni implicite

Le nozioni di variabile, tipo ed espressione, sono fondamentali in tuttii linguaggi di programmazione

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 65 / 82

Page 124: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Java: linguaggio fortemente tipato

Il tipo di ogni variabile e di ogni espressione che appare in un programmapuo essere identificato leggendo il testo del programma e, dunque, e notoal momento della compilazione.

Durante la compilazione sono effettuati tutti i controlli relativi allacompatibilita dei tipi e sono stabilite eventuali conversioni implicite

Le nozioni di variabile, tipo ed espressione, sono fondamentali in tuttii linguaggi di programmazione

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 65 / 82

Page 125: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Java: linguaggio fortemente tipato

Il tipo di ogni variabile e di ogni espressione che appare in un programmapuo essere identificato leggendo il testo del programma e, dunque, e notoal momento della compilazione.

Durante la compilazione sono effettuati tutti i controlli relativi allacompatibilita dei tipi e sono stabilite eventuali conversioni implicite

Le nozioni di variabile, tipo ed espressione, sono fondamentali in tuttii linguaggi di programmazione

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 65 / 82

Page 126: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

int x;int y;

operatore + denota una somma tra numeri interi

risultato e di tipo int

valutazione viene fatta sommando i valori contenuti nelle due variabili

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 67 / 82

Page 127: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

int x;int y;

operatore + denota una somma tra numeri interi

risultato e di tipo int

valutazione viene fatta sommando i valori contenuti nelle due variabili

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 67 / 82

Page 128: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

int x;int y;

operatore + denota una somma tra numeri interi

risultato e di tipo int

valutazione viene fatta sommando i valori contenuti nelle due variabili

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 67 / 82

Page 129: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

String x;String y;

operatore + denota una concatenazione tra stringhe

risultato e un riferimento a un oggetto di tipo String

valutazione viene costruita la stringa costituita dalla concatenazione diquella a cui fa riferimento x con quella a cui fa riferimento y

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 69 / 82

Page 130: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

String x;String y;

operatore + denota una concatenazione tra stringhe

risultato e un riferimento a un oggetto di tipo String

valutazione viene costruita la stringa costituita dalla concatenazione diquella a cui fa riferimento x con quella a cui fa riferimento y

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 69 / 82

Page 131: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

String x;String y;

operatore + denota una concatenazione tra stringhe

risultato e un riferimento a un oggetto di tipo String

valutazione viene costruita la stringa costituita dalla concatenazione diquella a cui fa riferimento x con quella a cui fa riferimento y

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 69 / 82

Page 132: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

String x;int y;

operatore + denota una concatenazione tra stringhe

risultato e un riferimento a un oggetto di tipo String

valutazione viene costruita la stringa costituita dalla concatenazione diquella a cui fa riferimento x con quella che rappresenta ilvalore memorizzato in y (conversione implicita)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 71 / 82

Page 133: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

String x;int y;

operatore + denota una concatenazione tra stringhe

risultato e un riferimento a un oggetto di tipo String

valutazione viene costruita la stringa costituita dalla concatenazione diquella a cui fa riferimento x con quella che rappresenta ilvalore memorizzato in y (conversione implicita)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 71 / 82

Page 134: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Espressioni e tipi

Esempio

Il significato dell’espressione x + y dipende dai tipi delle variabili x e y.

String x;int y;

operatore + denota una concatenazione tra stringhe

risultato e un riferimento a un oggetto di tipo String

valutazione viene costruita la stringa costituita dalla concatenazione diquella a cui fa riferimento x con quella che rappresenta ilvalore memorizzato in y (conversione implicita)

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 71 / 82

Page 135: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Dichiarazione e definizione di variabili

Dichiarazione di variabili

Tipo var1, var2, . . . ;

Definizione di variabili

Tipo var1 = espr1, var2 = espr2, . . . ;

Esempioint x, y;String s;

int i = 4, j = 3;String nome = "pippo";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 73 / 82

Page 136: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Dichiarazione e definizione di variabili

Dichiarazione di variabili

Tipo var1, var2, . . . ;

Definizione di variabili

Tipo var1 = espr1, var2 = espr2, . . . ;

Esempioint x, y;String s;

int i = 4, j = 3;String nome = "pippo";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 73 / 82

Page 137: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Dichiarazione e definizione di variabili

Dichiarazione di variabili

Tipo var1, var2, . . . ;

Definizione di variabili

Tipo var1 = espr1, var2 = espr2, . . . ;

Esempioint x, y;String s;

int i = 4, j = 3;String nome = "pippo";

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 73 / 82

Page 138: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Tipi primitivi e tipi riferimento

Tipi primitivi (come int)Una variabile di tipo primitivo puo essere immaginata come unascatola in grado di contenere direttamente un valore

Tipi riferimento (come String)Una variabile di un tipo riferimento contiene il riferimento chepermette di accedere all’oggetto riferito.

Esempio

int i = 10;String s = pippo;

sString

"pippo"

i

10

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 74 / 82

Page 139: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Tipi primitivi e tipi riferimento

Tipi primitivi (come int)Una variabile di tipo primitivo puo essere immaginata come unascatola in grado di contenere direttamente un valore

Tipi riferimento (come String)Una variabile di un tipo riferimento contiene il riferimento chepermette di accedere all’oggetto riferito.

Esempio

int i = 10;String s = pippo;

sString

"pippo"

i

10

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 74 / 82

Page 140: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Tipi primitivi e tipi riferimento

Tipi primitivi (come int)Una variabile di tipo primitivo puo essere immaginata come unascatola in grado di contenere direttamente un valore

Tipi riferimento (come String)Una variabile di un tipo riferimento contiene il riferimento chepermette di accedere all’oggetto riferito.

Esempio

int i = 10;String s = pippo;

sString

"pippo"

i

10

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 74 / 82

Page 141: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Tipi primitivi e tipi riferimento

Tipi primitivi

byte short int longcharbooleanfloat double

Tipi riferimento

classiinterfaccearray

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 76 / 82

Page 142: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Tipi primitivi e tipi riferimento

Tipi primitivi

byte short int longcharbooleanfloat double

Tipi riferimento

classiinterfaccearray

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 76 / 82

Page 143: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Assegnamento fra variabili di tipo primitivo

int x, y;y = x;

y = x

x

y

10

x

y

10

10

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 78 / 82

Page 144: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Assegnamento fra variabili di tipo riferimento

String x, y;y = x;

y = x

String

"pippo"

x

y

String

"pippo"

x

y

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 80 / 82

Page 145: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Il letterale null

Rappresenta un valore assegnabile a tutte le variabili di tiporiferimento

Indica convenzionalmente che la variabile non fa riferimento ad alcunoggetto

Il tentativo di accedere a un oggetto tramite un riferimento nullprovoca un errore di esecuzione (si richiede un servizio ad un oggettoinesistente)

Esempio

String s;s = null;int x = s.length(); //ERRORE IN FASE DI ESECUZIONE

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 82 / 82

Page 146: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Il letterale null

Rappresenta un valore assegnabile a tutte le variabili di tiporiferimento

Indica convenzionalmente che la variabile non fa riferimento ad alcunoggetto

Il tentativo di accedere a un oggetto tramite un riferimento nullprovoca un errore di esecuzione (si richiede un servizio ad un oggettoinesistente)

Esempio

String s;s = null;int x = s.length(); //ERRORE IN FASE DI ESECUZIONE

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 82 / 82

Page 147: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Il letterale null

Rappresenta un valore assegnabile a tutte le variabili di tiporiferimento

Indica convenzionalmente che la variabile non fa riferimento ad alcunoggetto

Il tentativo di accedere a un oggetto tramite un riferimento nullprovoca un errore di esecuzione (si richiede un servizio ad un oggettoinesistente)

Esempio

String s;s = null;int x = s.length(); //ERRORE IN FASE DI ESECUZIONE

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 82 / 82

Page 148: Protocolli e contratti - Capitolo 2...c 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 2 / 82 Paradigma di programmazione Paradigma...un insieme di teorie, standard

Il letterale null

Rappresenta un valore assegnabile a tutte le variabili di tiporiferimento

Indica convenzionalmente che la variabile non fa riferimento ad alcunoggetto

Il tentativo di accedere a un oggetto tramite un riferimento nullprovoca un errore di esecuzione (si richiede un servizio ad un oggettoinesistente)

Esempio

String s;s = null;int x = s.length(); //ERRORE IN FASE DI ESECUZIONE

c© 2005 Pearson Education Italia Capitolo 2 - Protocolli e contratti 82 / 82