La Class Library

La Class Library, un nuovo tipo di oggetto che è possibile realizzare con Visual Basic .NET (ma anche con C#), non è altro che una DLL contenente oggetti, metodi e proprietà utilizzabili da qualunque programma ne faccia richiesta con un’opportuna dichiarazione. Si tratta quindi di un componente condiviso, che permette di usare le stesse funzionalità all’interno di diverse applicazioni.

Interfaccia new project - link interno

Per costruire una Class Library con VB .NET, seguire gli stessi passi che abbiamo indicato per la Windows Applications nella Lezione 7, con la differenza che in questo caso è necessario selezionare Class Library dall’elenco dei tipi di applicazione. Così facendo si aprirà l’editor del codice all’interno del file Class1.vb, che si presenta in questa forma:

Public Class Class1
End Class

In questo blocco dobbiamo scrivere il codice della classe. Se ci limitiamo a fare questo, tuttavia, non potremmo riutilizzare la Class Library così creata all’interno delle altre applicazioni: per riutilizzare una Class Library, infatti, è necessario che essa sia contenuta all’interno di un Namespace. Modifichiamo quindi il codice creato automaticamente da Visual Basic .NET in modo che la classe Class1 venga inserita in un Namespace, ad esempio di nome Test:

Namespace Test
Public Class Class1

End Class
End Namespace

Ora è finalmente possibile scrivere il codice della classe. Realizziamo, ad esempio, un componente che fornisca i metodi necessari per conoscere l’intervallo di tempo che intercorre tra l’inizio di due azioni successive. Ci servirà un metodo per avviare il timer, uno per fermarlo e uno per conoscere la differenza tra il tempo di inizio e quello di fine. Il codice completo della Class Library sarà dunque il seguente:

Namespace Test
Public Class Class1

Private Inizio As Date
Private Fine As Date
Public Sub StartTimer()
Inizio = Now
End Sub
Public Sub StopTimer()
Fine = Now
End Sub
Public Function DiffTime() As Integer
Return Fine.Subtract(Inizio).Seconds
End Function

End Class
End Namespace

La funzione Now, utilizzata in StartTimer e StopTimer, restituisce la data e l’ora di sistema.
Per calcolare la differenza usiamo il metodo Substract dell’oggetto Fine, che prende come parametro la data da sottrarre, quindi leggiamo la sua proprietà Seconds per avere il tempo espresso in secondi.
Notiamo che le variabili sono state dichiarate Private, mentre le Sub e le Function sono Public: gli oggetti dichiarati Public o Friend sono utilizzabili all’esterno della classe, mentre gli altri non sono visibili; in pratica, creando un oggetto di tipo Class1 all’interno di una form, si ottiene:

Dim A As New Test.Class1()
A.StartTimer()    ’Corretto, “StartTimer” è Public.
Dim B As Date = A.Inizio  ’Errato, “Inizio” non è accessibile perché è Private.

Vogliamo rendere disponibile un’altra funzionalità, una finestra di informazioni in cui sono contenuti una breve descrizione della Class Library e il nome dell’autore.

Finestra informazioni

Per fare questo, innanzi tutto aggiungiamo una form al progetto; inseriamo poi i seguenti oggetti, impostandone anche le proprietà:

Nome controllo (tipo) Proprietà Valore
Label1 (Label) Autosize true
font ->Bold true
Text Classe per il calcolo degli intervalli di tempo
Label 2 (Label) Autosize true
Text Realizzata da (nome autore)
Button1 (Button) Text &Chiudi
Form1 (Form) AcceptButton Button1
FormborderStyle FixedDialog
MaximizeBox False
MinimizeBox False
StartPosition CenterScreen
Text Informazioni

L’unica riga di codice da scrivere in questa form è relativa all’evento Click del pulsante Button1, per chiudere la finestra:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub

Ora dobbiamo estendere la nostra Class Library aggiungendo una Sub per richiamare tale finestra. Definiamo perciò il metodo AboutBox:

Public Sub AboutBox()
Dim frm As New Form1()
frm.ShowDialog()
frm = Nothing
End Sub

Abbiamo così terminato la creazione della Class Library, che potete prelevare facendo clic qui. Se ora proviamo ad eseguirla premendo il tasto F5, apparirà una finestra con il seguente messaggio: “A project with an Output Type of Class Library cannot be started directly” (“Un progetto che ha come output una Class Library non può essere eseguito direttamente). Tale comportamento è normale: Abbiamo detto che una Class Library è un componente riutilizzabile da tutte le applicazioni che ne facciano richiesta; di conseguenza, non è un progetto autonomo, pertanto non può essere avviato direttamente. Per evitare che compaia il messaggio sopra citato, anziché compilare con il tasto F5 è necessario selezionare il comando Build Solution (Crea Soluzione) dal menu Build (Crea), oppure premere la combinazione di tasto CtrL+SHIIFT+B: in questo modo, infatti, dopo la compilazione Visual Basic non tenterà di avviare il progetto (cosa che invece avviene premendo il tasto F5).

Nella prossima Lezione vedremo come è possibile utilizzare una Class Library all’interno di altri progetti.

Both comments and pings are currently closed.

Comments are closed.