Effetti speciali e sviluppo giochi in Java(TM) -Classi e Oggetti
di Anibal Wainstein (traduzione di Hanami Solutions)
1.3.2 Classi e Oggetti
Una classe può essere vista come una rappresentazione
che può contenere molti tipi di variabili, metodi e persino
altre classi. Le classi sono rappresentazioni di oggetti.
L'oggetto è il prodotto della classe e normalmente si
lavora con l'oggetto.
Supponiamo di avere un'auto e la formula ad essa relativa.
Se guardiamo al rapporto tra i due dal punto di vista della
programmazione ad oggetti allora la formula è la classe
e l'auto è l'oggetto. Le classi si trovano di solito
sull'hard disk o sul server e sono caricate quando si crea un
oggetto. Si crea un oggetto riservandogli della memoria primaria.
Questa viene chiamata allocazione di memoria. In un programma
Java c'è sempre almeno una classe. Se ci si attiene
strettamente alla teoria della programmazione ad oggetti, sono solo
i metodi in una classe a poter lavorare con le variabili contenute
nella classe stessa. Questo però, nella pratica, non è
sempre seguito. La seguente è una definizione della classe "car":
public class Car { //La variabile "v" contiene la velocità in km/h public int v; public void drive() { //velocità iniziale 10 km/h
v=10; }
public void stop()
{
v=0;
}
public void faster(int vincrease)
{
v+=vincrease;
}
public void slowDown(int vdecrease)
{
v-=vdecrease;
if (v<0) v=0;
}
}
| Car |
| v |
| drive() |
| stop() |
| faster() |
| slowDown() |
|
L'esempio qui sopra è una definizione di classe. I campi sotto
"Car" descrivono quali variabili (in blu) e quali metodi
(in celeste) appartengano a quella classe.
1.3.3 Riferimenti e allocazione
oggetti (il comando new)
Si comunica con un oggetto tramite riferimenti (un
riferimento è l'equivalente dei puntatori nel C++). Diciamo che
vogliamo creare un oggetto con cui lavorare. Prendiamo la "formula"
che abbiamo definito nella scorsa sezione e creiamo un riferimento
come questo:
Car onecar;
Il riferimento "onecar" non punta da nessuna parte al momento
per cui non è possibile lavorarci. Ora allochiamo
un pò di memoria per l'oggetto "onecar" che userà
la classe "Car" come formula. Mentre facciamo ciò
impostiamo il riferimento "onecar" perché punti all'oggetto.
onecar = new Car();
Ora possiamo raggiungere l' istanza della classe "Car"
con "onecar" (una istanza è un altro termine per indicare un oggetto):
onecar.drive();
onecar.faster(10);
onecar.slowDown(10);
onecar.stop();
Chiamando i metodi nominati qua sopra manipoliamo la variabile "v"
che rappresenta la velocità nell'oggetto "Car".
Possiamo creare tutte le istanze che vogliamo della classe Car:
Car volvo = new Car();
Car ford = new Car();
volvo.drive();
ford.drive();
//incrementa la velocità di 10 km/h
volvo.faster(10);
//incrementa la velocità di 10 km/h
volvo.faster(10);
//incrementa la velocità di 30 km/h
ford.faster(30);
//decrementa la velocità di 20 km/h
ford.saktaner(20);
Quale auto pensate abbia la velocità più alta dopo queste invocazioni?
Notate che la variabile "v" nell'oggetto "volvo"
non cambia quando chiami i metodi relativi alla velocità dell'oggetto "ford".
Entrambe gli oggetti sono completamente indipendenti e hanno ognuno la propria copia di
"v".
Pagina seguente >>
|