implementazione delle classi - capitolo 7€¦ · c 2005 pearson education italia capitolo 7 -...

160
Capitolo 7 Implementazione delle classi c 2005 Pearson Education Italia Capitolo 7 - 1 / 115

Upload: others

Post on 01-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Capitolo 7

Implementazione delleclassi

c© 2005 Pearson Education Italia Capitolo 7 - 1 / 115

Page 2: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Sommario: Implementazione delle classi

1 Struttura delle classi

2 Implementazione della classe FrazioneVariabili locali, parametri formali e attualiUna nuova implementazione della classe FrazioneImplementazione dell’interfaccia Comparable

3 La classe OrarioCampi e metodi statici

4 PackageDefinizione di packageModificatori di visibilita

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 2 / 115

Page 3: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Classi

Una classe e una ricetta che descrive come sono fatti i suoi oggetti.

In particolare definisce:

CampiI dati che costituiscono lo stato di ogni singolo oggetto

CostruttoriLe porzioni di codice che inizializzano in modo opportuno lo stato diogni nuovo oggetto

MetodiI comportamenti di ogni singolo oggetto

La classe dev’essere progettata in modo indipendente dalle applicazioni chela utilizzeranno

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 3 / 115

Page 4: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Classi

Una classe e una ricetta che descrive come sono fatti i suoi oggetti.

In particolare definisce:

CampiI dati che costituiscono lo stato di ogni singolo oggetto

CostruttoriLe porzioni di codice che inizializzano in modo opportuno lo stato diogni nuovo oggetto

MetodiI comportamenti di ogni singolo oggetto

La classe dev’essere progettata in modo indipendente dalle applicazioni chela utilizzeranno

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 3 / 115

Page 5: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Classi

Una classe e una ricetta che descrive come sono fatti i suoi oggetti.

In particolare definisce:

CampiI dati che costituiscono lo stato di ogni singolo oggetto

CostruttoriLe porzioni di codice che inizializzano in modo opportuno lo stato diogni nuovo oggetto

MetodiI comportamenti di ogni singolo oggetto

La classe dev’essere progettata in modo indipendente dalle applicazioni chela utilizzeranno

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 3 / 115

Page 6: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Classi

Una classe e una ricetta che descrive come sono fatti i suoi oggetti.

In particolare definisce:

CampiI dati che costituiscono lo stato di ogni singolo oggetto

CostruttoriLe porzioni di codice che inizializzano in modo opportuno lo stato diogni nuovo oggetto

MetodiI comportamenti di ogni singolo oggetto

La classe dev’essere progettata in modo indipendente dalle applicazioni chela utilizzeranno

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 3 / 115

Page 7: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Classi

Una classe e una ricetta che descrive come sono fatti i suoi oggetti.

In particolare definisce:

CampiI dati che costituiscono lo stato di ogni singolo oggetto

CostruttoriLe porzioni di codice che inizializzano in modo opportuno lo stato diogni nuovo oggetto

MetodiI comportamenti di ogni singolo oggetto

La classe dev’essere progettata in modo indipendente dalle applicazioni chela utilizzeranno

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 3 / 115

Page 8: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

La classe Frazione

public class Frazione {//CAMPI...

//COSTRUTTORI...

//METODI...

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 5 / 115

Page 9: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i campi

Una frazione e determinata da due numeri interi, il numeratore e ildenominatore

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore

//COSTRUTTORI...//METODI...

}

La rappresentazione dell’oggetto riguarda solo chi progetta la classe,non chi la utilizza

Nascondiamo questi campi dichiarandoli private (privati al codicedella classe)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 7 / 115

Page 10: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i campi

Una frazione e determinata da due numeri interi, il numeratore e ildenominatore

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore

//COSTRUTTORI...//METODI...

}

La rappresentazione dell’oggetto riguarda solo chi progetta la classe,non chi la utilizza

Nascondiamo questi campi dichiarandoli private (privati al codicedella classe)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 7 / 115

Page 11: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i campi

Una frazione e determinata da due numeri interi, il numeratore e ildenominatore

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore

//COSTRUTTORI...//METODI...

}

La rappresentazione dell’oggetto riguarda solo chi progetta la classe,non chi la utilizza

Nascondiamo questi campi dichiarandoli private (privati al codicedella classe)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 7 / 115

Page 12: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

Quando viene costruito un oggetto:

new Frazione(3,4)

(1) viene riservato lo spazio in memoria per l’oggetto

informazioni di controllo: il nome della classe a partire dalla quale estato costruito

stato: lo spazio per memorizzare i campi definiti nella classe

(2) vengono eseguite le istruzioni scritte nel codice del costruttore

Nel nostro caso il costruttore deve assegnare ai campi i valori forniti comeargomento

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 8 / 115

Page 13: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

Quando viene costruito un oggetto:

new Frazione(3,4)

(1) viene riservato lo spazio in memoria per l’oggetto

informazioni di controllo: il nome della classe a partire dalla quale estato costruito

stato: lo spazio per memorizzare i campi definiti nella classe

(2) vengono eseguite le istruzioni scritte nel codice del costruttore

Nel nostro caso il costruttore deve assegnare ai campi i valori forniti comeargomento

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 8 / 115

Page 14: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

Quando viene costruito un oggetto:

new Frazione(3,4)

(1) viene riservato lo spazio in memoria per l’oggetto

informazioni di controllo: il nome della classe a partire dalla quale estato costruito

stato: lo spazio per memorizzare i campi definiti nella classe

(2) vengono eseguite le istruzioni scritte nel codice del costruttore

Nel nostro caso il costruttore deve assegnare ai campi i valori forniti comeargomento

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 8 / 115

Page 15: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

Quando viene costruito un oggetto:

new Frazione(3,4)

(1) viene riservato lo spazio in memoria per l’oggetto

informazioni di controllo: il nome della classe a partire dalla quale estato costruito

stato: lo spazio per memorizzare i campi definiti nella classe

(2) vengono eseguite le istruzioni scritte nel codice del costruttore

Nel nostro caso il costruttore deve assegnare ai campi i valori forniti comeargomento

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 8 / 115

Page 16: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

Quando viene costruito un oggetto:

new Frazione(3,4)

(1) viene riservato lo spazio in memoria per l’oggetto

informazioni di controllo: il nome della classe a partire dalla quale estato costruito

stato: lo spazio per memorizzare i campi definiti nella classe

(2) vengono eseguite le istruzioni scritte nel codice del costruttore

Nel nostro caso il costruttore deve assegnare ai campi i valori forniti comeargomento

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 8 / 115

Page 17: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore

//COSTRUTTORIpublic Frazione(int x, int y) {num = x;den = y;

}

...

//METODI...

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 10 / 115

Page 18: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Costruzione degli oggetti

Frazione f1 = new Frazione(1,2);Frazione f2 = new Frazione(2,3);

f1Frazione

num

den

1

2

f2Frazione

num

den

2

3

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 12 / 115

Page 19: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: costruttori

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore

//COSTRUTTORIpublic Frazione(int x, int y) {num = x;den = y;

}

public Frazione(int x) {num = x;den = 1;

}

//METODI...

}c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 14 / 115

Page 20: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo per

public Frazione per(Frazione f)Restituisce il riferimento a un nuovo oggetto che rappresenta lafrazione ottenuta moltiplicando la frazione specificata comeargomento con quella che esegue il metodo.

Schema

calcola il numeratore della nuova frazionecalcola il denominatore della nuova frazionecostruisci la nuova frazionerestituisci un riferimento a essa

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115

Page 21: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo per

public Frazione per(Frazione f)Restituisce il riferimento a un nuovo oggetto che rappresenta lafrazione ottenuta moltiplicando la frazione specificata comeargomento con quella che esegue il metodo.

Schema

calcola il numeratore della nuova frazionecalcola il denominatore della nuova frazionecostruisci la nuova frazionerestituisci un riferimento a essa

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115

Page 22: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Accedere ai campi di un oggetto

Per accedere a un campo

riferimento oggetto.nome campo

I campi di un oggetto sono accessibili all’interno della classe anche sedichiarati private

Riferimento this:

in un metodo si riferisce all’oggetto che esegue il metodo

in un costruttore si riferisce all’oggetto che si sta costruendo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 16 / 115

Page 23: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Accedere ai campi di un oggetto

Per accedere a un campo

riferimento oggetto.nome campo

I campi di un oggetto sono accessibili all’interno della classe anche sedichiarati private

Riferimento this:

in un metodo si riferisce all’oggetto che esegue il metodo

in un costruttore si riferisce all’oggetto che si sta costruendo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 16 / 115

Page 24: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Accedere ai campi di un oggetto

Per accedere a un campo

riferimento oggetto.nome campo

I campi di un oggetto sono accessibili all’interno della classe anche sedichiarati private

Riferimento this:

in un metodo si riferisce all’oggetto che esegue il metodo

in un costruttore si riferisce all’oggetto che si sta costruendo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 16 / 115

Page 25: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Accedere ai campi di un oggetto

Per accedere a un campo

riferimento oggetto.nome campo

I campi di un oggetto sono accessibili all’interno della classe anche sedichiarati private

Riferimento this:

in un metodo si riferisce all’oggetto che esegue il metodo

in un costruttore si riferisce all’oggetto che si sta costruendo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 16 / 115

Page 26: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Esempio

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore

//COSTRUTTORIpublic Frazione(int x, int y) {this.num = x;this.den = y;

}...

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 18 / 115

Page 27: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo per

public class Frazione {//CAMPIprivate int num; //il numeratoreprivate int den; //il denominatore...//METODI...public Frazione per(Frazione f) {int n = this.num * f.num;int d = this.den * f.den;Frazione g = new Frazione(n, d);return g;

}...

}

return e la parola chiave che indica la restituzione del valore al chiamante,l’argomento dev’essere un’espressione del tipo restituito dal metodo.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 20 / 115

Page 28: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Sommario: Implementazione delle classi

1 Struttura delle classi

2 Implementazione della classe FrazioneVariabili locali, parametri formali e attualiUna nuova implementazione della classe FrazioneImplementazione dell’interfaccia Comparable

3 La classe OrarioCampi e metodi statici

4 PackageDefinizione di packageModificatori di visibilita

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 21 / 115

Page 29: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Variabili locali

Sono le variabili definite nel corpo di un metodo o di un costruttore.

Esempio

public Frazione per(Frazione f) {int n = this.num * f.num;int d = this.den * f.den;Frazione g = new Frazione(n, d);return g;

}

Sono utilizzate per la memorizzazione temporanea di valori durantel’esecuzione del metodo

Quando l’esecuzione del metodo termina vengono distrutte

Non vengono inizializzate automaticamente

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 23 / 115

Page 30: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Variabili locali

Sono le variabili definite nel corpo di un metodo o di un costruttore.

Esempio

public Frazione per(Frazione f) {int n = this.num * f.num;int d = this.den * f.den;Frazione g = new Frazione(n, d);return g;

}

Sono utilizzate per la memorizzazione temporanea di valori durantel’esecuzione del metodo

Quando l’esecuzione del metodo termina vengono distrutte

Non vengono inizializzate automaticamente

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 23 / 115

Page 31: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Variabili locali

Sono le variabili definite nel corpo di un metodo o di un costruttore.

Esempio

public Frazione per(Frazione f) {int n = this.num * f.num;int d = this.den * f.den;Frazione g = new Frazione(n, d);return g;

}

Sono utilizzate per la memorizzazione temporanea di valori durantel’esecuzione del metodo

Quando l’esecuzione del metodo termina vengono distrutte

Non vengono inizializzate automaticamente

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 23 / 115

Page 32: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Variabili locali

Sono le variabili definite nel corpo di un metodo o di un costruttore.

Esempio

public Frazione per(Frazione f) {int n = this.num * f.num;int d = this.den * f.den;Frazione g = new Frazione(n, d);return g;

}

Sono utilizzate per la memorizzazione temporanea di valori durantel’esecuzione del metodo

Quando l’esecuzione del metodo termina vengono distrutte

Non vengono inizializzate automaticamente

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 23 / 115

Page 33: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Variabili locali

Sono le variabili definite nel corpo di un metodo o di un costruttore.

Esempio

public Frazione per(Frazione f) {int n = this.num * f.num;int d = this.den * f.den;Frazione g = new Frazione(n, d);return g;

}

Sono utilizzate per la memorizzazione temporanea di valori durantel’esecuzione del metodo

Quando l’esecuzione del metodo termina vengono distrutte

Non vengono inizializzate automaticamente

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 23 / 115

Page 34: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri formali

Sono le variabili dichiarate nell’intestazione di un metodo o di uncostruttore.

Esempio

public Frazione(int x, int y){...}

Sono utilizzati per comunicare le informazioni necessarieall’esecuzione del metodo/costruttore

Sono variabili utilizzabili all’interno del codice del metodo/costruttore

Vengono inizializzati al momento dell’invocazione con il valore degliargomenti (parametri attuali)

Quando l’esecuzione del metodo termina vengono distrutti

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 24 / 115

Page 35: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri formali

Sono le variabili dichiarate nell’intestazione di un metodo o di uncostruttore.

Esempio

public Frazione(int x, int y){...}

Sono utilizzati per comunicare le informazioni necessarieall’esecuzione del metodo/costruttore

Sono variabili utilizzabili all’interno del codice del metodo/costruttore

Vengono inizializzati al momento dell’invocazione con il valore degliargomenti (parametri attuali)

Quando l’esecuzione del metodo termina vengono distrutti

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 24 / 115

Page 36: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri formali

Sono le variabili dichiarate nell’intestazione di un metodo o di uncostruttore.

Esempio

public Frazione(int x, int y){...}

Sono utilizzati per comunicare le informazioni necessarieall’esecuzione del metodo/costruttore

Sono variabili utilizzabili all’interno del codice del metodo/costruttore

Vengono inizializzati al momento dell’invocazione con il valore degliargomenti (parametri attuali)

Quando l’esecuzione del metodo termina vengono distrutti

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 24 / 115

Page 37: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri formali

Sono le variabili dichiarate nell’intestazione di un metodo o di uncostruttore.

Esempio

public Frazione(int x, int y){...}

Sono utilizzati per comunicare le informazioni necessarieall’esecuzione del metodo/costruttore

Sono variabili utilizzabili all’interno del codice del metodo/costruttore

Vengono inizializzati al momento dell’invocazione con il valore degliargomenti (parametri attuali)

Quando l’esecuzione del metodo termina vengono distrutti

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 24 / 115

Page 38: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri formali

Sono le variabili dichiarate nell’intestazione di un metodo o di uncostruttore.

Esempio

public Frazione(int x, int y){...}

Sono utilizzati per comunicare le informazioni necessarieall’esecuzione del metodo/costruttore

Sono variabili utilizzabili all’interno del codice del metodo/costruttore

Vengono inizializzati al momento dell’invocazione con il valore degliargomenti (parametri attuali)

Quando l’esecuzione del metodo termina vengono distrutti

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 24 / 115

Page 39: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri formali

Sono le variabili dichiarate nell’intestazione di un metodo o di uncostruttore.

Esempio

public Frazione(int x, int y){...}

Sono utilizzati per comunicare le informazioni necessarieall’esecuzione del metodo/costruttore

Sono variabili utilizzabili all’interno del codice del metodo/costruttore

Vengono inizializzati al momento dell’invocazione con il valore degliargomenti (parametri attuali)

Quando l’esecuzione del metodo termina vengono distrutti

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 24 / 115

Page 40: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri attuali

Sono le espressioni specificate all’atto dell’invocazione del metodo o delcostruttore.

Esempi

public Frazione(int x, int y)

Frazione f = new Frazione(3 * x, 2);

public Frazione per(Frazione f)

f.per((new Frazione(3, 5)).per(f))

Devono essere di un tipo compatibile con quello del parametroformale corrispondente

All’atto dell’esecuzione vengono valutati e il loro valore valore vieneutilizzato per inizializzare i parametri formali

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 25 / 115

Page 41: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri attuali

Sono le espressioni specificate all’atto dell’invocazione del metodo o delcostruttore.

Esempi

public Frazione(int x, int y)

Frazione f = new Frazione(3 * x, 2);

public Frazione per(Frazione f)

f.per((new Frazione(3, 5)).per(f))

Devono essere di un tipo compatibile con quello del parametroformale corrispondente

All’atto dell’esecuzione vengono valutati e il loro valore valore vieneutilizzato per inizializzare i parametri formali

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 25 / 115

Page 42: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri attuali

Sono le espressioni specificate all’atto dell’invocazione del metodo o delcostruttore.

Esempi

public Frazione(int x, int y)

Frazione f = new Frazione(3 * x, 2);

public Frazione per(Frazione f)

f.per((new Frazione(3, 5)).per(f))

Devono essere di un tipo compatibile con quello del parametroformale corrispondente

All’atto dell’esecuzione vengono valutati e il loro valore valore vieneutilizzato per inizializzare i parametri formali

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 25 / 115

Page 43: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri attuali

Sono le espressioni specificate all’atto dell’invocazione del metodo o delcostruttore.

Esempi

public Frazione(int x, int y)

Frazione f = new Frazione(3 * x, 2);

public Frazione per(Frazione f)

f.per((new Frazione(3, 5)).per(f))

Devono essere di un tipo compatibile con quello del parametroformale corrispondente

All’atto dell’esecuzione vengono valutati e il loro valore valore vieneutilizzato per inizializzare i parametri formali

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 25 / 115

Page 44: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Parametri attuali

Sono le espressioni specificate all’atto dell’invocazione del metodo o delcostruttore.

Esempi

public Frazione(int x, int y)

Frazione f = new Frazione(3 * x, 2);

public Frazione per(Frazione f)

f.per((new Frazione(3, 5)).per(f))

Devono essere di un tipo compatibile con quello del parametroformale corrispondente

All’atto dell’esecuzione vengono valutati e il loro valore valore vieneutilizzato per inizializzare i parametri formali

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 25 / 115

Page 45: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i metodi piu e meno

public Frazione piu(Frazione f) {int n = this.num * f.den + this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

public Frazione meno(Frazione f) {int n = this.num * f.den - this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 27 / 115

Page 46: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i metodi piu e meno

public Frazione piu(Frazione f) {int n = this.num * f.den + this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

public Frazione meno(Frazione f) {int n = this.num * f.den - this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 27 / 115

Page 47: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo equals

public boolean equals(Frazione f)Confronta la frazione rappresentata dall’oggetto che esegue il metodocon la frazione specificata come argomento. Restituisce true se ledue frazioni rappresentano lo stesso valore e false altrimenti.

Schema

calcola la differenza tra le due frazioniSE il numeratore della frazione risultante vale zeroALLORA

restituisci il valore trueALTRIMENTI

restituisci il valore falseFINESE

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 28 / 115

Page 48: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo equals

public boolean equals(Frazione f)Confronta la frazione rappresentata dall’oggetto che esegue il metodocon la frazione specificata come argomento. Restituisce true se ledue frazioni rappresentano lo stesso valore e false altrimenti.

Schema

calcola la differenza tra le due frazioniSE il numeratore della frazione risultante vale zeroALLORA

restituisci il valore trueALTRIMENTI

restituisci il valore falseFINESE

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 28 / 115

Page 49: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo equals

public boolean equals(Frazione f) {Frazione g = this.meno(f);if (g.num == 0)return true;

elsereturn false;

}

Istruzione return:

seguita da un’espressione di un tipo compatibile con il tipo restituitodal metodo

ogni possibile percorso di esecuzione del metodo deve contenereun’istruzione return

all’atto dell’esecuzione l’espressione viene valutata e il suo valore e ilvalore restituito dal metodo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 30 / 115

Page 50: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo equals

public boolean equals(Frazione f) {Frazione g = this.meno(f);if (g.num == 0)return true;

elsereturn false;

}

Istruzione return:

seguita da un’espressione di un tipo compatibile con il tipo restituitodal metodo

ogni possibile percorso di esecuzione del metodo deve contenereun’istruzione return

all’atto dell’esecuzione l’espressione viene valutata e il suo valore e ilvalore restituito dal metodo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 30 / 115

Page 51: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo equals

public boolean equals(Frazione f) {Frazione g = this.meno(f);if (g.num == 0)return true;

elsereturn false;

}

Istruzione return:

seguita da un’espressione di un tipo compatibile con il tipo restituitodal metodo

ogni possibile percorso di esecuzione del metodo deve contenereun’istruzione return

all’atto dell’esecuzione l’espressione viene valutata e il suo valore e ilvalore restituito dal metodo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 30 / 115

Page 52: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo equals

public boolean equals(Frazione f) {Frazione g = this.meno(f);if (g.num == 0)return true;

elsereturn false;

}

Istruzione return:

seguita da un’espressione di un tipo compatibile con il tipo restituitodal metodo

ogni possibile percorso di esecuzione del metodo deve contenereun’istruzione return

all’atto dell’esecuzione l’espressione viene valutata e il suo valore e ilvalore restituito dal metodo

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 30 / 115

Page 53: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i metodi isMinore e isMaggiore

public boolean isMinore(Frazione f) {Frazione g = this.meno(f);if ((g.num < 0 && g.den > 0) || (g.num > 0 && g.den < 0))return true;

elsereturn false;

}

public boolean isMaggiore(Frazione f) {Frazione g = this.meno(f);if ((g.num < 0 && g.den < 0) || (g.num > 0 && g.den > 0))return true;

elsereturn false;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 32 / 115

Page 54: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: i metodi isMinore e isMaggiore

public boolean isMinore(Frazione f) {Frazione g = this.meno(f);if ((g.num < 0 && g.den > 0) || (g.num > 0 && g.den < 0))return true;

elsereturn false;

}

public boolean isMaggiore(Frazione f) {Frazione g = this.meno(f);if ((g.num < 0 && g.den < 0) || (g.num > 0 && g.den > 0))return true;

elsereturn false;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 32 / 115

Page 55: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo toString

public String toString() {return num + "/" + den;

}

Osservazione

this puo essere omesso, sottintendendo cosı che ci riferiamo ai campidell’oggetto stesso.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 34 / 115

Page 56: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo toString

public String toString() {return num + "/" + den;

}

Osservazione

this puo essere omesso, sottintendendo cosı che ci riferiamo ai campidell’oggetto stesso.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 34 / 115

Page 57: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo toString

public String toString() {return num + "/" + den;

}

ProblemaSe il denominatore contiene zero, la frazione non ha senso.

public String toString() {if (den == 0)return "impossibile";

elsereturn num + "/" + den;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 36 / 115

Page 58: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: il metodo toString

public String toString() {return num + "/" + den;

}

ProblemaSe il denominatore contiene zero, la frazione non ha senso.

public String toString() {if (den == 0)return "impossibile";

elsereturn num + "/" + den;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 36 / 115

Page 59: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - costruttori

public Frazione(int x, int y) {num = x;den = y;

}

public Frazione(int x) {num = x;den = 1;

}

Osservazione

Il secondo costruttore puo essere simulato dal primo fornendo 1 come valoredel denominatore.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 38 / 115

Page 60: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

this per invocare un costruttore

public Frazione(int x, int y) {num = x;den = y;

}

public Frazione(int x) {this(x, 1);

}

Nel corpo del costruttore e possibile richiamare un altro costruttoredella stessa classe utilizzando this seguito dalla lista degli argomenti

L’invocazione del costruttore tramite this dev’essere la primaistruzione del codice del costruttore

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 40 / 115

Page 61: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

this per invocare un costruttore

public Frazione(int x, int y) {num = x;den = y;

}

public Frazione(int x) {this(x, 1);

}

Nel corpo del costruttore e possibile richiamare un altro costruttoredella stessa classe utilizzando this seguito dalla lista degli argomenti

L’invocazione del costruttore tramite this dev’essere la primaistruzione del codice del costruttore

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 40 / 115

Page 62: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

this per invocare un costruttore

public Frazione(int x, int y) {num = x;den = y;

}

public Frazione(int x) {this(x, 1);

}

Nel corpo del costruttore e possibile richiamare un altro costruttoredella stessa classe utilizzando this seguito dalla lista degli argomenti

L’invocazione del costruttore tramite this dev’essere la primaistruzione del codice del costruttore

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 40 / 115

Page 63: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - diviso

Osservazione

Per come e definita Frazione e possibile costruire oggetti che non hannosenso dal punto di vista matematico (con denominatore uguale a zero).

Alcuni metodi trattano in modo consistente le frazioni impossibili:

toString: restituisce "impossibile" per tali oggetti

piu, meno, per: se uno degli oggetti coinvolti rappresenta unafrazione "impossibile" restituiscono il riferimento a una frazione"impossibile"

public Frazione piu(Frazione f) {int n = this.num * f.den + this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 42 / 115

Page 64: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - diviso

Osservazione

Per come e definita Frazione e possibile costruire oggetti che non hannosenso dal punto di vista matematico (con denominatore uguale a zero).

Alcuni metodi trattano in modo consistente le frazioni impossibili:

toString: restituisce "impossibile" per tali oggetti

piu, meno, per: se uno degli oggetti coinvolti rappresenta unafrazione "impossibile" restituiscono il riferimento a una frazione"impossibile"

public Frazione piu(Frazione f) {int n = this.num * f.den + this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 42 / 115

Page 65: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - diviso

Osservazione

Per come e definita Frazione e possibile costruire oggetti che non hannosenso dal punto di vista matematico (con denominatore uguale a zero).

Alcuni metodi trattano in modo consistente le frazioni impossibili:

toString: restituisce "impossibile" per tali oggetti

piu, meno, per: se uno degli oggetti coinvolti rappresenta unafrazione "impossibile" restituiscono il riferimento a una frazione"impossibile"

public Frazione piu(Frazione f) {int n = this.num * f.den + this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 42 / 115

Page 66: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - diviso

Osservazione

Per come e definita Frazione e possibile costruire oggetti che non hannosenso dal punto di vista matematico (con denominatore uguale a zero).

Alcuni metodi trattano in modo consistente le frazioni impossibili:

toString: restituisce "impossibile" per tali oggetti

piu, meno, per: se uno degli oggetti coinvolti rappresenta unafrazione "impossibile" restituiscono il riferimento a una frazione"impossibile"

public Frazione piu(Frazione f) {int n = this.num * f.den + this.den * f.num;int d = this.den * f.den;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 42 / 115

Page 67: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - diviso

public Frazione diviso(Frazione f) {int n = this.num * f.den;int d = this.den * f.num;return new Frazione(n, d);

}

Scorretto se f e una frazione possibile e this e impossibile

public Frazione diviso(Frazione f) {if (f.den == 0)return new Frazione(0, 0);

else {int n = this.num * f.den;int d = this.den * f.num;return new Frazione(n, d);

}}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 44 / 115

Page 68: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - diviso

public Frazione diviso(Frazione f) {int n = this.num * f.den;int d = this.den * f.num;return new Frazione(n, d);

}

Scorretto se f e una frazione possibile e this e impossibile

public Frazione diviso(Frazione f) {if (f.den == 0)return new Frazione(0, 0);

else {int n = this.num * f.den;int d = this.den * f.num;return new Frazione(n, d);

}}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 44 / 115

Page 69: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - toString

Se il denominatore vale 1 vogliamo che sia restituita una stringa in cui noncompare l’indicazione del denominatore.

Schema

SE il denominatore e uguale a 0ALLORA

restituisci "impossibile"ALTRIMENTISE il denominatore e uguale a 1ALLORA

restituisci il valore del numeratoreALTRIMENTI

restituisci la stringa della forma numeratore/denominatoreFINESE

FINESE

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 46 / 115

Page 70: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - toString

Se il denominatore vale 1 vogliamo che sia restituita una stringa in cui noncompare l’indicazione del denominatore.

Schema

SE il denominatore e uguale a 0ALLORA

restituisci "impossibile"ALTRIMENTISE il denominatore e uguale a 1ALLORA

restituisci il valore del numeratoreALTRIMENTI

restituisci la stringa della forma numeratore/denominatoreFINESE

FINESE

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 46 / 115

Page 71: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione: miglioramenti - toString

public String toString() {if (den == 0)return "impossibile";

else if (den == 1)return String.valueOf(num);

elsereturn num + "/" + den;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 48 / 115

Page 72: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Cambiamento della rappresentazione

Le frazioni vengono rappresentate senza tener conto delle semplificazioni.

Sarebbe opportuno che il metodo toString fornisse "1/4" in luogodi "32/128".

Scelte possibili:

semplificare le frazioni prima di visualizzarlerappresentare frazioni semplificate, cioe semplificarle al momento dellacostruzione

Scegliamo la seconda soluzione

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 50 / 115

Page 73: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Cambiamento della rappresentazione

Le frazioni vengono rappresentate senza tener conto delle semplificazioni.

Sarebbe opportuno che il metodo toString fornisse "1/4" in luogodi "32/128".

Scelte possibili:

semplificare le frazioni prima di visualizzarlerappresentare frazioni semplificate, cioe semplificarle al momento dellacostruzione

Scegliamo la seconda soluzione

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 50 / 115

Page 74: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Cambiamento della rappresentazione

Le frazioni vengono rappresentate senza tener conto delle semplificazioni.

Sarebbe opportuno che il metodo toString fornisse "1/4" in luogodi "32/128".

Scelte possibili:

semplificare le frazioni prima di visualizzarlerappresentare frazioni semplificate, cioe semplificarle al momento dellacostruzione

Scegliamo la seconda soluzione

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 50 / 115

Page 75: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Cambiamento della rappresentazione

Le frazioni vengono rappresentate senza tener conto delle semplificazioni.

Sarebbe opportuno che il metodo toString fornisse "1/4" in luogodi "32/128".

Scelte possibili:

semplificare le frazioni prima di visualizzarlerappresentare frazioni semplificate, cioe semplificarle al momento dellacostruzione

Scegliamo la seconda soluzione

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 50 / 115

Page 76: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il nuovo costruttore

Schemapublic Frazione(int x, int y) {sia m il massimo comun divisore di x e y;num = x / m;den = y / m;

}

Potremmo inserire il codice per il calcolo del mcd direttamente nelcostruttore

Per modularizzare meglio il codice e comunque bene introdurre unmetodo apposito

Non svolge azioni legate a un singolo oggetto, ma esegue un calcoloutile alla classe per la costruzione di nuovi oggetti (statico).

E un servizio utile all’interno che non deve essere visibile all’esterno(privato)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 52 / 115

Page 77: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il nuovo costruttore

Schemapublic Frazione(int x, int y) {sia m il massimo comun divisore di x e y;num = x / m;den = y / m;

}

Potremmo inserire il codice per il calcolo del mcd direttamente nelcostruttore

Per modularizzare meglio il codice e comunque bene introdurre unmetodo apposito

Non svolge azioni legate a un singolo oggetto, ma esegue un calcoloutile alla classe per la costruzione di nuovi oggetti (statico).

E un servizio utile all’interno che non deve essere visibile all’esterno(privato)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 52 / 115

Page 78: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il nuovo costruttore

Schemapublic Frazione(int x, int y) {sia m il massimo comun divisore di x e y;num = x / m;den = y / m;

}

Potremmo inserire il codice per il calcolo del mcd direttamente nelcostruttore

Per modularizzare meglio il codice e comunque bene introdurre unmetodo apposito

Non svolge azioni legate a un singolo oggetto, ma esegue un calcoloutile alla classe per la costruzione di nuovi oggetti (statico).

E un servizio utile all’interno che non deve essere visibile all’esterno(privato)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 52 / 115

Page 79: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il nuovo costruttore

Schemapublic Frazione(int x, int y) {sia m il massimo comun divisore di x e y;num = x / m;den = y / m;

}

Potremmo inserire il codice per il calcolo del mcd direttamente nelcostruttore

Per modularizzare meglio il codice e comunque bene introdurre unmetodo apposito

Non svolge azioni legate a un singolo oggetto, ma esegue un calcoloutile alla classe per la costruzione di nuovi oggetti (statico).

E un servizio utile all’interno che non deve essere visibile all’esterno(privato)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 52 / 115

Page 80: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il nuovo costruttore

Schemapublic Frazione(int x, int y) {sia m il massimo comun divisore di x e y;num = x / m;den = y / m;

}

Potremmo inserire il codice per il calcolo del mcd direttamente nelcostruttore

Per modularizzare meglio il codice e comunque bene introdurre unmetodo apposito

Non svolge azioni legate a un singolo oggetto, ma esegue un calcoloutile alla classe per la costruzione di nuovi oggetti (statico).

E un servizio utile all’interno che non deve essere visibile all’esterno(privato)

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 52 / 115

Page 81: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

mcd: implementazione dell’algoritmo di Euclide

private static int mcd(int a, int b) {int resto;do {resto = a % b;a = b;b = resto;

} while (resto != 0);return a;

}

Il costruttorepublic Frazione(int x, int y) {int m = mcd(x,y);num = x / m;den = y / m;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 54 / 115

Page 82: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

mcd: implementazione dell’algoritmo di Euclide

private static int mcd(int a, int b) {int resto;do {resto = a % b;a = b;b = resto;

} while (resto != 0);return a;

}

Il costruttorepublic Frazione(int x, int y) {int m = mcd(x,y);num = x / m;den = y / m;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 54 / 115

Page 83: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il costruttore: rappresentazione del segno

Vogliamo che frazioni con lo stesso valore vengono memorizzate nellostesso modo.

Ad esempio:

2/-4 -3/6 -4/8

rappresentate con −1 nel campo num e 2 nel campo den.

In questo modo il metodo equals puo essere realizzato verificandoche i valori dei campi siano gli stessi

Riscriviamo il costruttore tenendo conto dei seguenti casi particolari:

uno degli argomenti e negativo

il secondo parametro e uguale a zero

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 56 / 115

Page 84: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il costruttore: rappresentazione del segno

Vogliamo che frazioni con lo stesso valore vengono memorizzate nellostesso modo.

Ad esempio:

2/-4 -3/6 -4/8

rappresentate con −1 nel campo num e 2 nel campo den.

In questo modo il metodo equals puo essere realizzato verificandoche i valori dei campi siano gli stessi

Riscriviamo il costruttore tenendo conto dei seguenti casi particolari:

uno degli argomenti e negativo

il secondo parametro e uguale a zero

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 56 / 115

Page 85: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il costruttore: rappresentazione del segno

Vogliamo che frazioni con lo stesso valore vengono memorizzate nellostesso modo.

Ad esempio:

2/-4 -3/6 -4/8

rappresentate con −1 nel campo num e 2 nel campo den.

In questo modo il metodo equals puo essere realizzato verificandoche i valori dei campi siano gli stessi

Riscriviamo il costruttore tenendo conto dei seguenti casi particolari:

uno degli argomenti e negativo

il secondo parametro e uguale a zero

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 56 / 115

Page 86: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il costruttore

public Frazione(int x, int y) {if (y == 0) {num = 0;den = 0;

} else {//memorizza il segnoboolean negativo = (x < 0 && y > 0) || (x > 0 && y < 0);if (x < 0)x = - x; //elimina l’eventuale segno meno davanti a x

if (y < 0)y = - y; //elimina l’eventuale segno meno davanti a y

int m = mcd(x, y);if (negativo)num = - x / m; //segno memorizzato al numeratore

elsenum = x / m;

den = y / m;}

}c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 58 / 115

Page 87: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il metodo diviso

Se una frazione e impossibile sia num sia den contengono 0.

public Frazione diviso(Frazione f) {int n = this.num * f.den;int d = this.den * f.num;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 60 / 115

Page 88: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il metodo diviso

Se una frazione e impossibile sia num sia den contengono 0.

public Frazione diviso(Frazione f) {int n = this.num * f.den;int d = this.den * f.num;return new Frazione(n, d);

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 60 / 115

Page 89: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il metodo equals

public boolean equals(Frazione f) {if (this.num == f.num && this.den == f.den)return true;

elsereturn false;

}

Oppure

public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 62 / 115

Page 90: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il metodo equals

public boolean equals(Frazione f) {if (this.num == f.num && this.den == f.den)return true;

elsereturn false;

}

Oppure

public boolean equals(Frazione f) {return this.num == f.num && this.den == f.den;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 62 / 115

Page 91: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

I metodi isMinore e isMaggiore

E sufficiente guardare il segno del numeratore della differenza.

public boolean isMinore(Frazione f) {Frazione g = this.meno(f);if (g.num < 0)return true;

elsereturn false;

}

public boolean isMaggiore(Frazione f) {Frazione g = this.meno(f);if (g.num > 0)return true;

elsereturn false;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 64 / 115

Page 92: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

I metodi isMinore e isMaggiore

E sufficiente guardare il segno del numeratore della differenza.

public boolean isMinore(Frazione f) {Frazione g = this.meno(f);if (g.num < 0)return true;

elsereturn false;

}

public boolean isMaggiore(Frazione f) {Frazione g = this.meno(f);if (g.num > 0)return true;

elsereturn false;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 64 / 115

Page 93: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione implementa Comparable<Frazione>

(1) Dichiariamo che Frazione implementa l’interfaccia genericaComparable<T> istanziando T con Frazione:

public class Frazione implements Comparable<Frazione> {...

}

(2) Implementiamo il metodo:

public int compareTo(T o)Confronta l’oggetto che esegue il metodo con quello specificatocome argomento, e restituisce un intero negativo, zero, o unintero positivo, a seconda che l’oggetto che esegue il metodo siaminore, uguale o maggiore di quello specificato come argomento.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 66 / 115

Page 94: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione implementa Comparable<Frazione>

(1) Dichiariamo che Frazione implementa l’interfaccia genericaComparable<T> istanziando T con Frazione:

public class Frazione implements Comparable<Frazione> {...

}

(2) Implementiamo il metodo:

public int compareTo(T o)Confronta l’oggetto che esegue il metodo con quello specificatocome argomento, e restituisce un intero negativo, zero, o unintero positivo, a seconda che l’oggetto che esegue il metodo siaminore, uguale o maggiore di quello specificato come argomento.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 66 / 115

Page 95: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Frazione implementa Comparable<Frazione>

(1) Dichiariamo che Frazione implementa l’interfaccia genericaComparable<T> istanziando T con Frazione:

public class Frazione implements Comparable<Frazione> {...

}

(2) Implementiamo il metodo:

public int compareTo(T o)Confronta l’oggetto che esegue il metodo con quello specificatocome argomento, e restituisce un intero negativo, zero, o unintero positivo, a seconda che l’oggetto che esegue il metodo siaminore, uguale o maggiore di quello specificato come argomento.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 66 / 115

Page 96: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Il metodo compareTo(Frazione altra)

//IMPLEMENTAZIONE DI COMPARABLEpublic int compareTo(Frazione altra) {if (this.equals(altra))return 0;

elseif (this.isMinore(altra))return -1;

elsereturn 1;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 68 / 115

Page 97: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Specifica della classe Orario

Contratto

Le sue istanze rappresentano orari con la granularita dei minuti.

Costruttori

public Orario(int hh, int mm)Costruisce un oggetto che rappresenta l’orario, in cui le ore sono datedal primo parametro e i minuti dal secondo.

public Orario()Costruisce un oggetto che rappresenta l’orario attuale, cioe l’orariorelativo all’istante in cui viene invocato.

public Orario(String s)Costruisce un oggetto che rappresenta l’orario indicato nella stringafornita tramite il parametro.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 69 / 115

Page 98: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Specifica della classe Orario

Contratto

Le sue istanze rappresentano orari con la granularita dei minuti.

Costruttori

public Orario(int hh, int mm)Costruisce un oggetto che rappresenta l’orario, in cui le ore sono datedal primo parametro e i minuti dal secondo.

public Orario()Costruisce un oggetto che rappresenta l’orario attuale, cioe l’orariorelativo all’istante in cui viene invocato.

public Orario(String s)Costruisce un oggetto che rappresenta l’orario indicato nella stringafornita tramite il parametro.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 69 / 115

Page 99: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Specifica della classe Orario

Contratto

Le sue istanze rappresentano orari con la granularita dei minuti.

Costruttori

public Orario(int hh, int mm)Costruisce un oggetto che rappresenta l’orario, in cui le ore sono datedal primo parametro e i minuti dal secondo.

public Orario()Costruisce un oggetto che rappresenta l’orario attuale, cioe l’orariorelativo all’istante in cui viene invocato.

public Orario(String s)Costruisce un oggetto che rappresenta l’orario indicato nella stringafornita tramite il parametro.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 69 / 115

Page 100: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Specifica della classe Orario

Contratto

Le sue istanze rappresentano orari con la granularita dei minuti.

Costruttori

public Orario(int hh, int mm)Costruisce un oggetto che rappresenta l’orario, in cui le ore sono datedal primo parametro e i minuti dal secondo.

public Orario()Costruisce un oggetto che rappresenta l’orario attuale, cioe l’orariorelativo all’istante in cui viene invocato.

public Orario(String s)Costruisce un oggetto che rappresenta l’orario indicato nella stringafornita tramite il parametro.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 69 / 115

Page 101: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di accesso alle informazioni (metodi get)

public int getOre()Restituisce il valore delle ore.

public int getMinuti()Restituisce il valore dei minuti.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 71 / 115

Page 102: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di accesso alle informazioni (metodi get)

public int getOre()Restituisce il valore delle ore.

public int getMinuti()Restituisce il valore dei minuti.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 71 / 115

Page 103: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di confronto

public boolean equals(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo coincide con quello rappresentato dall’oggettofornito tramite il parametro.

public boolean isMinore(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo precede quello fornito tramite il parametro,supponendo che i due orari si riferiscano alla stessa giornata.

public boolean isMaggiore(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo segue quello fornito tramite il parametro,supponendo che i due orari si riferiscano alla stessa giornata.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 73 / 115

Page 104: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di confronto

public boolean equals(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo coincide con quello rappresentato dall’oggettofornito tramite il parametro.

public boolean isMinore(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo precede quello fornito tramite il parametro,supponendo che i due orari si riferiscano alla stessa giornata.

public boolean isMaggiore(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo segue quello fornito tramite il parametro,supponendo che i due orari si riferiscano alla stessa giornata.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 73 / 115

Page 105: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di confronto

public boolean equals(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo coincide con quello rappresentato dall’oggettofornito tramite il parametro.

public boolean isMinore(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo precede quello fornito tramite il parametro,supponendo che i due orari si riferiscano alla stessa giornata.

public boolean isMaggiore(Orario altro)Restituisce true quando l’orario rappresentato dall’oggetto cheesegue il metodo segue quello fornito tramite il parametro,supponendo che i due orari si riferiscano alla stessa giornata.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 73 / 115

Page 106: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di calcolo

public int quantoManca(Orario altro)Restituisce il numero di minuti che intercorrono tra l’orariorappresentato dall’oggetto che esegue il metodo e quellorappresentato dall’oggetto fornito tramite il parametro, consideraticome orari riferiti alla stessa giornata.

Se l’orario rappresentato dall’oggetto che esegue il metodo e minoredi quello fornito tramite il parametro, il risultato sara un numeropositivo; se invece e maggiore, il risultato sara un numero negativo.

public String toString()Restituisce una stringa che descrive l’orario rappresentato dall’oggettoche esegue il metodo, come "9:04" o "12:55".

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 75 / 115

Page 107: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Metodi di calcolo

public int quantoManca(Orario altro)Restituisce il numero di minuti che intercorrono tra l’orariorappresentato dall’oggetto che esegue il metodo e quellorappresentato dall’oggetto fornito tramite il parametro, consideraticome orari riferiti alla stessa giornata.

Se l’orario rappresentato dall’oggetto che esegue il metodo e minoredi quello fornito tramite il parametro, il risultato sara un numeropositivo; se invece e maggiore, il risultato sara un numero negativo.

public String toString()Restituisce una stringa che descrive l’orario rappresentato dall’oggettoche esegue il metodo, come "9:04" o "12:55".

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 75 / 115

Page 108: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: struttura

//IMPORTAZIONI

class Orario {//CAMPI...

//COSTRUTTORI...

//METODI...

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 77 / 115

Page 109: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: campi e costruttori

//CAMPIprivate int ore, min;

//COSTRUTTORIpublic Orario(int hh, int mm) {ore = hh;min = mm;

}

public Orario() {GregorianCalendar adesso = new GregorianCalendar();ore = adesso.get(Calendar.HOUR_OF_DAY);min = adesso.get(Calendar.MINUTE);

}

public Orario(String s) {ore = Integer.parseInt(s.substring(0,2));min = Integer.parseInt(s.substring(3,5));

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 79 / 115

Page 110: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: campi e costruttori

//CAMPIprivate int ore, min;

//COSTRUTTORIpublic Orario(int hh, int mm) {ore = hh;min = mm;

}

public Orario() {GregorianCalendar adesso = new GregorianCalendar();ore = adesso.get(Calendar.HOUR_OF_DAY);min = adesso.get(Calendar.MINUTE);

}

public Orario(String s) {ore = Integer.parseInt(s.substring(0,2));min = Integer.parseInt(s.substring(3,5));

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 79 / 115

Page 111: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: campi e costruttori

//CAMPIprivate int ore, min;

//COSTRUTTORIpublic Orario(int hh, int mm) {ore = hh;min = mm;

}

public Orario() {GregorianCalendar adesso = new GregorianCalendar();ore = adesso.get(Calendar.HOUR_OF_DAY);min = adesso.get(Calendar.MINUTE);

}

public Orario(String s) {ore = Integer.parseInt(s.substring(0,2));min = Integer.parseInt(s.substring(3,5));

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 79 / 115

Page 112: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: campi e costruttori

//CAMPIprivate int ore, min;

//COSTRUTTORIpublic Orario(int hh, int mm) {ore = hh;min = mm;

}

public Orario() {GregorianCalendar adesso = new GregorianCalendar();ore = adesso.get(Calendar.HOUR_OF_DAY);min = adesso.get(Calendar.MINUTE);

}

public Orario(String s) {ore = Integer.parseInt(s.substring(0,2));min = Integer.parseInt(s.substring(3,5));

}c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 79 / 115

Page 113: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: metodi di accesso

public int getOre() {return ore;

}

public int getMinuti() {return min;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 81 / 115

Page 114: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: metodi di accesso

public int getOre() {return ore;

}

public int getMinuti() {return min;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 81 / 115

Page 115: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: Metodi di confronto

public boolean equals(Orario altro) {return this.ore == altro.ore && this.min == altro.min;

}

public boolean isMinore(Orario altro) {return ore < altro.ore ||

(ore == altro.ore && min < altro.min);}

public boolean isMaggiore(Orario altro) {return ore > altro.ore ||

(ore == altro.ore && min > altro.min);}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 83 / 115

Page 116: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: Metodi di confronto

public boolean equals(Orario altro) {return this.ore == altro.ore && this.min == altro.min;

}

public boolean isMinore(Orario altro) {return ore < altro.ore ||

(ore == altro.ore && min < altro.min);}

public boolean isMaggiore(Orario altro) {return ore > altro.ore ||

(ore == altro.ore && min > altro.min);}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 83 / 115

Page 117: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: Metodi di confronto

public boolean equals(Orario altro) {return this.ore == altro.ore && this.min == altro.min;

}

public boolean isMinore(Orario altro) {return ore < altro.ore ||

(ore == altro.ore && min < altro.min);}

public boolean isMaggiore(Orario altro) {return ore > altro.ore ||

(ore == altro.ore && min > altro.min);}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 83 / 115

Page 118: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: metodi di calcolo

public int quantoManca(Orario altro) {return (altro.ore - ore) * 60 + altro.min - min;

}

public String toString() {String stringaMinuti = (min < 10 ? "0" : "") + min;return ore + ":" + stringaMinuti;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 85 / 115

Page 119: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: metodi di calcolo

public int quantoManca(Orario altro) {return (altro.ore - ore) * 60 + altro.min - min;

}

public String toString() {String stringaMinuti = (min < 10 ? "0" : "") + min;return ore + ":" + stringaMinuti;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 85 / 115

Page 120: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Miglioramenti

(1) Possibilita di selezionare un separatore diverso da ’:’ tra ore e minuti

Aggiungiamo un metodo

void setSeparatoreTo(char sep)

che modifichi il carattere utilizzato dal metodo toString per separareore e minuti.

(2) Possibilita di indicare gli orari su 12 ore invece che su 24 (5:22pm)

Aggiungiamo un metodo

void setFormato24(boolean b)

che consenta di selezionare il formato su 24 ore (se b e true) o su 12ore (se b e false).

Questi metodi devono modificare una proprieta (il modo in cui vengonovisualizzati gli oggetti) comune a tutte le istanze e quindi alla classe.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 87 / 115

Page 121: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Miglioramenti

(1) Possibilita di selezionare un separatore diverso da ’:’ tra ore e minuti

Aggiungiamo un metodo

void setSeparatoreTo(char sep)

che modifichi il carattere utilizzato dal metodo toString per separareore e minuti.

(2) Possibilita di indicare gli orari su 12 ore invece che su 24 (5:22pm)

Aggiungiamo un metodo

void setFormato24(boolean b)

che consenta di selezionare il formato su 24 ore (se b e true) o su 12ore (se b e false).

Questi metodi devono modificare una proprieta (il modo in cui vengonovisualizzati gli oggetti) comune a tutte le istanze e quindi alla classe.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 87 / 115

Page 122: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Miglioramenti

(1) Possibilita di selezionare un separatore diverso da ’:’ tra ore e minuti

Aggiungiamo un metodo

void setSeparatoreTo(char sep)

che modifichi il carattere utilizzato dal metodo toString per separareore e minuti.

(2) Possibilita di indicare gli orari su 12 ore invece che su 24 (5:22pm)

Aggiungiamo un metodo

void setFormato24(boolean b)

che consenta di selezionare il formato su 24 ore (se b e true) o su 12ore (se b e false).

Questi metodi devono modificare una proprieta (il modo in cui vengonovisualizzati gli oggetti) comune a tutte le istanze e quindi alla classe.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 87 / 115

Page 123: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Miglioramenti

(1) Possibilita di selezionare un separatore diverso da ’:’ tra ore e minuti

Aggiungiamo un metodo

void setSeparatoreTo(char sep)

che modifichi il carattere utilizzato dal metodo toString per separareore e minuti.

(2) Possibilita di indicare gli orari su 12 ore invece che su 24 (5:22pm)

Aggiungiamo un metodo

void setFormato24(boolean b)

che consenta di selezionare il formato su 24 ore (se b e true) o su 12ore (se b e false).

Questi metodi devono modificare una proprieta (il modo in cui vengonovisualizzati gli oggetti) comune a tutte le istanze e quindi alla classe.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 87 / 115

Page 124: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Miglioramenti

(1) Possibilita di selezionare un separatore diverso da ’:’ tra ore e minuti

Aggiungiamo un metodo

void setSeparatoreTo(char sep)

che modifichi il carattere utilizzato dal metodo toString per separareore e minuti.

(2) Possibilita di indicare gli orari su 12 ore invece che su 24 (5:22pm)

Aggiungiamo un metodo

void setFormato24(boolean b)

che consenta di selezionare il formato su 24 ore (se b e true) o su 12ore (se b e false).

Questi metodi devono modificare una proprieta (il modo in cui vengonovisualizzati gli oggetti) comune a tutte le istanze e quindi alla classe.

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 87 / 115

Page 125: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: campi e metodi statici

E necessario memorizzare il carattere utilizzato come separatore

Dato che e un’informazione comune all’intera classe lo memorizziamoin un campo statico.

public class Orario {//CAMPI STATICIprivate static char separatore = ’:’;

//CAMPIprivate int ore, min;

...

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 89 / 115

Page 126: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: campi e metodi statici

E necessario memorizzare il carattere utilizzato come separatore

Dato che e un’informazione comune all’intera classe lo memorizziamoin un campo statico.

public class Orario {//CAMPI STATICIprivate static char separatore = ’:’;

//CAMPIprivate int ore, min;

...

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 89 / 115

Page 127: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: miglioramenti

public String toString() {String stringaMinuti = (min < 10 ? "0" : "") + min;return String.valueOf(ore) + separatore + stringaMinuti;

}

public static void setSeparatoreTo(char ch) {separatore = ch;

}

public static char getSeparatore() {return separatore;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 91 / 115

Page 128: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: miglioramenti

public String toString() {String stringaMinuti = (min < 10 ? "0" : "") + min;return String.valueOf(ore) + separatore + stringaMinuti;

}

public static void setSeparatoreTo(char ch) {separatore = ch;

}

public static char getSeparatore() {return separatore;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 91 / 115

Page 129: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: miglioramenti

public String toString() {String stringaMinuti = (min < 10 ? "0" : "") + min;return String.valueOf(ore) + separatore + stringaMinuti;

}

public static void setSeparatoreTo(char ch) {separatore = ch;

}

public static char getSeparatore() {return separatore;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 91 / 115

Page 130: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: miglioramenti

//CAMPI STATICIprivate static char separatore = ’:’;private static boolean formato24 = true;

...

public static void setFormato24(boolean b) {formato24 = b;

}

public static boolean isFormato24Attivo() {return formato24;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 93 / 115

Page 131: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: miglioramenti

//CAMPI STATICIprivate static char separatore = ’:’;private static boolean formato24 = true;

...

public static void setFormato24(boolean b) {formato24 = b;

}

public static boolean isFormato24Attivo() {return formato24;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 93 / 115

Page 132: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: miglioramenti

//CAMPI STATICIprivate static char separatore = ’:’;private static boolean formato24 = true;

...

public static void setFormato24(boolean b) {formato24 = b;

}

public static boolean isFormato24Attivo() {return formato24;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 93 / 115

Page 133: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: toString

public String toString() {String risultato;String stringaMin = (min < 10 ? "0" : "") + min;if (formato24)risultato = String.valueOf(ore) + separatore

+ stringaMin;else {...

}return risultato;

}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 95 / 115

Page 134: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Orario: toString

else {int oraRisultato;String suff;if (ore == 0) {oraRisultato = 12;suff = "am";

} else if (ore > 0 && ore < 12) {oraRisultato = ore;suff = "am";

} else if (ore == 12) {oraRisultato = 12;suff = "pm";

} else {oraRisultato = ore - 12;suff = "pm";

}risultato = String.valueOf(oraRisultato) + separatore

+ stringaMin + suff;}return risultato;c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 97 / 115

Page 135: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package

Permettono di raggruppare in unita logiche classi e interfacce correlate traloro.

Unita di compilazione

I file che contengono codice sorgente Java.

Un’unita di compilazione puo contenere diverse classi e interfacce

Ogni unita puo contenere al piu una classe o un’interfaccia dichiaratapublic

Se una classe o interfaccia e dichiarata public essa determina ilnome del file

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 99 / 115

Page 136: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package

Permettono di raggruppare in unita logiche classi e interfacce correlate traloro.

Unita di compilazione

I file che contengono codice sorgente Java.

Un’unita di compilazione puo contenere diverse classi e interfacce

Ogni unita puo contenere al piu una classe o un’interfaccia dichiaratapublic

Se una classe o interfaccia e dichiarata public essa determina ilnome del file

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 99 / 115

Page 137: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package

Permettono di raggruppare in unita logiche classi e interfacce correlate traloro.

Unita di compilazione

I file che contengono codice sorgente Java.

Un’unita di compilazione puo contenere diverse classi e interfacce

Ogni unita puo contenere al piu una classe o un’interfaccia dichiaratapublic

Se una classe o interfaccia e dichiarata public essa determina ilnome del file

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 99 / 115

Page 138: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package

Permettono di raggruppare in unita logiche classi e interfacce correlate traloro.

Unita di compilazione

I file che contengono codice sorgente Java.

Un’unita di compilazione puo contenere diverse classi e interfacce

Ogni unita puo contenere al piu una classe o un’interfaccia dichiaratapublic

Se una classe o interfaccia e dichiarata public essa determina ilnome del file

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 99 / 115

Page 139: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package

Permettono di raggruppare in unita logiche classi e interfacce correlate traloro.

Unita di compilazione

I file che contengono codice sorgente Java.

Un’unita di compilazione puo contenere diverse classi e interfacce

Ogni unita puo contenere al piu una classe o un’interfaccia dichiaratapublic

Se una classe o interfaccia e dichiarata public essa determina ilnome del file

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 99 / 115

Page 140: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Definizione di package

Un’unita di compilazione e aggiunta ad un package mediante l’istruzione

package nome package

Deve obbligatoriamente essere la prima istruzione nell’unita dicompilazione

Esempio

Per aggiungere le classi Orario e Frazione al package prog.utilifornito con il testo dobbiamo inserire l’istruzione

package prog.utili;

all’inizio dei file Frazione.java e Orario.java

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 101 / 115

Page 141: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Definizione di package

Un’unita di compilazione e aggiunta ad un package mediante l’istruzione

package nome package

Deve obbligatoriamente essere la prima istruzione nell’unita dicompilazione

Esempio

Per aggiungere le classi Orario e Frazione al package prog.utilifornito con il testo dobbiamo inserire l’istruzione

package prog.utili;

all’inizio dei file Frazione.java e Orario.java

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 101 / 115

Page 142: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package e struttura delle directory

CLASSPATH = /myjavalib

/|

myjavalib|prog|

utili_______________|________________

| | || | ...| Orario.class

Frazione.class

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 103 / 115

Page 143: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package e struttura delle directory

CLASSPATH = /myjavalib

/|

myjavalib|prog|

utili_______________|________________| | || | ...| Orario.class

Frazione.class

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 103 / 115

Page 144: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Esempio

package pack1;

public class A {

public String toString(){return "classe pack1.A";

}}

Compilazione

> javac A.java

viene generato il file A.class

il nome completo della classe e pack1.A

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 105 / 115

Page 145: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Esempio

package pack1;

public class A {

public String toString(){return "classe pack1.A";

}}

Compilazione

> javac A.java

viene generato il file A.class

il nome completo della classe e pack1.A

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 105 / 115

Page 146: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Esempio

package pack1;

public class A {

public String toString(){return "classe pack1.A";

}}

Compilazione

> javac A.java

viene generato il file A.class

il nome completo della classe e pack1.A

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 105 / 115

Page 147: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Utilizzo del nome completo

Si puo utilizzare una classe indicandone il nome completo e omettendo ladirettiva di importazione:

class Prova {public static void main(String[] args) {prog.io.ConsoleOutputManager out =new prog.io.ConsoleOutputManager();

pack1.A a = new pack1.A();out.println(a.toString());

}}

Le direttive di importazione aggiungono lo spazio dei nomi di un package,cioe i nomi delle classi e delle interfacce del package, a quanto ilcompilatore prende in considerazione

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 107 / 115

Page 148: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Utilizzo del nome completo

Si puo utilizzare una classe indicandone il nome completo e omettendo ladirettiva di importazione:

class Prova {public static void main(String[] args) {prog.io.ConsoleOutputManager out =new prog.io.ConsoleOutputManager();

pack1.A a = new pack1.A();out.println(a.toString());

}}

Le direttive di importazione aggiungono lo spazio dei nomi di un package,cioe i nomi delle classi e delle interfacce del package, a quanto ilcompilatore prende in considerazione

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 107 / 115

Page 149: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Conflitto sui nomi

Utilizzando i nomi completi e possibile utilizzare nel codice classi diversecon lo stesso nome.

import prog.io.*;

class Prova {

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

pack1.A a1 = new pack1.A();out.println(a1.toString());

pack2.A a2 = new pack2.A();out.println(a2.toString());

}}

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 109 / 115

Page 150: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Importazione su richiesta

Direttive di importazione che utilizzano il carattere *

Esempio

import prog.io.*

Aggiungono allo spazio dei nomi, i nomi di tutte le classi e di tutte leinterfacce presenti nel package

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 111 / 115

Page 151: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Importazione su richiesta

Direttive di importazione che utilizzano il carattere *

Esempio

import prog.io.*

Aggiungono allo spazio dei nomi, i nomi di tutte le classi e di tutte leinterfacce presenti nel package

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 111 / 115

Page 152: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Importazione su richiesta

Direttive di importazione che utilizzano il carattere *

Esempio

import prog.io.*

Aggiungono allo spazio dei nomi, i nomi di tutte le classi e di tutte leinterfacce presenti nel package

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 111 / 115

Page 153: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package di default

Il compilatore importa automaticamente le classi e le interfacce delpackage java.lang e del package di default

Package di defaultUn package definito automaticamente, senza nome, che include tuttele classi e tutte le interfacce definite nella directory di compilazioneche non sono esplicitamente incluse in un package

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 113 / 115

Page 154: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Package di default

Il compilatore importa automaticamente le classi e le interfacce delpackage java.lang e del package di default

Package di defaultUn package definito automaticamente, senza nome, che include tuttele classi e tutte le interfacce definite nella directory di compilazioneche non sono esplicitamente incluse in un package

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 113 / 115

Page 155: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Modificatori di visibilita

I package forniscono un ambiente di protezione in cui sviluppare codicenascondendone i dettagli all’esterno.

Tale meccanismo di protezione e realizzato tramite i modificatori divisibilita.

private (membri)Ne limita la visibilita all’interno del codice della classe stessa

public (membri, classi, interfacce)Visibili ovunque

amichevole (membri, classi, interfacce)Visibile all’interno del package

protectedIl suo significato e legato all’estensione delle classi

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 115 / 115

Page 156: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Modificatori di visibilita

I package forniscono un ambiente di protezione in cui sviluppare codicenascondendone i dettagli all’esterno.

Tale meccanismo di protezione e realizzato tramite i modificatori divisibilita.

private (membri)Ne limita la visibilita all’interno del codice della classe stessa

public (membri, classi, interfacce)Visibili ovunque

amichevole (membri, classi, interfacce)Visibile all’interno del package

protectedIl suo significato e legato all’estensione delle classi

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 115 / 115

Page 157: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Modificatori di visibilita

I package forniscono un ambiente di protezione in cui sviluppare codicenascondendone i dettagli all’esterno.

Tale meccanismo di protezione e realizzato tramite i modificatori divisibilita.

private (membri)Ne limita la visibilita all’interno del codice della classe stessa

public (membri, classi, interfacce)Visibili ovunque

amichevole (membri, classi, interfacce)Visibile all’interno del package

protectedIl suo significato e legato all’estensione delle classi

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 115 / 115

Page 158: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Modificatori di visibilita

I package forniscono un ambiente di protezione in cui sviluppare codicenascondendone i dettagli all’esterno.

Tale meccanismo di protezione e realizzato tramite i modificatori divisibilita.

private (membri)Ne limita la visibilita all’interno del codice della classe stessa

public (membri, classi, interfacce)Visibili ovunque

amichevole (membri, classi, interfacce)Visibile all’interno del package

protectedIl suo significato e legato all’estensione delle classi

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 115 / 115

Page 159: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Modificatori di visibilita

I package forniscono un ambiente di protezione in cui sviluppare codicenascondendone i dettagli all’esterno.

Tale meccanismo di protezione e realizzato tramite i modificatori divisibilita.

private (membri)Ne limita la visibilita all’interno del codice della classe stessa

public (membri, classi, interfacce)Visibili ovunque

amichevole (membri, classi, interfacce)Visibile all’interno del package

protectedIl suo significato e legato all’estensione delle classi

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 115 / 115

Page 160: Implementazione delle classi - Capitolo 7€¦ · c 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 15 / 115. Accedere ai campi di un oggetto Per accedere

Modificatori di visibilita

I package forniscono un ambiente di protezione in cui sviluppare codicenascondendone i dettagli all’esterno.

Tale meccanismo di protezione e realizzato tramite i modificatori divisibilita.

private (membri)Ne limita la visibilita all’interno del codice della classe stessa

public (membri, classi, interfacce)Visibili ovunque

amichevole (membri, classi, interfacce)Visibile all’interno del package

protectedIl suo significato e legato all’estensione delle classi

c© 2005 Pearson Education Italia Capitolo 7 - Implementazione delle classi 115 / 115