implementazione delle classi - capitolo 7€¦ · c 2005 pearson education italia capitolo 7 -...
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/41.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/42.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/43.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/44.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/45.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/46.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/47.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/48.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/49.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/52.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/53.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/54.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/55.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/56.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/57.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/58.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/59.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/60.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/61.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/62.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/63.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/64.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/65.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/66.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/67.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/68.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/69.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/70.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/71.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/72.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/73.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/74.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/75.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/76.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/77.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/78.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/79.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/80.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/81.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/82.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/83.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/84.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/85.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/86.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/87.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/88.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/89.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/90.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/91.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/92.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/93.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/94.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/95.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/96.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/97.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/98.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/99.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/100.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/101.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/102.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/103.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/104.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/105.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/106.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/107.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/108.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/109.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/110.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/111.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/112.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/113.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/114.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/115.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/116.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/117.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/118.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/119.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/120.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/121.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/122.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/123.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/124.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/125.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/126.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/127.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/128.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/129.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/130.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/131.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/132.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/133.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/134.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/135.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/136.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/137.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/138.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/139.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/140.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/141.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/142.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/143.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/144.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/145.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/146.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/147.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/148.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/149.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/150.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/151.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/152.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/153.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/154.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/155.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/156.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/157.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/158.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/159.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022070107/6021a7f4d4a6c01b8909d79c/html5/thumbnails/160.jpg)
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