Home E-Books Effetti speciali e sviluppo giochi in Java Classi e Oggetti

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 >>