  |
Classe |
Innanzitutto rendiamoci conto di che cosa è una classe. Ecco un
esempio:
class Pesce {
int velocita;
void nuota() { ... }
}
  |
Modello di oggetto |
Una classe è un modello di oggetto. È importante capire che quando
dichiaro una classe, non ho fatto (ancora) niente: ho solo specificato
cosa voglio, ma senza aver creato nulla che fa quello che voglio. Ho
creato una forma, uno stampino nel quale mettendo il gesso o la cera
creerò effettivamente l'oggetto che potrò poi usare davvero.
  |
campi |
Nella classe possiamo riconoscere il campo e il metodo. Il campo nella
programmazione ad oggetti rapprensenta lo stato interno dell'oggetto,
ed è generalmente (ma non sempre) inaccessibile dall'esterno. Per
intenderci, consideriamo ancora la radio: quando è sintonizzata su
una stazione, significa che certi elementi al suo interno (per
esempio, potenziometri) hanno una certa posizione, che è quindi lo
stato in cui si trova l'oggetto. Questi elementi sono però
inaccessibili direttamente dall'esterno: il guscio della radio li
protegge.
  |
metodi |
Proprio per consentire a chi sta fuori della radio di manipolarne lo
stato, e quindi in ultima analisi di poter cambiare stazione o alzare
il volume, il progettista della radio ha messo a disposizione delle
manopole, che con artifici meccanici permettono, IN MANIERA
CONTROLLATA, di modificare lo stato interno della radio. In un
oggetto software, i metodi hanno la stessa funzione: sono
l'interfaccia con il mondo esterno, e rappresentano gli elementi con
cui deve interagire chi la radio la deve solo usare. Il progettista ha
appositamente messo a disposizione solo ciò che è previsto debba
venire usato.
  |
Istanza |
Abbiamo finora parlato della classe, che rappresenta un modello di
oggetti. Infatti definendo una classe, non esistono (con la sola
eccezione dei campi statici, che dobbiamo ancora vedere) i campi della
classe: questi appartengono ad una istanza che deve essere
appositamente creata. Definire una classe è come fare un progetto:
progettare le automobili non significa costruirle effettivamente. Solo quando
il progetto viene effettivamente realizzato
avremo una delle automobili che abbiamo progettato.
  |
Incarnazione del modello |
Pesce p = new Pesce()
Istanziare significa creare un oggetto che occupa memoria e che ha
(almeno) lo spazio per memorizzare i campi.
  |
Una classe molte istanze |
È importante capire che ad una classe corrispondono in generale
molte istanze, e ogni istanza ha le sue variabili ad essa dedicate.
  |
Metodi invocati sull'istanza |
p.nuota()
I metodi però generalmente agiscono solamente su una data
istanza. Intuitivamente è facile da capire: il metodo accendi di una
radio si applica solo quando ho effettivamente ho la radio
sottomano. Allo stesso modo per invocare il metodo ho bisogno
dell'oggetto su cui invocarla. Tutto questo discorso per il momento lo
manteniamo a livello intuitivo ma lo riprenderemo più tecnicamente
per meglio illustrare i modi in cui funziona la programmazione ad
oggetti in Java.
|