A4. Moduli, Classi e Namespace
Moduli
I Moduli sono spesso usati come contenitori per procedure, funzioni o variabili impiegati in altri punti dell'applicazione, oppure per fornire
un punto di ingresso all'applicazione stessa, in modo da rilevare alcuni parametri prima dell'avvio vero e proprio. Tuttavia
i moduli sono raramente utilizzati nella scrittura delle applicazioni complesse: più che altro sono utili per provare alcuni piccoli
spezzoni di codice. Una cosa che mi capita spesso è di rispondere alle domande nei forum o su messenger riguardo ad un certo codice, che
genera certi errori: qualora non riuscissi ad individuare subito il problema, userei un modulo per testarlo velocemente e osservare cosa
c'è che non va. È un metodo veloce e comodo. Un altro utilizzo del modulo è quello a fini didattici, come sto facendo in questo momento,
ossia illustrare il funzionamento di costrutti, espressioni o metodi con degli esempi.I Moduli sono scritti in file con estensione *.vb, come del resto anche le classi e i namespace, e sono dichiarati e delimitati dalle perole riservate Module [Nome del Moudlo]...End Module:
Il punto d'ingresso di un'applicazion Console, che lavora in ambiente DOS e che noi useremo per esemplificare i concetti, è la procedura Main. Non è possibile dichiarare due procedure Main, poichè si creerebbe dell'ambiguità e il programma non saprebbe quale scegliere.Module Esempio 'Qualcosa End Module
Oltre a Main, c'è un'altra procedura interessante che può essere eseguita nei moduli, ed è New. Questa viene eseguita prima di qualsiasi altra cosa ed è utile per inizializzare campi (vedi oltre, Classi) e variabili (vedi capitolo successivo): infatti è un costruttore (vedi capitolo relativo).Module EsempioSub Main() 'Console.WriteLine("Hello World!") ' Scrive sullo schermo il classico messaggio "Hello, World!" Console.ReadKey() Aspetta la pressione di un tasto per uscire End Sub End Module
Classi
Come già detto in precedenza, ogni cosa nell'ambiente .Net è una classe, compresi i tipi di dato primitivi, come valori interi, decimali,
stringhe e caratteri. Differentemente da come avveniva in passato, ciò che uno sviluppatore .Net si deve preoccupare di fare è utilizzare
e manipolare gli oggetti forniti dal Framework o estendere questi utilimi personalizzandoli. Per definire come un oggetto sia costruito
e come debba comportarsi, il programmatore deve scrivere una Classe. Le classi vengono scritte in file con estensione *.vb e sono dichiarate
e delimitate dalle parole riservate Class [Nome della Classe]...End Class:
In questo esempio ho dichiarato una Classe di nome Utente che contiene tre variabili di tipo String (vedi capitolo successivo) e una procedura di nome CambiaPassword, che serve, ovviamente, a cambiare la password. Tutte le variabili, le proprietà, le strutture e gli enumeratori appartenenti a una classe sono detti membri di classe, mentre ogni funzione o procedura è detta metodo della classe.Class UtentePrivate Nome, CognomeAs String Private PasswordAs String Public Sub CambiaPassword(ByVal NuovaPasswordAs String ) Password = NuovaPasswordEnd Sub End Class
Namespace
I Namespace non sono unità funzionali come i moduli o le classi, ma rappresentano dei raggruppamenti. Essi servono, infatti, a fornire una struttura
solida in cui dichiarare le classi, dividendole per tipo base o per compiti. Esemplificando, se si dovesse creare una libreria di classi
contenente metodi che rendono agevole lavorare con le figure geometriche, potremmo usare i Namespace per separare le varie aree di
competenza:
Come si vede dall'esempio, un Namespace è dichiarato con le keywords Namespace [Nome del Namespace]...End Namespace. Una cosa da evidenziare è il fatto che si possano dichiarare più Namespace uno dentro l'altro, quindi nidificati, ognuno dei quali restringe sempre di più il campo d'azione, aumentando la particolarità. Tutti i Namespace del Framework, tranne System, sono nidificati. L'operatore che ci permette di accedere a un campo (o a un metodo) da una classe, o a una classe da un namespace, o ai rispettivi membri o classi nidificati di altre classi o namespace, è l'operatore punto '.'.Namespace TriangoloClass Scaleno '... End Class Class Isoscele '... End Class Class Equilatero '... End Class End Namespace Namespace QuadrilateroNamespace ParallelogrammiClass Parallelogramma '... End Class Namespace RombiClass Rombo '... End Class Class Quadrato '... End Class End Namespace End Namespace End Namespace
'Quadrilatero.Parallelogrammi.Rombi.Quadrato ' Accede alla classe Quadrato Triangolo.Scaleno Accede alla classe Scaleno
The Totem's Lair - Copyright (C) 2009
È vietata la riproduzione sia totale che parziale del sito.



