15 Classi – Introduzione

Tutto quello che abbiamo visto fino ad ora può valere anche per altri linguaggi, come ad esempio il C.
Oggi invece vedremo un concetto tipico soltanto dei linguaggi “object oriented”, cioè orientati agli oggetti.
Già nell’articolo di presentazione avevo detto che Java è un linguaggio orientato agli oggetti e oggi finalmente vedremo cosa questo vuol dire.

Che cos’è una classe?
Una classe in Java rappresenta un costrutto usato come modello per creare oggetti. Questo modello avrà propri attributi e metodi che saranno condivisi da tutti gli oggetti creati a partire dalla classe. Tali oggetti prendono il nome di istanze della classe.
Una classe di fatto può rappresentare l’astrazione di un oggetto reale implementato in un software. Quindi gli attributi di questa classe rappresenteranno attributi dell’oggetto rapresentato, mentre i metodi saranno le iterazioni che possiamo eseguire con l’oggetto astratto.
In parole povere una classe rappresenterà un’altra pagina oltre a quella che abbiamo finora usato, dov’era presente il metodo main.

VANTAGGI
La capacità di implementare classi che rappresentino oggetti reali di cui vogliamo trattare è un’enorme potenzialità dato che molti programmi realizzati simulano in qualche modo la realtà.
Per fare un esempio banale, ipotiziamo di voler realizzare un gioco di auto 2D visto dall’alto. Potrete creare una classe che rappresenti le auto con le loro proprietà (colori, dimensione..) e metodi (una funzione che chiamata diminuisca la “vita” attribuita all’auto se urta ostacoli), e un’altra classe che rappresenti le piste.
So che vi sembra un programma difficilissimo ma non è così complicato come sembra, lo vedremo in un futuro non troppo lontano.
Comunque con questo esempio banale vi rendete conto che un gioco realizzato in questo modo è molto più semplice da gestire, anche se essendo semplice poteva essere realizzato anche senza classi esterne. Immaginate però un gioco più complesso dove sono presenti le astrazioni di molti oggetti della realtà, senza delle classi che suddividano proprietà e metodi legati a ciascun oggetto: capite bene che il programma diverrebbe un’ unica pagina con migliaia e migliaia di righe di codice, praticamente illegibile.

COME CREARE UNA CLASSE
Data la complessità (apparente, in realtà è molto semplice come vedrete!) vediamo subito un esempio molto banale e stupido dato che il programma in questione è talmente semplice che ha poco senso creare una classe per realizzarlo ma almeno capirete, spero, come funziona una classe.
Innanzitutto creiamo una nuova classe che chiameremo “Calcolatrice” con i seguenti semplici 2 passi:

15.1

15.2

I nomi delle classi devono iniziare con una lettera maiuscola!
Come potrete vedere, se siete riusciti a creare la classe, adesso nel vostro package è presente un nuovo file di tipo Java chiamato ovviamente Calcolatrice.

15.3

NB: la freccetta verde accanto al file PrimaApplicazione ci sta ad indicare che il file “PrimaApplicazione” è quello principale e che verrà eseguito alla partenza del programma.

15.4

GESTIAMO LA CLASSE CREATA
Credo l’abbiate già capito. Creeremo nuovamente un programma che simuli una calcolatrice utilizzando le classi. Notate bene che ho detto che nel nostro caso è stupido perché la calcolatrice che creeremo non sarà complessa, ma in caso volessimo creare una calcolatrice più complicata usare le classi sarebbe obbligatorio, o si rischia di impazzire.
Apriamo la nostra nuova classe creata e ci troveremo nella seguente situazione:

15.5

Funzionamento programma che vogliamo fare
Vogliamo creare una classe che simuli il funzionamento di una calcolatrice in grado di eseguire le 4 operazioni fondamentali e salvare in essa il risultato.
Possiamo creare tale calcolatrice con il seguente codice:

public class Calcolatrice {
    double risultato;//variabile in cui andremo a salvare il risultato delle nostre operazioni
    public Calcolatrice()
    {//questa rappresenta il metodo principale della classe che chiamiamo per inizializzare la variabile risultato
        risultato=0;//è necessario inizializzare la variabile perchè se venisse chiamato subito il metodo leggi_risultato la variabile sarebbe priva di valore
    }
    //i seguenti quattro metodi saranno chiamati per salvare il risultato dei due numeri che verranno loro passati
    //abbiamo un metodo per ciascuna delle 4 operazioni fondamentali
    public void somma(double a,double b)
    {
        risultato=a+b;
    }
    public void sottrazione(double a,double b)
    {
        risultato=a-b;
    }
    public void prodotto(double a,double b)
    {
        risultato=a*b;
    }
    public void divisione(double a,double b)
    {
        risultato=a/b;
    }
    //questo metodo ci serve per leggere il valore del risultato
    public double leggi_risultato()
    {
        return risultato;
    }
}

Ho già commentato il codice e credo sia abbastanza chiaro.
Voglio soltanto dire qualcosa in più riguardo ai metodi scritti all’interno della classe ma mi sono reso conto che l’articolo di oggi sta diventando anche troppo lungo quindi rimando la questione al prossimo.
Non perdetevelo!

Please follow and like us: