Ti trovi qui:

ActiveXperts.it > Scripting Component > Creare classi con VBScript

ActiveXperts Scripting Component
ActiveXperts Scripting Component

quicklinks

Creazione di classi con VBScript

Le classi non sono un nuovo concetto di scripting. JavaScript, JScript, e altri linguaggi di scripting hanno sostenuto classi o elementi simili per anni. Tuttavia, VBScript 5.0 e' la prima versione di VBScript per sostenere le classi.

Per utilizzare le classi nel codice VBScript, e' necessario prima di ottenere VBScript 5,0 scaricando l'apposito auto-eseguibile file dal sito web di Microsoft Developer Network (MSDN) sito Web o mediante l'installazione di Microsoft Internet Explorer (IE) 5.0. Allora avete bisogno di capire che cosa e' una classe VBScript e imparare a dichiarare, definire, inizializzare e creare un'istanza di una classe.

Comprendere classi VBScript

VBScript 5.0 supporta due tipi di oggetti: oggetti COM e oggetti di classe (generalmente indicato semplicemente come classi). VBScript oggetti COM sono sottotipi di base, come ad esempio un Integer o String. Classi VBScript hanno un sottotipo astratto che incapsula i dati e le funzioni per lavorare con i dati. Si puo' pensare a una classe VBScript come un sottotipo che fornisce potenza di elaborazione e flessibilita'.

E' possibile utilizzare le classi per descrivere le strutture dati complesse. Ad esempio, se l'applicazione tiene traccia dei clienti e ordini, e' possibile definire due classi per loro, ognuno con un insieme unico di dati interni (tipicamente chiamate proprieta') e funzioni (in genere chiamate metodi). E' quindi possibile gestire i clienti e gli ordini come se fossero dei sottotipi VBScript. Ancora piu' importante, perche' si assegna una classe di sue proprieta' e metodi (ad esempio, la sua interfaccia di programmazione), si dispone di un object-oriented strumento per migliorare le applicazioni VBScript.

Dichiarazione di una classe

E' possibile utilizzare la classe dichiarazione per dichiarare una classe. La sintassi di questa affermazione e':

Class name
' Properties and methods go here.
End Class

dove nome e' il nome assegnato tale classe. Si possono dichiarare le proprieta' e i metodi per la classe tra la classe e le clausole End Class.

Ad esempio, si supponga di voler creare la classe VBScript FileList, che contiene 1. Questa classe gestisce i file in una cartella che soddisfano un specifico nome di file che hai fornito. Per creare questa classe innanzitutto e' necessario specificare la parola chiave class seguita dal nome della classe FileList 'Classe. Successivamente, si dichiara la proprieta' della classe e i ​​metodi. FileList ha due proprieta' (FileSpec e FolderPath) e un metodo (Ricerca).

Dichiarare la proprieta' FileSpec

La proprietà FileSpec contiene il nome del file esatto. Ad esempio, il nome del file esatto potrebbe essere C: \ GetAdsiDatabase. Si desidera che gli utenti siano in grado di leggere e scrivere liberamente i valori di questa proprieta', in modo da dichiarare FileSpec come una variabile esterna, o pubblico, con l'istruzione pubblica.

Public FileSpec

E' possibile utilizzare una variabile pubblica in qualsiasi script, non solo lo script in cui e' stata creata la variabile. Tuttavia, se si utilizza una variabile pubblica, non si ha alcun controllo sul valore che gli utenti assegnano alla variabile e nessun controllo sul valore che assumono i rendimenti variabili. Pertanto, non e' possibile utilizzare variabili pubbliche per contenere i valori che sono necessari per convalidare.

Dichiarare la proprieta' FolderPath

La proprieta' FolderPath contiene il percorso completo della cartella contenente i file. Dopo che un utente imposta un percorso di cartella, e' necessario verificare che la cartella esista, il che significa che non e' possibile utilizzare una variabile pubblica. Al contrario, e' necessario memorizzare il percorso della cartella in una variabile interna, o privata e utilizzare due procedure di proprieta' pubbliche a leggere e scrivere a quella variabile. (Procedure di proprieta' pubblica sono wrapper che nascondono il codice che ottiene e imposta i valori delle variabili private.)

Prefissare una variabile privata con la stringa m_ e' una convenzione comune di scripting. Ad esempio, la variabile privata per la proprietà percorso_cartella e' m_folderPath. Per dichiarare m_folderPath, si utilizza l'istruzione privata

m_folderPath privato

Le procedure e le variabili che hanno il qualificatore privato non sono visibili al di fuori della classe. Inoltre, variabili private valgono solo per lo script in cui sono stati creati.

Dopo aver dichiarato m_folderPath, e' necessario dichiarare le due procedure di proprieta' pubblica che si usano per leggere e scrivere quella variabile. La prima procedura per dichiarare e' la procedura Property Get, che restituisce i valori delle proprieta'. La seconda procedura e' la procedura Property Let, che assegna i valori alle proprieta'.

Per dichiarare la procedura Property Get, si utilizza il Property Get

Public Property Get FolderPath
  FolderPath = m_folderPath
End Property

dove FolderPath e' il nome di tale procedura. Includendo l'istruzione pubblica con la Property Get, si sta facendo il valore che la procedura FolderPath torna a disposizione per la lettura pubblica. Cosi', assegnando a FolderPath m_folderPath, e' rendere il valore di m_folderPath disponibile per la lettura pubblica.

Per dichiarare la procedura Property Let, si utilizza l'istruzione Property Let

Public Property Let FolderPath(path)
  m_folderPath = path
  ' Validation statements go here.
End Property

dove FolderPath e' il nome di tale procedura e il percorso e' il nome della variabile che contiene il valore la procedura riprende FolderPath. E' possibile utilizzare lo stesso nome per il Property Let procedura utilizzata per la procedura Property Get fino a quando entrambe le procedure sono parte della dichiarazione stessa Classe. (E' inoltre possibile utilizzare lo stesso nome per le procedure Property Set, che tra breve.) Utilizzando lo stesso nome per due procedure di script e' un'eccezione alla convenzione di denominazione standard di VBScript. Dopo aver nominato la procedura, e' necessario assegnare m_folderPath al percorso per rendere il m_folderPath a disposizione per la scrittura pubblica.

Nell'ambito della procedura Property Let, e' possibile aggiungere un altro codice per eseguire operazioni, come ad esempio la convalida che la cartella esista. E' anche possibile aggiungere il codice per effettuare una procedura Property Let per restituire valori diversi per la stessa proprieta' in base ai privilegi dell'utente chiamante tale procedura.

Se una proprietà contiene un oggetto, non e' possibile utilizzare Property Let e si deve adattare il codice per Property Get. La proprieta' Microsoft ha progettato Sia per funzionare solo con sottotipi di base, ad esempio Integer, Long e String. E' necessario utilizzare Property Set per lavorare con gli oggetti. Property Set e Property Let si escludono a vicenda, se si utilizza quella sbagliata, viene visualizzato un errore di runtime. La sintassi per Property Set e' simile a quella per la proprieta' Let

Public Property Set name(reference)
  ' Statements go here.
End Property

dove nome e' il nome della procedura Property Let e riferimento e' il nome della variabile che contiene il riferimento all'oggetto

Se si utilizza Property Get con una variabile privata che contiene un oggetto, e' necessario aggiungere l'istruzione Set perché VBScript non consente di utilizzare l'assegnazione (=) per assegnare gli oggetti. Ad esempio, se si sta utilizzando la procedura FolderPath per restituire una variabile privata che contiene un oggetto piuttosto che un valore, e' necessario specificare

Public Property Get FolderPath
  Set FolderPath = m_internalObject
End Property

Dichiarare il metodo di ricerca

Il metodo di ricerca e' il nucleo della classe FileList. Questo metodo recupera un elenco di nomi di file da una cartella, e di conseguenza rende i file che soddisfano una specifica dato file disponibili per l'utente. Per dichiarare il metodo di ricerca, e' possibile utilizzare le dichiarazioni pubbliche e di funzione

Public Function funcName
  ' Statements go here.
End Sub

dove funcName è il nome del metodo (ad esempio, ricerca). Si inserisce il codice che eseguirà compito del metodo all'interno del corpo della istruzione Function. Ad esempio, il richiamo A nel listato 1 evidenzia il codice che esegue il compito di cercare le cartelle per i file che corrispondono alla specifica nome del file. Si inizia con questo codice ricerca per la creazione di un'istanza di Microsoft Scripting Runtime biblioteca FileSystemObject (FSO) oggetto. Si utilizza il metodo GetFolder dell'oggetto FSO per restituire una determinata cartella. In questo caso, GetFolder restituisce la cartella che m_folderPath specifica. GetFolder di File punti della struttura in una collezione di tutti i file contenuti in tale cartella.

Per estrarre i file che corrispondono alla specifica nome del file, e' possibile utilizzare un For Each ... Next per scorrere l'insieme e passare ogni nome di file alla funzione IsLike. Questa funzione definita dall'utente corrisponde a stringhe con un criterio dato per determinare se un nome di file soddisfi le specifiche.

Inizializzazione della classe e le sue proprieta'

Dopo aver creato la classe, e' necessario inizializzare in modo che l'applicazione client allochi spazio per quella classe. E' inoltre necessario inizializzare le proprieta' della classe in modo che essa abbia valori di default nel caso in cui l'applicazione client non ne assegni alcuno. E' possibile utilizzare l'evento Initialize per inizializzare contemporaneamente una classe e le sue proprieta'. La sintassi di questo evento e':

Private Sub Class_Initialize
  ' Statements go here.
End Sub

dove Class e' il nome della procedura per inizializzare. Nell'area istruzioni, e' possibile includere il codice per inizializzare le proprietà o altro codice che si desidera eseguire quando l'applicazione client inizializza la classe.

Ad esempio, per inizializzare la classe FileList e le sue proprieta', si utilizza il codice in corrispondenza del richiamo B nel Listato 1. Le dichiarazioni contenute in questo evento Initialize impostano la classe di lavorare su C: \ GetAdsiDatabase per impostazione predefinita. Se si inizializza una proprieta' che contiene un oggetto, è necessario liberare lo spazio allocato quando hai finito di utilizzare la classe. E' possibile utilizzare l'evento termine per porre termine a tale istanza della classe. La sintassi evento termine e':

Private Sub Class_Terminate
  ' Statemkents go here.
End Sub

dove Class e' il nome della procedura necessaria per terminare.

Creazione di un'istanza di una classe

Dopo aver dichiarata e definita la classe, e' possibile utilizzare nello stesso modo si utilizza qualsiasi altro oggetto. Ad esempio, e' possibile assegnare le istanze delle classi di variabili. In primo luogo, si dichiara la variabile che conterra' l'istanza. Quindi si utilizza l'istruzione Set con la parola chiave New per assegnare un'istanza della classe alla variabile. Ad esempio, per creare un'istanza della classe FileList, si specifica

Dim obj
Set obj = New FileList

Creazione di classi e' solo l'inizio

Il successo VBScript sta portando Microsoft a migliorare la struttura di tale linguaggio di scripting. Uno di tali miglioramenti e' il supporto di VBScript 5.0 per le classi. E' possibile utilizzare le classi per creare oggetti che rispondano maggiormente alle entita' reali nel dominio.

Per creare una classe, e' necessario dichiarare, definire e inizializzare la classe e le sue proprieta' e metodi. Dopo aver creato un'istanza di tale nuova classe, e' possibile utilizzare tale oggetto istanziato non solo nello script in cui e' stata creata la classe, ma anche in altri script e applicazioni.