Lo scopo di ogni programmatore ad oggetti e di scrivere del codice che sia il più riutilizzabile possibile. Questo perchè, oltre ad un minore tempo di sviluppo, diminuisce il numero di errore che andremo a scrivere e renderà più facile la loro individuazione e correzione. E' risaputo infatti che la prima regola del programmatore è 'Più codice scrivi, più errori commetti', quando poi la maggior parte di esso è una ripetizione infinita di operazioni molto simili la cosa diviene insostenibile. Visual Basic 2005, così come tutti i linguaggi del Framework 2.0, sono ora in grado di gestire oggetti 'generici', i 'Generics' appunto.
I 'Generics' sono speciali classi, metodi ed insiemi in cui il tipo non viene definito ma passato come parametro ad ogni sua creazione, in questo modo quel particolare algoritmo può essere utilizzato per infiniti tipi, sia base che custom. Così facendo non solo ridurremo le righe di codice ma avremo sempre un insieme 'Type-Safe' che, come vedremo nel dettaglio, renderà più sicura la nostra applicazione.
Lo spazio dei nomi del Framework che contiene gli insiemi 'Generics' è la 'Systems.Collections.Generic'. Qui troveremo:
È l'utilizzo di queste nuove classi che apporterà il maggiore vantaggio alla produttività sebbene, come detto, i 'Generics' possano essere usati ben oltre i soli insiemi.
La spiegazione dei 'Generics' non può non essere accompagnata da degli esempi che facciano capire chiaramente il loro utilizzo.
Immaginiamo di dover gestire un sito di commercio elettronico e di aver creato un oggetto per ogni singolo attore della catena di vendita. Avremo quindi a nostra disposizione svariati oggetti tra cui Prodotto, Articolo (che contiene una o più specifiche del nostro prodotto), e Carrello.
Senza i 'Generics' per tenere traccia dei prodotti inseriti nel Carrello avremmo utilizzato un 'ArrayList'. L'ArrayList ci permette di inserire al suo interno N elementi trattandoli come oggetti qualsiasi (Object). Cosa accadrebbe però se al posto di un oggetto Prodotto gli venisse inserito un oggetto Articolo? Purtroppo niente. Seppure l'operazione secondo la nostra logica di progettazione sia errata a livello di programmazione risulta corretta: abbiamo inserito un oggetto in un contenitore di oggetti. L'eventualità che questo possa accadere comporta, per non correre rischi più avanti, di dovere controllare se l'oggetto passato è quello che ci aspettavamo o meno. Il tutto comporterà un aumento del codice da dovere scrivere e rivedere ogni volta che viene effettuata una modifica ai vari Oggetti per verificare che i nostri controlli siano ancora validi.
Esaminiamo il seguente codice e vediamo i problemi che andremo ad incontrare con ArrayList e osserviamo come i 'Generics' risolvano una volta per tutte questi inconvenienti.
Partiamo dal codice di Prodotto e di Articolo:
Public Class Prodotto
Dim _nome As String
Private Sub New()
' non visibile
End Sub
Public Sub New(ByVal nome As String)
_nome = nome
End Sub
Public Property GetNomeProdotto() As String
Get
Return _nome
End Get
Private Set(ByVal value As String)
_nome = value
End Set
End Property
End Class
Public Class Articolo
Dim _nome As String
Friend Sub New()
' non visibile
End Sub
Public Sub New(ByVal nome As String)
_nome = nome
End Sub
Public Property GetNomeArticolo() As String
Get
Return _nome
End Get
Private Set(ByVal value As String)
_nome = value
End Set
End Property
End Class
Guida NantNant è il porting del celebre Ant per Java, un 'build tool', un... |
Guida ASP.NET MVCUn percorso per capire i meccanismi del nuovo Framework Microsoft... |
Guida SilverlightSviluppare Rich Internet Application e contenuti multimediali... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Windows server 200829 Marzo 2010 a Milano |
|
|
Corso Webmaster con ASP.Net22 Marzo 2010 a Roma |