Sommario | Attacco | Crittologia | GnuPG/PGP | Programmazione | Sicurezza | Modifiche

 
   

Sommario / Programmazione / JavaScript / Fondamenti /

 

 
 


Gli oggetti

Un oggetto fondamentalmente non è altro che un insieme di dati (proprietà) e di funzioni (metodi). Supponendo di avere un oggetto chiamato Oggetto1 caratterizzato da una proprietà (dato1) e da un metodo (metodo1), per accedere alla proprietà 'dato1' dell'oggetto basterà utilizzare il costrutto:

 

Oggetto1.dato1

mentre per richiedere l'esecuzione del metodo Metodo1() utilizzeremo la sintassi:

 

Oggetto1.Metodo1(par1, ..., parN);

dove par1, ..., parN non sono altro che gli N parametri che metodo1 accetta.

La definizione di un oggetto in JavaScript, come in altri linguaggi, avviene tramite l'implementazione di quello che viene chiamato 'costruttore'.

Un costruttore non è altro che un metodo che viene richiamato quando l'oggetto viene istanziato e che ha il compito di inizializzare la nuova istanza dell'oggetto secondo valori prestabiliti o in base ai parametri ricevuti.

Proviamo a fare una similitudine, così come la matrice rappresenta l'originale da cui stampare le banconote, così l'oggetto, constistente nell'elenco di una serie di proprietà e funzioni che ne individuano le caratteristiche ed il comportamento è l'originale da cui, attraverso l'atto dell'istanza generare una variabile avente le sue stesse caratteristiche.

Come esempio, proviamo a definire un oggetto che possa poi essere utilizzato come un'anagrafica e cioè che sia caratterizzate da un nome, un giorno di nascita, un mese, ed un anno. Procediamo quindi a scrivere il costruttore della classe Anagrafica:

 

function Anagrafica (Nome, Giorno, Mese, Anno) {
this.Nome = Nome;
this.Giorno = Giorno;
this.Mese = Mese;
this.Anno = Anno;
}

La parola chiave this, utilizzata all'interno del costruttore è un modo per far riferimento ad una proprietà dell'oggetto sul quale si lavora.

Definito l'oggetto Anagrafica procediamo ad istanziare alcune variabili utilizzando la parola chiave new:

 

Antonio=new Anagrafica ("Antonio", 11, "Novembre", 1968);
Claudio=new Anagrafica ("Claudio", 26, "Agosto", 1971);
Cosimo=new Anagrafica ("Cosimo", 10, "Marzo", 1941);

Istanziare delle variabili vuol dire che le proprietà di queste ultime, avranno i valori che abbiamo passato al costruttore della classe Anagrafica.

Notate che, in JavaScript scrivendo:

 

Antonio.Indirizzo = "Via Parma, Chiavari";

aggiungiamo una proprietà ad una particolare istanza di un oggetto. In particolare, in questo caso, abbiamo aggiunto la proprietà Indirizzo all'istanza Antonio dell'oggetto Anagrafica.

Questa operazione non avrà alcun effetto sugli altri oggetti dello stesso tipo che sono già stati istanziati o che lo saranno in seguito ma non è un modo consigliato di procedere così come non lo è, utilizzare la parola chiave prototype, per aggiungere una proprietà ad un oggetto dopo che questo sia stato già definito.

In questo caso però la proprietà verrà aggiunta alla definizione dell'oggetto e quindi avrà effetto su tutti gli oggetti già istanziati o che istanzieremo. La sintassi è la seguente:

 

Anagrafica.prototype.NomeProprietà = ValoreProprietà;

Osserviamo adesso il seguente esempio:

 

Anagrafica.prototype.Indirizzo = null;
Antonio.Indirizzo = "Via Parma, Chiavari;
Claudio.Indirizzo = "Via Merano, Mesagne";

Come abbiamo visto in precedenza, la parola chiave null, in JavaScript, indica un valore nullo.

Passiamo adesso a descrivere la procedura di definizione dei metodi. Un metodo non è altro che una funzione che opera su un particolare oggetto. Supponiamo ad esempio di voler scrivere un metodo per la classe Anagrafica che visualizzi in modo ordinato tutti i dati di una particolare istanza dell'oggetto.

Iniziamo definendo una generica funzione che chiameremo StampaOggetto().

 

function StampaOggetto()
{
document.write ("Nome "+this.Nome);
document.write ("Giorno "+this.Giorno);
document.write ("Mese "+this.Mese);
document.write ("Anno "+this.Anno);
}

Una volta definita, la funzione potrà diventare un metodo della classe Anagrafica aggiungendo all'interno della definizione dell'oggetto la riga:

 

this.Visualizza = StampaOggetto;

in modo che il risultato finale sia questo:

 

<SCRIPT LANGUAGE="javascript">
<!--
function StampaOggetto ()
{
document.write ("Dati in archivio:");
document.write ("Nome: "+this.Nome);
document.write ("Giorno: "+this.Giorno);
document.write ("Mese: "+this.Mese);
document.write ("Anno: "+this.Anno);
}

function Anagrafica (Nome, Giorno, Mese, Anno) {
this.Nome = Nome;
this.Giorno = Giorno;
this.Mese = Mese;
this.Anno = Anno; 
this.Visualizza = StampaOggetto;
}
//-->
</SCRIPT>

In questo modo, per visualizzare le proprietà di un oggetto Anagrafica, istanziato ad esempio con il nome Antonio, basterà scrivere:

 

Antonio.Visualizza();

Esempio:

 

<HTML>
<HEAD>
<SCRIPT LANGUAGE="javascript">
<!--
function StampaOggetto ()
{
document.write ("Dati in archivio:");
document.write ("<BR>Nome: "+this.Nome);
document.write ("<BR>Giorno: "+this.Giorno);
document.write ("<BR>Mese: "+this.Mese);
document.write ("<BR>Anno: "+this.Anno);
}

function Anagrafica (Nome, Giorno, Mese, Anno) {
this.Nome = Nome;
this.Giorno = Giorno;
this.Mese = Mese;
this.Anno = Anno; 
this.Visualizza = StampaOggetto;
}
Antonio = new Anagrafica ("Antonio", 11, "Novembre", 1968);
Antonio.Visualizza();
//-->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>

 

     

 
 

Copyright © 1998 - 2009 Antonio Magrì - Tutti i diritti riservati. Contatto.