Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 6 di 12
  • livello principiante
Indice lezioni

JavaScript e OOP

ASP.NET AJAX aggiunge a JavaScript funzionalità OOP più potenti, utili per lavorare con i controlli
ASP.NET AJAX aggiunge a JavaScript funzionalità OOP più potenti, utili per lavorare con i controlli
Link copiato negli appunti

Con ASP.NET AJAX, Microsoft non solo rende JavaScript standard (più che altro compatibile con i diversi browser), ma introduce delle novità proprio nel linguaggio, aggiungendo le caratteristiche principali più classiche della programmazione orientata agli oggetti.

Se normalmente definiremmo una classe utilizzando una function(), ora abbiamo la possibilità di definirla in un namespace e derivarla da una classe base che si chiama Object. È possibile la definizione di astrazioni come le interfacce. È presente anche un meccanismo di reflection.

Classi, membri, oggetti

Ogni classe può esporre metodi e proprietà, ovvero strumenti con i quali innescare comportamenti, richiedere o impostare informazioni. Ogni classe, inoltre, può rilasciare degli eventi, e allo stesso tempo può eseguire dei metodi.

Pensiamo, ad esempio, ad una Persona, che ha due braccia, due gambe, può camminare e può anche reagire (evento) ad un impulso (scossa). Proviamo a realizzare questo esempio, tramite JavaScript, ma con l' estensione fornita insieme ad Ajax, prendendo spunto dall'implementazione di un esempio sul sito ASP.NET AJAX.

Listato 1. Classe Persona

// dichiarazione del namespace
Type.registerNamespace("MyAtlas");

// dichiarazione del costruttore
MyAtlas.Persona = function(Nome, Cognome, Età)
{
  this._nome = Nome;
  this._cognome = Cognome;
  this._età = Età;
}

// dichiarazione dei metodi tramite prototipo
MyAtlas.Persona.prototype = {
  getNome: function() {return this._cognome;},
  getCognome: function() { return this._nome; },
  comeTiChiami: function() { return this._nome + ' ' + this._cognome; },
  dispose: function() { alert('bye ' + this.getName()); }
}

// finalmente registriamo la classe appartenente al namespace
MyAtlas.Persona.registerClass('MyAtlas.Persona', null, Sys.IDisposable);

Abbiamo registrato il namespace per la nostra classe, abbiamo poi dichiarato il costruttore della classe ed infine, abbiamo creato un prototipo. I metodi esposti vengono inseriti proprio nel prototipo.

Infine abbiamo registrato la classe nel namespace. Il secondo parametro del metodo registerClass(), indica un riferimento alla classe base: abbiamo inserito 'null' in quanto la classe non eredita.

Anzitutto notiamo che l'infrastruttura è un po' carente nell'incapsulamento. Ad esempio non sono previsti campi ad accesso privato o riservato. Inoltre la gestione delle "proprietà" è rudimentale: per richiamare il valore di una proprietà, si utilizza un metodo (es. getNome), un po' come si faceva con Java.

Dichiarare queste classi può risultare dunque un po' macchinoso. Ma può essere utile prendere confidenza con questi strumenti per estendere ulteriormente il framework.

Per chi è interessato a questo aspetto è utile approfondire i concetti di ereditarietà e la creazione e l'implementazione delle interfacce: se ne trovano esempi sul sito ufficiale di ASP.NET AJAX.

Implementare enumerazioni

Ci soffermiamo solo sulle enumerazioni, che possono essere di immediata utilità pratica in un applicazione Web, ad esempio per accedere alla parte grafica dei controlli. L'esempio più classico è l'associazione di nomi ai codici dei colori (es. rosso associato a #ff0000).

Listato 2. Dichiarare un enumerato

//dichiarazione del namespace
Type.registerNamespace("MyAtlas");< br/>

MyAtlas.Colori = function(){};

// nel prototipo stabiliamo le associazioni
MyAtlas.Colori.prototype = {
  Rosso: 0xFF0000,
  Blue: 0x0000FF,
  Verde: 0x00FF00,
  Bianco: 0xFFFFFF
}

// registriamo l'enumerato
MyAtlas.Colori.registerEnum("MyAtlas.Colori");

// esempio di utilizo dell'associazione
var elemento = document.getElementByID("txtRisposta");
elemento.Style.backcolor = MyAtlas.Colori.Rosso;

Perché il framework interpreti correttamente questo codice è indispensabile inserire all'interno della pagina un elemento <asp:ScriptManager>.

Ti consigliamo anche