Nella precedente Lezione ci siamo fermati alla fase di compilazione della Class Library. Ora vedremo cosa si deve fare per usarla in un progetto. Ricordiamo che il risultato della compilazione di un progetto in VB .NET, sia esso una Windows Application, una Class Library o qualsiasi altro tipo di progetto, viene posto nella sottocartella bin della cartella del progetto; nel caso della Class Library appena creata, la compilazione ha creato nella cartella bin un file di nome ClassLibrary1.dll: è questo il componente che possiamo riutilizzare nelle nostre applicazioni.
Creiamo quindi una nuova Windows Application e aggiungiamo ad essa un riferimento a tale Class Library. Per fare questo, fare clic con il tasto destro del mouse sul nome del progetto all'interno del Solution Explorer; dal menu contestuale selezionare il comando Add Reference (Aggiungi riferimento). Si aprirà la finestra di dialogo Add Reference, divisa in tre schede: .NET include tutte le componenti del framework .NET che è possibile riferire nel progetto; COM raggruppa gli oggetti di tipo COM installati nel sistema (in pratica contiene i Componenti delle precedenti versioni di Visual Basic); Projects (Progetti) visualizza tutti i progetti utilizzabili nel progetto corrente. Inizialmente la lista corrispondente a quest'ultima scheda è vuota: è qui che dobbiamo aggiungere il riferimento alla Class Library. Fare clic sul pulsante Browse (Sfoglia), portarsi nella cartella della Class Library e aprire la sua sottocartella bin. Ora selezionare il file ClassLibrary1.dll e confermare con un clic sul pulsante Open (Apri).
Premere nuovamente OK nella finestra di dialogo Add Reference per aggiungere il nuovo riferimento al progetto. A questo punto il Solution Explorer dovrebbe essere simile a quello mostrato in figura.
Notiamo che, sotto la voce References (Riferimenti) è stato aggiunto ClassLibrary1. Ora possiamo finalmente scrivere il codice per utilizzare la nuova classe. Innanzi tutto dobbiamo far sapere a Visual Basic che la form importa il namespace Test di ClassLibrary1; tale obiettivo si raggiunge utilizzando la parola chiave Imports:
Imports ClassLibrary1.Test
Questa dichiarazione deve precedere la definizione della form. E' ora possibile istanziare le classi contenute nel namespace Test:
Dim C As New Class1()
In tal modo attraverso l'oggetto C si ha la possibilità di accedere alle proprietà e ai metodi Public o Friend esposti da Class1. Se non avessimo usato l'istruzione Imports, per creare un oggetto di tipo Class1 sarebbe stato necessario specificare tutto il percorso di questa classe, cioè:
Dim C As New ClassLibrary1.Test.Class1()
In pratica la parola chiave Imports permette di abbreviare le dichiarazioni, indicando a Visual Basic all'interno di quali namespace deve cercare le classi che si utilizzano nel progetto.
In fase di compilazione il file ClassLibrary1.dll verrà automaticamente copiato all'interno della directory bin del progetto che lo utilizza. Questo particolare è molto importante: per distribuire un'applicazione che utilizza una Class Library esterna, è sufficiente copiare quest'ultima nella stessa cartella contenente il programma: non è necessario registrare la Class Library nel sistema utilizzando il programma RegSvr32.
Proviamo adesso ad utilizzare la Class Library che abbiamo realizzato nella precedente Lezione. Vogliamo realizzare un programma che controlli se un certo numero è primo: insieme alla risposta vogliamo che venga anche restituito il tempo impiegato per tale controllo. Dopo aver importato la Class Library come spiegato in precedenza, inseririamo nel form i seguenti oggetti:
|
Come di consueto è possibile scaricare l'interfaccia del programma facendo clic qui. Passiamo alla scrittura del codice, cominciando dalla funzione che, dato un numero, determina se questo è primo oppure no:
Public Function Primo(ByVal N As Integer) As Boolean
Dim I As Integer
Dim L As Integer = Math.Sqrt(N)
For I = 2 To L
If N Mod I = 0 Then Return False
Next
Return true
End Function
L'unica cosa da notare è l'uso della classe Math, che mette a disposizione alcune funzioni matematiche; nel nostro caso, Math.Sqrt restituisce la radice quadrata del numero. La parte più importante del programma è contenuta all'interno della routine che gestisce l'evento Click su Button1:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If IsNumeric(TextBox1.Text) = true Then
Dim Tempo As New Class1()
Dim Risultato As Boolean
Dim Intervallo As Integer
Tempo.StartTimer() 'Avvia il timer.
Risultato = Primo(CInt(TextBox1.Text))
Tempo.StopTimer() 'Ferma il timer.
Intervallo = Tempo.DiffTime
MsgBox("Il numero " & CInt(TextBox1.Text) & " è primo? " & Risultato & _
"." & vbCrLf & vbCrLf & "Tempo di esecuzione: " & Intervallo & " secondi.")
Tempo = Nothing
End If
End Sub
Innanzi tutto controlliamo se nella TextBox è stato effettivamente digitato un numero, usando la funzione IsNumeric. In tal caso creiamo una nuova istanza di Class1, avviamo il timer e controlliamo se il numero è primo; subito dopo fermiamo il timer, memorizziamo nella variabile Intervallo il tempo impiegato e visualizziamo una finestra di informazioni sull'esito dell'operazione. Ora non ci resta che aggiungere il codice relativo al Button2:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Informazioni As New Class1()
Informazioni.AboutBox()
Informazioni = Nothing
End Sub
Dopo la creazione di una istanza di Class1, in questo caso richiamiamo il metodo AboutBox per visualizzare la finestra contenente le informazioni sulla classe.
Potete scaricare l'applicazione completa facendo clic qui.
La prossima Lezione, l'ultima del corso, tratterà della compilazione e della distribuzione di un'applicazione realizzata con Visual Basic .NET.