Morpheusweb.it - Risorse per webmaster: script, ASP.NET, C#, Visual Basic .Net, tutorial, asp, javascript, css, php, html, java, ADO, VBScript, forms, frames, Active Server Pages, Dynamic HTML, database, gratis per webmaster e webdesigner

Classi ed Oggetti: La programmazione ad oggetti con ASP

Classi ed Oggetti


Introduzione

In questo capitolo vedremo come creare ed utilizzare le classi VBScript.

Classi


Una classe è un modo per incapsulare i dati, una classe può contenere proprietà (le variabili) e metodi (le funzioni).
Mediante le classi possiamo costruire dei tipi complessi riutilizzabili nelle nostre applicazioni.

Supponiamo di voler rappresentare una persona (ad esempio per l'inserimento in un'anagrafica). Supponiamo di voler memorizzare nome, cognome ed email.
Possiamo utilizzare una classe.

Class Persona
  Public Nome
  Public Cognome
  Public Email
End Class


Così facendo diciamo che una persona è fatta da un nume, un cognome ed una e-mail.
Se però vogliamo rappresentare una persona in particolare, ad esempio Paolino Paperino, cha ha come mail paolino.paperino@topolinia.dys, quello che ci serve è un "oggetto" di tipo persona, quello che si chiama una "istanza" della classe

La mia prima classe VBScript

La dichiarazione di una classe va fatta mediante la parola chiave "Class", Tutto il contenuto della classe starà all'interno di "Class" ed "End Class"

<%
Class clPersona
  Public Nome
  Public Cognome
  Public Email
End Class
%>


All'interno dala classe avremo le Proprietà ed i Metodi per manipolare la classe.

Per creare un'oggetto di tipo persona occorre "Istanziare" la classe, questa operazione viene fatta mediante la parola chiave New.

<%
Dim persona
Set persona = New clPersona
%>


La parola chiave Set, esegue l'operazione di assegnamento alla variabile persona.
Per distruggere l'oggetto una volta utilizzato e liberare le risorse, possiamo utilizzare la seguente sintassi:

<%
Set persona = Nothing
%>


Proprietà Private e Public

Nell'esempio precedente abbiamo visto che una persona può avere un nome, un cognome ed una mail. Senza saperlo abbiamo definito tre "proprietà" della classe clPersona.
Le proprietà sono delle variabili degli oggetti della nostra classe, e come tali possono essere lette oppure scritte.
Una delle principali caratteristiche della programmazione ad oggetti è l'incapsulamento dei dati, ovvero la possibilità di definire delle proprietà della classe non manipolabili dall'esterno se non attraverso dei metodi della classe stessa. L'incapsulamento di effettua tramite i modificatori di accesso: una proprietà può avere un modificatore di accesso che può essere impostato a Public oppure Private.
Con Public, le proprietà possono essere lette e scritte al di fuori della classe, con Private invece le proprietà sono interne alla classe e possono essere accedute esclusivamente da metodi della classe.

Vediamo un esempio

<%
Class clPersona
  Public Nome
  Public Cognome
  Public Email
End Class
%>


Così facendo abbiamo definito la classe clPersona, con tre proprietà Public, le quali possono essere accedute dall'esterno tramite la notazione puntata

variabile = istanza.proprietà 'in lettura

istanza.proprietà = variabile 'in scrittura


Costruttore

Il costruttore di una classe è un metodo che viene richiamato quando creiamo una istanza di una classe. Può essere utilizzato per inizializzare la classe, impostandone i valori di default.

In VBScript occorre creare una procadura chiamata Class_Initialize()

Definizione

Private Sub Class_Initialize()
  'corpo del metodo
End Sub


Esempio

<%
Class clPersona

  'Proprietà
  Public Nome
  Public Cognome
  Public Email

  'Costruttore
  Private Sub Class_Initialize()
    Response.Write "Sto creando un istanza dell'oggetto<br>"
    Nome = "Paolino"
    Cognome = "Paperino"
    Email = "paolino.paperino@paperopoli.dys"
  End Sub

End Class

'Istanzio la classe
Set persona = New clPersona
Response.Write "Nome: " & persona.Nome & "<br>"
Response.Write "Cognome: " & persona.Cognome & "<br>"
Response.Write "Email: " & persona.Email & "<br>"
Set persona = Nothing
%>


Otterremo come output:

Sto creando un istanza dell'oggetto
Nome: Paolino
Cognome: Paperino
Email: paolino.paperino@paperopoli.dys

Nota:Non è possibile creare dei costruttori con argomenti.

Distruttore

Il distruttore di una classe, è un matodo che viene eseguito quando distruggiamo una classe tramite Set istanzaClasse = Nothing
Possiamo utilizzarlo per liberare le risorse ed eseguire le operazioni di finalizzazione.

Definizione

Private Sub Class_ Terminate()
  'corpo del metodo
End Sub


Esempio

<%
Class clPersona

  'Proprietà
  Public Nome
  Public Cognome
  Public Email

  'Costruttore
  Private Sub Class_Initialize()
    Response.Write "Sto creando un istanza dell'oggetto<br>"
    Nome = "Paolino"
    Cognome = "Paperino"
    Email = "paolino.paperino@paperopoli.dys"
  End Sub

  'distruttore
  Private Sub Class_Terminate()
    Response.Write "Sto distruggendo l'istanza dell'oggetto<br>"
  End Sub

End Class

'Istanzio la classe
Set persona = New clPersona
Response.Write "Nome: " & persona.Nome & "<br>"
Response.Write "Cognome: " & persona.Cognome & "<br>"
Response.Write "Email: " & persona.Email & "<br>"
Set persona = Nothing
%>


Otterremo come output:

Sto creando un istanza dell'oggetto
Nome: Paolino
Cognome: Paperino
Email: paolino.paperino@paperopoli.dys
Sto distruggendo l'istanza dell'oggetto

I metodi di accesso

I metodi di accesso sono delle funzioni particolari che permettono di accedere alle proprietà protette di una classe.
Il VBScript abbiamo la proprietà Let e Get

Proprietà Let

Consente di assegnare dei valori alle proprietà private di una classe

[Public | Private] Property Let nome ([argomenti,] valore)
  'istruzioni
End Property


Proprietà Get

Consente di leggere i valori alle proprietà private di una classe

[Public | Private] Property Get nome [(argomenti)]
  [istruzioni]
  [[Set] nome = espressione]
End Property


E' possibile interrompere l'esecuzione del codice all'interno di una Proprietà tramite l'istruzione Exit Property

Esempio

<%
Class clPersona

  'Proprietà
  Private prNome
  Public Property Let Nome(strNome)
    prNome = strNome
  End Property
  Public Property Get
Nome()
    Nome = prNome
  End Property

  Private
prCognome
  Public Property Let Cognome(strCognome)
    prCognome = strCognome
  End Property
  Public Property Get
Cognome()
    Cognome = prCognome
  End Property

  Private
prEmail
  Public Property Let Email(strEmail)
    prEmail = strEmail
  End Property
  Public Property Get
Email()
    Email = prEmail
  End Property

  'Costruttore
  Private Sub Class_Initialize()
    Response.Write "Sto creando un istanza dell'oggetto<br>"
    Nome = "Paolino"
    Cognome = "Paperino"
    Email = "paolino.paperino@paperopoli.dys"
  End Sub

  'distruttore
  Private Sub
Class_Terminate()
    Response.Write "Sto distruggendo l'istanza dell'oggetto<br>"
  End Sub

End Class


'Istanzio la classe
Set persona = New Persona

Response.Write "Prima dell'assegnazione"
Response.Write "Nome: " & persona.Nome & "<br>"
Response.Write "Cognome: " & persona.Cognome & "<br>"
Response.Write "Email: " & persona.Email & "<br>"

persona.Nome = "Paperon"
persona.Cognome = "De Paperoni"
persona.Email = "paperon.depaperoni@paperopoli.dys"

Response.Write "Dopo l'assegnazione"
Response.Write "Nome: " & persona.Nome & "<br>"
Response.Write "Cognome: " & persona.Cognome & "<br>"
Response.Write "Email: " & persona.Email & "<br>"

Set persona = Nothing
%>


Metodi

Abbiamo due tipi di metodi, Funzioni (che hanno un valore di ritorno) e le procedure (che processano i dati senza restituire un valore di ritorno).
Anche i metodi possono essere pubblici o privati, i metodi privati sono interni alla classe e non possono essere eseguiti dall'esterno, mentre quelli pubblici possono essere richiamati all'esterno.

Funzioni

[Public | Private] Sub nomeProcedura [(argomenti)]
  [istruzioni]
End Sub


Procedure

[Public | Private] Function nomeFunzione [(argomenti)]
  [istruzioni]
  nomeFunzione = valore
End Property


Esempio

<%
Class clPersona

  'Proprietà
  Private prNome
  Public Property Let Nome(strNome)
    prNome = strNome
  End Property
  Public Property Get
Nome()
    Nome = prNome
  End Property

  Private
prCognome
  Public Property Let Cognome(strCognome)
    prCognome = strCognome
  End Property
  Public Property Get
Cognome()
    Cognome = prCognome
  End Property

  Private
prEmail
  Public Property Let Email(strEmail)
    prEmail = strEmail
  End Property
  Public Property Get
Email()
    Email = prEmail
  End Property

  'Costruttore
  Private Sub Class_Initialize()
    Response.Write "Sto creando un istanza dell'oggetto<br>"
    Nome = "Paolino"
    Cognome = "Paperino"
    Email = "paolino.paperino@paperopoli.dys"
  End Sub

  'distruttore
  Private Sub
Class_Terminate()
    Response.Write "Sto distruggendo l'istanza dell'oggetto<br>"
  End Sub

  Public Sub StampaPersona()
    Response.Write "Nome: " & Nome & ", Cognome:" & Cognome & "<br>"
  End Sub

  Public Function dettaglioPersona()
    dettaglioPersona = "Nome: " & Nome & ", Cognome:" & Cognome & "<br>"
  End Function

End Class

'Istanzio la classe
Set persona = New Persona

Response.Write "Prima dell'assegnazione"
Response.Write "Nome: " & persona.Nome & "<br>"
Response.Write "Cognome: " & persona.Cognome & "<br>"
Response.Write "Email: " & persona.Email & "<br>"

persona.Nome = "Paperon"
persona.Cognome = "De Paperoni"
persona.Email = "paperon.depaperoni@paperopoli.dys"

Response.Write "Dopo l'assegnazione"
Response.Write "Nome: " & persona.Nome & "<br>"
Response.Write "Cognome: " & persona.Cognome & "<br>"
Response.Write "Email: " & persona.Email & "<br>"

Response.Write "Richiamo il metodo"
persona.StampaPersona()

Response.Write "Richiamo la funzione"
dettaglioPersona = persona.dettaglioPersona()
Response.Write dettaglioPersona

Set persona = Nothing
%>



Stampa la pagina


 

Inizio pagina

risorse per webmaster