Nella scorsa volta, in questo articolo, avevamo visto un nuovo tipo di variabili. I vettori.
Bene. Oggi tratteremo in questo articolo diversi aspetti nel Java, che permetteranno di passare alla OOP senza problemi. Quindi questo è l’ultimo articolo di questa categoria. Dopodiché passeremo alla OOP in modo diretto.
In questo articolo sono presenti diverse nozioni, quindi sarà piuttosto lungo. Suddividerò i vari argomenti con dei sottotitoli in grassetto per facilitarne la lettura, anche a blocchi, senza il bisogno di leggere completamente tutto il testo.
Bene, detto questo possiamo iniziare.
Le classi
Iniziamo con il trattare le classi in Java.
Fino ad oggi abbiamo programmato soltanto all’interno del main, un metodo (la definizione di metodo la vedremo dopo) che serve per eseguire le istruzioni del programma. E’ il metodo principale di un programma e senza di questo un programma non potrà mai funzionare.
Scrivere un programma unicamente nel main è gravemente sconsigliato, soprattutto se il programma in questione è veramente gigante. Questo perché in caso di problemi, sarebbe necessario scorrere tutte le istruzioni contenute nel main, cercare il problema, correggerlo (con una certa probabilità di rischio che non venga corretto in nessun modo). Inoltre è veramente molto difficile e complesso aggiungere nuove funzionalità e quindi sviluppare degli aggiornamenti per migliorarlo.
Possiamo dire che creare un programma scrivendolo unicamente nel main, si crea un programma statico, senza quasi nessuna possibilità di modifica. In poche parole, un programma praticamente inutile.
Ma allora a cosa servono le classi?
Le classi servono per suddividere il programma in tante piccole parti, ognuna con un compito differente. In questo caso, se il programma ha dei problemi o si vuole migliorarlo in un qualche modo, è molto più facile farlo e richiede senza dubbio molto meno tempo.
Bisogna comprendere il concetto che nella programmazione, l’efficienza e la velocità sono dei punti cardine.
Ma le classi introducono anche un altro vantaggio non indifferente. Il vantaggio è che suddividendo il programma in tante piccole parti, è possibile usare in modo molto facile e apportando piccole modifiche, una o più parti per altri programmi. Questo concetto si chiama “riciclo del codice” perché appunto si ricicla parti del codice sorgente per creare altri programmi, senza il bisogno di riscrivere tutto da 0. Questo concetto fa ritornare ai punti cardine elencati in precedenza: efficienza e velocità.
Bene. Abbiamo già visto come si creano le classi in Java. Ti basta andare a vedere in questo articolo.
I metodi
Bene. Ora possiamo andare a vedere la seconda nozione di questo articolo, che ci aprirà il mondo della OOP. I metodi.
Abbiamo detto in precedenza che le classi servono per scomporre un programmi in varie parti. I metodi si trovano all’interno di una classe e servono per scomporre ulteriormente un programma, suddividendolo in tante piccole aree.
Uno di questi che abbiamo usato fino ad ora è il main.
Vediamo innanzi tutto la sintassi di un metodo.
[java]
public int somma(int v1, int v2){
//varie istruzioni
}
[/java]
public: questa keyword per ora non la vedremo, è troppo presto. Sarà argomento della OOP. Per ora prendetela così per com’è,
int = è un tipo di ritorno. Abbiamo visto durante questo corso che ci sono vari tipi di variabili. Le variabili di tipo intere, decimali, stringhe e così via. Un valore di ritorno non fa altro che aspettare che il programmatore restituisca un risultato che abbia la caratteristica del valore indicato. In questo caso si aspetta un numero intero. Non passandogli nulla, il compilatore Java ci darà errore.
somma = questo è l’identificatore del metodo. Possiamo dare qualsiasi nome. Dato che questo metodo sarà utilizzato per fare delle somme matematiche, ho utilizzato il valore somma.
(int v1, int v2) = Queste qui sono parametri formali. I parametri formali non sono altro che delle variabili utilizzabili soltanto all’interno del metodo e non all’esterno e che il valore deve essere obbligatoriamente assegnato durante la chiamata del metodo. So che ci avrai capito poco in tutto questo, ma prosegui con la lettura e tutto diventerà più chiaro.
{} = Le parentesi graffe servono per contenere le varie istruzioni. Hanno la stessa funzione di quelle di una condizionale, piuttosto che di un ciclo.
Ci sono alcuni metodi chiamati “Metodi costruttori“. Questo tipo di metodo ha lo stesso nome della classe, quindi se la classe si chiama Casa, il metodo si chiamerà Casa e serve per chiamare una classe all’interno di un’altra classe o all’interno del main. La chiamata l’abbiamo già vista con la classe Scanner e Random. Il concetto è lo stesso, ma lo andremo a rivedere tra poco.
Benissimo. Ora, dopo aver trattato così tanta teoria, facciamo un po’ di pratica.
Andrò a creare una classe con il nome di Sommanumeri (ricordo che l’identificatore di una classe, per convenzione, deve avere la prima lettera maiuscola. I metodi invece la lettera minuscola, fatta eccezione dei metodi costruttori).
In questa classe eseguirò una somma tra 2 numeri. Esempio molto banale, ma è il primo e non voglio complicare troppo le cose.
[java]
public class Sommanumeri{
public Sommanumeri(){
}
public int addizioneNumeri(int v1, int v2){
int risultato = 0;
risultato = v1 + v2;
System.out.println(risultato);
return risultato;
}
}
[/java]
Come possiamo notare al metodo costruttore non ho assegnato nessun parametro formale e nessuna istruzione. Questo perché non mi serve che faccia nulla. Ma dato che è indispensabile per poter richiamare la classe, bisogna comunque crearlo.
Ok ora andiamo a vedere di creare la classe con il metodo main e di far eseguire il programma.
[java]
public class Mainprogram{
public static void main(String[] args){
Sommanumeri s = new Sommanumeri();
int v1 = 1;
int v2 = 2;
// Creiamo le variabili che serviranno ad eseguire la somma
s.addizioneNumeri(v1, v2);
}
}
[/java]
Nell’istruzione s.addizioneNumeri(v1, v2) possiamo notare che all’interno delle parentesi tonde abbiamo inserito delle variabili con lo stesso nome e tipo di quelle presenti nel metodo. Questo perché per chiamare un metodo è obbligatorio passare i parametri allo stesso ordine di quelli formali. Se ne manca solo uno, il metodo non verrà riconosciuto.
Infatti se scrivessi s.addizioneNumeri(v1) oppure s.addizioneNumeri(v2, v1) il compilatore Java darà errore. Non lo accetta.
I parametri che abbiamo appena passato nella chiamata, all’interno del main, si chiamano parametri attuali. I parametri formali sono quelli del metodo. I parametri formali, sono quelli usati durante la chiamata del metodo stesso e che assegnano dei valori ai parametri formali.
Tutte le altre istruzioni all’interno di questo programma le abbiamo già viste e quindi non serve andarle a rispiegare.
Bene, direi che per il momento è più che sufficiente. Quindi ci vediamo alla prossima. Ciao 🙂