Dopo aver discusso sui tipi fondamentali con cui poter lavorare
in Java, riprendiamo la definizione della nostra classe Automobile,
che adesso ha la seguente struttura:
class Automobile {
public String marca, modello;
private final float capacitaSerbatoio, livelloRiserva, consumo;
private float quantitaBenzina;
private boolean autoradio, antifurto;
}
Se siete stati attenti, noterete che non era questa la forma in
cui avevamo lasciato la nostra classe.
Infatti sono comparse due ulteriori parole chiave, public
e private, che sono dette modificatori per il controllo
di accesso, il cui compito è appunto quello di
modificare la definizione delle nostre variabili, al fine di controllarne
la modalità con cui è possibile utilizzarle.
In pratica viene usato il modificatore public quando si vuole
che lattributo sia visibile allesterno della classe,
mentre il modificatore private è utilizzato per impedire
laccesso a quellattributo dallesterno della classe.
Per accedere ad un attributo di un oggetto occorre utilizzare
una sintassi del tipo:
nomeOggetto.nomeAttributo
Supponiamo di definire una classe Proprietario in cui
dichiariamo un oggetto di tipo Automobile, ad es:
class Proprietario {
Automobile auto;
}
allinterno di tale classe è possibile utilizzare unistruzione
del tipo:
auto.marca = Ferrari;
mentre se scrivessimo:
auto.quantitaBenzina = 40.3;
otterremmo un errore in fase di compilazione.
In questo modo è possibile nascondere allesterno alcuni dettagli,
anche se, nei casi pratici, è spesso necessario poter leggere o
scrivere queste variabili.
Ad es. nella classe Proprietario vorremmo rendere possibile
la lettura della quantità di benzina nel serbatoio e dare la possibilità
di fare rifornimento.
In entrambi i casi ci occorre poter accedere in qualche modo alla
variabile auto.quantitaBenzina.
In questi casi si definiscono dei metodi interni alla classe Automobile,
che rappresentano lunico modo che hanno le classi esterne
per accedere alle variabili private.
Questa caratteristica di Java è molto potente, perché dà la possibilità
a noi programmatori di controllare completamente il modo con cui
le altre classi interagiscono con la nostra.
Oltre ai due precedenti, esiste un terzo modificatore per il controllo
di accesso, protected, che verrà spiegato in seguito. I modificatori
possono essere applicati non solo alle variabili, ma anche alle
classi e ai loro metodi.
Un metodo Java ha la seguente struttura:
<modificatore di accesso> <tipo ritornato> <nome
del metodo> (<elenco parametri>) { <istruzioni> }
Il modificatore di accesso può essere uno di quelli già visti per
le variabili: è dunque possibile anche definire dei metodi interni
utilizzabili solo in altri metodi della classe.
Il tipo ritornato può essere uno qualsiasi dei tipi fondamentali
o un oggetto Java che costituisce la classe del valore restituito
dal metodo; se il metodo non restituisce alcun valore si utilizza
la parola chiave void.
Lelenco dei parametri è una serie di dichiarazioni di variabili
separate da virgola.
Le istruzioni, ossia le operazioni eseguite dal metodo, sono contenute
allinterno di una coppia di parentesi graffe.
Supponiamo di voler scrivere per la nostra classe un metodo che
ci consenta di leggere la variabile quantitaBenzina, potremmo scrivere:
public float getQuantitaBenzina()
{
return quantitaBenzina;
}
Questo metodo è pubblico, ritorna un valore di tipo float e non
ha parametri formali.
Adesso, se nella classe Proprietario utilizziamo listruzione:
float benzina = auto.getQuantitaBenzina();
il valore ritornato dalla funzione getQuantitaBenzina() verrà
assegnato alla variabile benzina.
Ogni metodo dichiarato in modo da restituire un valore di un certo
tipo deve restituire esplicitamente tale valore per mezzo dellistruzione:
return <valore>;
Nel codice di esempio il nostro metodo non fa altro che restituire
il valore della variabile quantitaBenzina al momento dellinvocazione
del metodo.
Un metodo per fare rifornimento allautomobile può essere il
seguente:
public void aggiungiBenzina(float
litri) {
quantitaBenzina = quantitaBenzina + litri;
}
Anche questo è un metodo pubblico, che non restituisce alcun valore
(non ha bisogno dellistruzione return) e che ha un solo parametro,
litri, che indica quanti litri di benzina aggiungere a quella già
esistente.
Torna all'indice Generale del corso di Corso di Java di Software Planet