sabato 6 ottobre 2012

Comprendere gli Oggetti

Nei precedenti post è stato illustrato come le informazioni individuali sono memorizzate nelle variabili e come queste variabili possono essere manipolate attraverso l'uso di operatori e funzioni. Tuttavia la maggior parte delle cose rappresentate in un videogioco sono oggetti. Essi sono cose che combinano qualità (come il livello di vita o energia) e abilità (la possibilità di muoversi, attaccare o difendersi dal fuoco). Spesso non ha senso parlare di qualità individuali e abilità separate le une dalle altre. Fortunatamente la maggior parte dei moderni linguaggi di programmazione permette di lavorare con oggetti software (spesso chiamati solo oggetti) che combinano dati e funzioni. Un elemento dati di un oggetto è chiamato membro dati, mentre una funzione di un oggetto è chiamata funzione membro Come esempio concreto, si può pensare ad un'astronave nemica. Questa astronave aliena può essere un nuovo tipo di oggetto chiamato Astronave, definito nel gioco dal programmatore, la quale può avere un membro dati per il suo livello di energia, e una funzione membro per utilizzare la sua arma. In pratica il suo livello di energia è rappresentata da un valore int chiamato energia; mentre la sua arma viene comandata dalla funzione faiFuoco().
Ogni oggetto che condivide la stessa struttura di base, ne condivide membri dati e funzioni. Tuttavia come oggetto individuale, questo valore dei dati può differire da oggetto ad oggetto. Uno squadrone di cinque astronavi possiederà cinque livelli di energia diversi. Ogni astronave inoltre utilizzerà la sua arma individualmente richiamando la propria funzione faiFuoco().
Una buona caratteristica degli oggetti è che essi possono essere utilizzati senza doverne conoscere la struttura interna, così come è possibile accendere la radio senza doverla costruire da zero. Bisogna solo conoscere quali sono le sue funzioni ed i suoi membri dati. Questi oggetti possono essere memorizzati in variabili, come tipologie pre-costruite. Così l'astronave nemica può essere memorizzata in una variabile del tipo Astronave. E' possibile accedere ai membri dati e alle funzioni membro attraverso l'operatore (.), inserendolo dopo il nome della variabile. Così se si desidera che l'astronave aliena, nave, spari con la sua arma solo se il suo livello di energia è maggiore di 10, si può scrivere il seguente codice:

if (nave.energia > 10) nave.faiFuoco();

nave.energia accede al dato energia dell'oggetto, mentre nave.faiFuoco() richiama la funzione membro. Anche se è possibile utilizzare nuovi tipi di oggetti, descritti dal programmatore. Ti è possibile lavorare con tipologie predefinite di oggetti. Oggetto dei prossimi post.

Nessun commento:

Posta un commento