COME FARE L'ESEGUIBILE DI UN PROGRAMMA VB.NET
 

COME SVILUPPARE IL PACCHETTO DI INSTALLAZIONE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IL LINGUAGGIO

Il linguaggio da noi utilizzato è VisualBasic.net in questa sezione verranno analizzate le caratteristiche principali di questo linguaggio di programmazione. Innanzitutto bisogna dire che Visual Basic.net è stato ideato dalla Microsoft e fa parte della suite di sviluppo Visual Studio.net.

VISUAL STUDIO.NET

Visual Studio .NET o (7.0) è l'ultima major release in ordine di tempo di casa Microsoft  ed è la suite di tools di sviluppo dedicata alla costruzione di applicazioni in genere.
Non si tratta di un semplice restyling  ma di una riscrittura quasi completa di tutto il codice dell'ambiente
.
Nel vecchio Visual Studio 6.0 c'erano diversi ambienti per costruire applicazioni con i diversi linguaggi, es. Visual C++ per applicazioni ANSI C, C++, Visual Basic, strumento per costruire applicazioni rapidamente, Visual InterDev per lo sviluppo di applicazioni Web, Siti Web, Servizi Web Ecc.
Dalla release 7.0 il tutto è stato unificato in un unico ambiente molto flessibile, potente e configurabile in base alle esigenze degli utenti  . Con Visual Studio .NET ora possiamo costruire qualsiasi tipo di software utilizzando il nostro linguaggio preferito.
Ecco una prima panoramica dei tipo di applicazioni che Visual Studio mette a disposizione
:

Applicazioni Windows (Win Forms)

In Visual Studio.net le applicazioni windows generali cambiano nome, si chiamano Windows Forms.  Il termine Form è stato ereditato da Visual Basic. Con Form si indica fondamentalmente una finestra in cui possiamo inserire altri controlli come pulsanti, caselle di testo, immagini ecc.
Un insieme di Forms e Controlli costituisce l'interfaccia della nostra applicazione attraverso la quale l'utente interagisce. Di questa categoria fanno parte le classiche applicazioni come Word, Excel, Access e simili, così come anche le applicazioni "da linea di comando" (Console Applications).

Applicazioni Web

Questa la novità più importante introdotta con la nuova release dell'ambiente di sviluppo targato Microsoft. Fino a poco tempo fa l'unica tecnologia a disposizione per lo sviluppo Web era ASP (Active Server Pages) giunta ormai alla matura versione 3.0 che con il supporto avanzato delle classi ADO (ActiveX Data Objects) ci consentiva di accedere alle basi di dati.
Questa tecnologia ormai matura era però fonte anche di diversi problemi e mostrava palesemente i suoi enormi limiti. Con ASP.NET si assiste ad una vera rivoluzione dell'intero panorama dello sviluppo Web. C'è una netta apertura di Microsoft verso gli standard aperti definiti dal W3 come XML e Soap. Non casualmente buona parte dei file di configurazione (delle applicazioni Web, delle policy di sistema e il metabase di IIS 6.0, per fare degli esempi) sono in XML.
L'idea alla base di ASP.NET è quella di costruire architetture e applicazioni complesse e veri e propri servizi (Web Services) integrati non rinunciando all'alta produttività offerta da ASP 3.0.
La sicurezza e le performance sono state migliorate decisamente. Riguardo le performance c'è un nuovo ed efficiente meccanismo di caching che evita continue chiamate ai DB per recuperare gli stessi dati, e una nuova architettura di IIS 6.0 che con un nuovo driver (http.SYS) che gira a livello di kernel permette di servire quantità elevate di richieste. In più c'è da sottolineare che è cambiato il threading model e questo permetterà di fare funzionare più siti web e più application pool sulla stessa macchina senza che il possibile crash di una di queste faccia crollare l'intero IIS.

Windows Service Applications
Il mondo delle applicazioni  è formato anche da programmi che sono eseguiti in background, che non hanno interfaccia con l'utente e che interagiscono con il sistema operativo. Sono i Servizi di Windows. Per farvi un esempio rientrano in questa sezione i Web Server, i server di posta, i server FTP, e così via.
Mentre nell'ambiente precedente (VS 6.0) costruire applicazioni di questo tipo era un'impresa molto difficile e possibile solo a programmatori di lunga e provata esperienza, con Visual Studio .NET abbiamo a disposizione una serie di classi che ci facilitano enormemente la vita.
In particolare il Framework ha una classe (ServiceBase) che implementa proprio i metodi tipici di un servizio Windows (OnStart, OnStop, OnPause, ecc.).
Visual Studio .NET infatti quando scegliamo un progetto di questo tipo si appoggia proprio a ServiceBase creando uno scheletro di applicazione (Skeleton) contenente il minimo delle dichiarazioni che utilizzeremo poi per aumentare le funzionalità del nostro servizio.
 La gamma di applicazioni che si possono sviluppare con il nuovo ambiente di sviluppo di Microsoft è veramente vasta e copre ormai qualsiasi esigenza. In più abbiamo la possibilità di scegliere il linguaggio di sviluppo con cui ci si trova meglio e sfruttare l'ottima gerarchia di classi messa a disposizione dal Framework.
Sicuramente l'ambiente nuovo è veramente all'altezza e offre una velocità di sviluppo senza eguali e quindi alta produttività, anche se di contro c'è il fatto che richiede decisamente molte risorse in termini di memoria occupata e spazio su disco, ma visti i prezzi sempre più bassi di questo tipo di componenti, è un problema trascurabile.

VISUAL BASIC.NET

Il VisualBasic.net  introduce talmente tanti cambiamenti rispetto alle versioni precedenti che da molti  è considerato un nuovo linguaggio di programmazione piuttosto che un semplice aggiornamento. Ora Visual Basic è un linguaggio di programmazione orientato agli oggetti: ereditarietà, polimorfismo e overloading non sono più prerogative dei programmatori Java e C++. I tipi di dato sono stati modificati, per renderli conformi alle definizioni usate negli altri linguaggi; ad esempio, il tipo di dato Long è stato sostituito da Integer (il vecchio Integer ora è diventato Short). Anche per quanto riguarda la gestione degli errori, VB si è ispirato a Java e C++, introducendo il costrutto Try. Catch. Finally.
Un'altra importante novità è il supporto nativo per la creazione e la gestione dei thread. La casella degli strumenti di VB, inoltre, è stata ampliata includendo numerosi nuovi controlli utili, tra cui uno che permette di inserire un'icona nella System Tray, vicino all'orologio. I controlli per visualizzare le finestre di dialogo comuni e gli elementi dell'interfaccia di Windows, come la Toolbar, la Statusbar e la Listview, fanno ora parte dei componenti standard, cioè sono utilizzabili senza dover ricorrere a controlli OCX aggiuntivi. La nuova versione di Visual Basic consente anche di creare applicazioni console, cioè applicazioni eseguibili dalla riga di comando di MS-DOS.
Come conseguenza di tutte queste innovazioni i progetti realizzati con le versioni precedenti di VB sono incompatibili con VB .NET, cioè non possono essere aperti con quest'ultimo se non utilizzando una procedura di conversione che, però, nella maggior parte dei casi richiede anche degli interventi manuali. Anche il formato dei file, infatti, è stato modificato: ora tutti i file che contengono il codice sorgente hanno estensione .vb. Per tale motivo non è consigliabile cercare di aggiornare i propri programmi a VB .NET; al contrario, è conveniente utilizzare questo linguaggio per la creazione dei nuovi software.

CAMBIAMENTI NEI TIPI DI DATO RISPETTO A VISUAL BASIC 6.0

Uno dei cambiamenti più evidenti in Visual Basic .NET, rispetto alle versioni precedenti, riguarda i tipi di dato. Tale modifica si è resa necessaria per rendere i tipi di dato di VB .NET formalmente uguali a quelli utilizzati in C# e in C++ (gli altri due linguaggi "principali" di Visual Studio .NET).

Il tipo di dato Long è stato sostituito da Integer, che quindi ora è usato per la rappresentazione di numeri interi a 32 bit; il vecchio Integer di VB6 e delle versioni precedenti, usato per i numeri a 16 bit, è diventato Short. In VB .NET il tipo Long serve per rappresentare i numeri a 64 bit. Comunque, per dichiarare questi tipi di dato, è possibile utilizzare anche i nomi con cui sono identificati all'interno del framework: invece di Short di può usare Int16, invece di Integer Int32 e al posto di Long Int64. Riassumendo, ad esempio:

Visual Basic 6

Visual Basic .NET

Dim I As Integre

Dim I As Short
oppure
Dim I As Int16

Dim L As Long

Dim L As Integer
oppure
Dim L As Int32


Relativamente alle espressioni booleane, bisogna evidenziare una importante novità  utilizzando l'operatore Or tra due espressioni logiche: ad esempio A > 0 Or B = 5, esse vengono sempre controllate entrambe, anche se, in realtà, nel caso in cui A > 0 sia vera, non sarebbe necessario fare il controllo sulla B, dal momento che il risultato di tutta l'espressione sarà comunque True.
Per sopperire a tale mancanza, è stato introdotto un nuovo operatore, OrElse: utilizzando quest'ultimo, A > 0 OrElse B = 5, se la prima condizione è vera la seconda non viene valutata.
Analogamente, per quanto riguarda l'And, l'operatore AndAlso evita il controllo sulla seconda condizione se la prima è falsa, poiché il risultato finale sarà sempre False.
Le stringhe a lunghezza fissa non sono più supportate nel linguaggio. Non è quindi più possibile scrivere una dichiarazione come la seguente:

  Dim S As String * 10

La nuova versione del linguaggio introduce delle novità anche per quanto riguarda l'area di validità delle variabili: ora le variabili sono locali rispetto alla porzione di codice in cui vengono definite. Se, ad esempio, si dichiara una variabile all'interno di un ciclo For, essa non sarà più utilizzabile una volta usciti dal ciclo stesso. Si verifica quindi la seguente situazione:
Il tipo Currency è stato eliminato; al suo posto è possibile usare il nuovo tipo Decimal per i calcoli monetari e per calcoli a virgola fissa in cui la precisione riveste un'importanza particolare.
Il tipo di dati Variant non esiste più: al suo posto è necessario usare il tipo Object, che comunque conserva tutte le caratteristiche del Variant, quindi può essere utilizzato per memorizzare qualsiasi tipo di dato primitivo, nonché Empty, Null, Nothing, oppure come puntatore ad un oggetto.

Anche la gestione degli array è cambiata: ora gli array possono essere solo a base 0; non è quindi più possibile specificarne il limite inferiore. Un effetto collaterale di questa modifica è che l'istruzione Option Base 1 non esiste più.
I tipi definiti dall'utente ora non si creano più con il costrutto Type; al suo posto è stata introdotta la parola chiave Structure. Ogni elemento all'interno della struttura deve essere dichiarato con Dim, Event, Friend, Private, o Public (ritorneremo su queste parole chiave più avanti, quando parleremo delle classi in VB .NET). Ad esempio:

Visual Basic 6

Visual Basic .NET

Public Type IMPIEGATO
  Nome As String
  Matricola As String
End Type
Public Structure IMPIEGATO
  Dim Nome As String
  Dim Matricola As String
End Structure



Una novità significativa introdotta dalle Structure di VB .NET è la possibilità di definire Sub, Function e Property all'interno di una struttura. Riprendendo l'esempio sopra riportato, è possibile aggiungere una Sub alla struttura IMPIEGATO che visualizzi una finestra contente le informazioni contenute nella struttura stessa:

Public Structure IMPIEGATO
    Dim Nome As String
    Dim Matricola As String
    Sub Informazioni()
      'Visualizza una MessageBox che contiene le informazioni contenute nella struttura.
      MsgBox("Nome dell'impiegato: " & Nome & vbCrLf & "Matricola: " & Matricola, MsgBoxStyle.Information)
    End Sub
  End Structure


Un utilizzo di questa struttura è il seguente:

    Dim I As IMPIEGATO
    With I
      .Nome = "Marco Minerva"
      .Matricola = "232440"
      .Informazioni()
'Richiama la Sub definita nella struttura.
    End With


Altre novità importanti sono state introdotte da VB .NET relativamente alla dichiarazione di costanti, variabili, procedure e funzioni. Innanzi tutto, è  possibile inizializzare una variabile nella sua dichiarazione.    
Nelle precedenti versioni di Visual Basic, se non diversamente specificato, i parametri di una funzione o di una procedura venivano passati per riferimento; in pratica, la parola chiave ByRef era predefinita. In VB .NET, invece, per default gli argomenti sono passati ad una funzione per valore (ByVal); utilizzando l'editor di Visual Studio .NET, se nella dichiarazione di una Sub o di una Function non si specifica altrimenti, davanti ai nomi degli argomenti verrà automaticamente aggiunto ByVal.

Infine, se un parametro di una funzione è dichiarato come Optional, è obbligatorio specificare il valore che tale parametro assumerà nel caso in cui non venga specificato quando si richiama la funzione stessa. Ad esempio:

Visual Basic 6

Visual Basic .NET

Private Sub DoSomething(frm As Form, Optional I As Integer)
.
End Sub
Private Sub DoSomething(ByVal frm As Form, Optional ByVal I As Short = -1)
.
End Sub



Un'ultima nota riguarda il modo di restituire un valore di una Function. Nelle precedenti versioni di Visual Basic, per restituire un valore era necessario scrivere <nome funzione> = valore. In VB .NET, oltre a questo metodo, è stato aggiunta la parola chiave Return, analoga a quanto già esistente in C e in Java

Utilizzo di classi in Visual Basic.net

Alla base di ogni linguaggio di programmazione orientato agli oggetti c'è il concetto di classe.  Nelle versioni precedenti di Visual Basic emergeva il di modulo di classe. In effetti, le classi di VB .NET mantengono tutte le caratteristiche dei moduli di classe, ma ne aggiungono numerose altre. Una classe è una collezione di variabili, metodi e proprietà; è possibile creare una classe usando il costrutto Class:

Class Test

  Dim Nome As string
  'Altre variabili.

  Public Sub VisualizzaNome()
    '...
  End Sub
End Class


Una classe è anche un tipo, quindi può essere assegnata ad una variabile:
Dim Prova As New Test() 'La variabile Prova contiene un'istanza della classe Test. E' da notare l'uso della parola chiave
New, necessaria perché la variabile che stiamo definendo si riferisce ad un oggetto (come in Visual Basic 6, infatti, le istanze degli oggetti sono create con New). Fatto questo, è possibile utilizzare la classe utilizzando la comune sintassi di Visual Basic

Ereditarietà, polimorfismo e overloading

Questi concetti stanno alla base dei linguaggi di programmazione ad oggetti che utilizzano le classi. Si definisce ereditarietà la possibilità per una classe (detta classe derivata) di derivare da un'altra (la classe base), in modo tale che il tipo derivato possa utilizzare le variabili, i metodi, ecc. del tipo base. La parola chiave utilizzata per creare una relazione di eredità è Inherits; questa istruzione deve obbligatoriamente essere sulla prima riga di codice dopo la definizione della classe. Il termina polimorfismo indica invece la possibilità di definire all'interno di più classi metodi e proprietà con lo stesso nome, in modo che, ad esempio, una classe derivata possa ridefinire un metodo della classe base con lo stesso nome.
 L'overloading, letteralmente significa  sovraccaricamento, èd  la possibilità di definire più versioni di una procedura, utilizzando lo stesso nome ma un numero e/o un tipo diverso di argomenti: in fase di esecuzione, sulla base degli argomenti effettivamente passati alla routine, verrà richiamata la procedura corretta; nella guida iin linea di Visual Basic.net  sono specificati con precisione i passi che il compilatore esegue per risolvere l'overloading, cioè per determinare qual è la routine corretta da richiamare.