Luigi Arlotta
a- a+

Istanziare e Utilizzare gli Oggetti

Supponiamo ad esempio di voler scrivere un programma che instanzi qualche oggetto di tipo Impiegato ed operi alcune operazioni su di essi. Per instanziare un oggetto si fa uso dell'istruzione new, cosicché la sintassi di dichiarazione e inizializzazione di una variabile oggetto è la seguente:

TipoOggetto nomeVariabile = new TipoOggetto (par1, par2, ..., parN);

Dove TipoOggetto è il tipo della variabile oggetto che stiamo creando e nomeVariabile è il nome della variabile oggetto con cui faremo riferimento al nuovo oggetto. A destra del simbolo di uguale "=" compare l'invocazione del costruttore della classe TipoOggetto, preceduto dall'istruzione new che indica l'operazione di instanziazione di un nuovo oggetto. Il costruttore, come tutti gli altri metodi, deve essere richiamato specificando i parametri richiesti. E' possibile anche in questo caso distinguere la dichiarazione della variabile oggetto dall'operazione di generazione dell'oggetto. In questo caso scriveremo:

TipoOggetto nomeVariabile;
nomeVariabile = new TipoOggetto (par1, par2, ..., parN);

che risulta del tutto equivalente a quanto scritto precedentemente. Soffermiamoci un attimo ad analizzare le istruzioni proposte per valutarne in dettaglio gli effetti. La prima istruzione è la dichiarazione di una variabile oggetto di tipo TipoOggetto che conterrà il riferimento all'oggetto che andremo a creare, ma non contiene, ne' mai conterrà effettivamente l'oggetto in questione. Una variabile oggetto è solo un modo per far riferimento ad un particolare oggetto. Chi conosce il linguaggio C, o il Pascal, può vedere le variabili oggetto come una sorta di puntatori, che Java gestisce in maniera del tutto trasparente al programmatore. L'istruzione di instanziazione:

new TipoOggetto (par1, par2, ..., parN);

è quella che effettivamente crea (instanzia) ed inizializza in base ai parametri passati al costruttore l'oggetto desiderato. Questa istruzione restituisce un riferimento all'oggetto creato che viene memorizzato nella variabile oggetto precedentemente dichiarata. Per questo motivo la riga di codice comunemente utilizzata per creare un oggetto è la seguente:

nomeVariabile = new TipoOggetto (par1, par2, ..., parN);

che vuol dire: "crea ed inizializza un oggetto di tipo TipoOggetto e memorizza il riferimento all'oggetto creato nella variabile nomeVariabile".

Graficamente la situazione potrebbe essere rappresentata come presentati in fig.9.1.



Fig.9.1: Instanziazione di un oggetto
Fig.9.1: Instanziazione di un oggetto




Dopo questa breve premessa sulla dichiarazione delle variabili oggetto e sulla procedura di instanziazione degli oggetti, torniamo alla nostra classe Impiegato. Applicando quanto appena detto, per creare un oggetto di tipo Impiegato scriveremo qualcosa del tipo:

Impiegato rossi = new Impiegato ("Mario" , "Rossi" , 1974, "Capo reparto");

L'effetto dell'istruzione sarà quella di generare un oggetto di tipo Impiegato, le cui proprietà verranno inizializzate secondo i parametri passati al costruttore, ed il cui riferimento verrà memorizzato nella variabile oggetto che abbiamo chiamato rossi.
Graficamente la situazione può essere schematizzata come in fig.9.2.



Fig.9.2: Instanziazione di un oggetto Impiegato
Fig.9.2: Instanziazione di un oggetto Impiegato




Scriviamo ora un programma che dichiara, inizializza ed esegue alcune operazioni su oggetti di tipo Impiegato. Per far questo definiamo una nuova classe che chiameremo TestImpiegato. Di seguito è riportato il codice.

public class TestImpiegato
{
public static void main(String[] args)


{
Impiegato rossi = new Impiegato ("Mario" , "Rossi" , 1974, "Capo reparto");


System.out.println("Dati relativi 
all'impiegato Rossi.");
System.out.print ("Nome: ");
rossi.mostraNome();
System.out.println ("Età: " + 
rossi.calcolaEta(2000));
System.out.println ("Stipendio: " + rossi.calcolaStipendio());

Impiegato verdi = new Impiegato ("Valerio" , "Verducci" , 1970, "Manovale");
System.out.println("
Dati relativi all'impiegato Verducci.");
System.out.print ("Nome: ");
verdi.mostraNome();
System.out.println ("Età: " +verdi.calcolaEta(2000));
System.out.println ("Stipendio: " +verdi.calcolaStipendio());

System.out.println("
Aumentiamo lo stipendio di Rossi di 500 euro.");
rossi.aumentaStipendio(500);
System.out.println ("Il nuovo stipendio è: " +rossi.calcolaStipendio());

System.out.println("
Diminuiamo lo stipendio di Verducci di 300 euro.");
System.out.println("L'operazione non 
verrà eseguita in quanto");
System.out.println("lo stipendio diventerebbe inferiore a stipendioMin.");
verdi.riduciStipendio(300);
System.out.println ("Lo stipendio rimane 
inalterato, pari al minimo: " +verdi.calcolaStipendio());
} }



[Pending: spiegazione codice]
[Pending: riferimento a null]
[Pending: sovraccarico del nome]

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Sara
Hai dubbi su questo articolo?