Entriamo nel vivo della programmazione cominciando a vedere in
che modo è possibile lavorare con gli oggetti di Java e come implementarli
tramite le classi.
Il concetto di classe non ci è sicuramente nuovo, ma nella vita
reale questa parola ha un significato un pò sfumato, non ben definito
(oggi va di moda il termine fuzzy): dora in poi vi sarà perdonato
di non sapere il significato di classe sociale o di lotta di classe,
ma quando parleremo di classi Java, non avrete altra scelta che
essere preparati!
Infatti la classe è lelemento base dei programmi scritti
in Java, anzi, un programma Java non è altro che una collezione
di classi.
Per nostra fortuna, il concetto di classe in Java è semplice e chiaro.
Se dovessimo darne una definizione, diremmo che:
una classe è un modello per diversi oggetti con caratteristiche
simili
Facciamo un esempio che può chiarirci meglio le idee.
Quando utilizziamo la parola uomo, sappiamo che indichiamo
un essere vivente appartenente alla classe (!) dei mammiferi, dotato
di intelligenza e avente caratteristiche fisiche ben delineate:
una testa, un busto, due braccia, due gambe
Ma se diciamo uomo, non ci riferiamo a nessun uomo in
particolare, bensì ad un modello, che riassume in sé tutte
le caratteristiche per le quali un essere vivente può classificarsi
come uomo.
Quando definiamo una classe Java, in realtà definiamo un modello
per tutti gli oggetti appartenenti a quella classe; una volta definita
una classe è possibile creare un numero illimitato di oggetti per
essa.
Ogni oggetto appartenente ad una classe è detto istanza di
quella classe: Bill Gates è unistanza della classe uomo,
Linus Torvalds è unaltra istanza della stessa classe.
Lassie e Rin Tin Tin sono due istanze della classe cane
ed hanno una cosa in comune con i nostri amici citati prima (non
anticipate le mie conclusioni!): appartengono alla classe esseri
viventi.
Dunque il concetto di classe ha una sua relatività, che dipende
dallutilizzo che vogliamo fare degli oggetti.
Se volessimo confrontare esseri viventi e materia inanimata, potremmo
includere Bill Gates, Linus Torvalds, Lassie e Rin Tin Tin nella
stessa classe, ma se volessimo distinguere tra animali a quattro
zampe e bipedi non potremmo più farlo.
Dunque, prima di iniziare a scrivere la prima riga di codice, il
programmatore Java deve decidere quali classi appartengono al progetto
che sta realizzando.
Questa prima fase è la più delicata di tutto il lavoro, ma è indispensabile
per una buona riuscita; infatti, se le classi sono progettate in
maniera chiara e coerente, tutto il lavoro successivo sarà più semplice
da realizzare, ci saranno meno errori e si potrà generare codice
riutilizzabile.
In Java la definizione di classe ha la seguente sintassi:
class MiaPrimaClasse {}
Con questa istruzione abbiamo, di fatto, già creato una classe:
provate a copiare questa riga in un file, salvatelo col nome MiaPrimaClasse.java
e compilatelo: otterrete il file MiaPrimaClasse.class e nessun messaggio
di errore.
Come avrete notato, per definire una classe occorre creare un file
con lo stesso nome e con estensione .java.
Fate attenzione alle lettere maiuscole e minuscole: Java è case-sensitive,
per cui considera MiaPrimaClasse diversa da Miaprimaclasse, miaprimaClasse,
miaprimaclasse...
Pur avendo creato una classe Java, essa non fa nulla e non ha alcuna
caratteristica che la possa distinguere, ad es., dalla classe:
class MiaSecondaClasse {}
perché non ha né qualità, né comportamenti che la identificano.
Se vogliamo caratterizzare la nostra classe dovremo definire quali
sono i suoi attributi (ossia le sua qualità) e i suoi metodi
(ossia il suo comportamento).
Sappiamo bene che la classe uomo è caratterizzata da
svariate qualità (sesso, colore della pelle, colore degli occhi,
colore dei capelli, altezza, peso, etc.) e da una serie di azioni
che può compiere (mangiare, camminare, correre, dormire, tifare
per una squadra, insultare larbitro, etc.).
Analogamente possiamo definire nella nostra classe le caratteristiche
e le azioni comuni a tutti gli oggetti ad essa appartenenti.
Nella prossima puntata vedremo come farlo.
Torna all'indice Generale del corso di Corso di Java di Software Planet