Corso di Java

Oggetti e classi

 

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): d’ora 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 è l’elemento 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 è un’istanza della classe “uomo”, Linus Torvalds è un’altra 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 dall’utilizzo 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 l’arbitro, 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