Luigi Arlotta
a- a+

Istanziare e Utilizzare gli Oggetti

Supponiamo ad esempio di voler scrivere un programma cheinstanzi qualche oggetto di tipo Impiegato ed operialcune operazioni su di essi. Per instanziare un oggetto sifa uso dell'istruzione new, cosicché lasintassi di dichiarazione e inizializzazione di una variabileoggetto è la seguente:

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

Dove TipoOggetto è il tipo della variabileoggetto che stiamo creando e nomeVariabile è ilnome della variabile oggetto con cui faremo riferimento alnuovo oggetto. A destra del simbolo di uguale "="compare l'invocazione del costruttore della classeTipoOggetto, preceduto dall'istruzione newche indica l'operazione di instanziazione di un nuovooggetto. Il costruttore, come tutti gli altri metodi, deveessere richiamato specificando i parametri richiesti. E'possibile anche in questo caso distinguere la dichiarazionedella variabile oggetto dall'operazione di generazionedell'oggetto. In questo caso scriveremo:

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

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

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

è quella che effettivamente crea (instanzia) edinizializza in base ai parametri passati al costruttorel'oggetto desiderato. Questa istruzione restituisce unriferimento all'oggetto creato che viene memorizzatonella variabile oggetto precedentemente dichiarata. Perquesto motivo la riga di codice comunemente utilizzata percreare un oggetto è la seguente:

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

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

Graficamente la situazione potrebbe essere rappresentata comepresentati in fig.9.1.



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




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

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

L'effetto dell'istruzione sarà quella digenerare un oggetto di tipo Impiegato, le cuiproprietà verranno inizializzate secondo i parametripassati al costruttore, ed il cui riferimento verràmemorizzato nella variabile oggetto che abbiamo chiamatorossi.
Graficamente la situazione può essere schematizzatacome 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 edesegue alcune operazioni su oggetti di tipo Impiegato.Per far questo definiamo una nuova classe che chiameremoTestImpiegato. Di seguito è riportato ilcodice.

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