Visual Basic .NET


Visual Basic .NET
Visual Basic .NET
Logo VB.PNG

Apparu en 2001 (VB10 : 2010)
Auteur Microsoft
Paradigme Orienté objet, Structuré et Impératif
Typage Statique, Fort et nominatif
Dialectes VB7 (VS2003), VB8 (VS2005), VB9 (VS2008), VB10 (VS2010)
Influencé par Visual Basic, C#
Implémentations .NET Framework, Mono

Visual Basic .Net est un langage de programmation à la syntaxe similaire à celle de Visual Basic 6.

Néanmoins, ces deux langages sont assez peu comparables dans la pratique tant l'évolution entre ceux-ci est énorme. Le principal changement étant sans conteste l'introduction de l'orientation objet dans le langage.

VB.NET permet de développer en .Net via Visual Studio, c'est-à-dire seulement sur les systèmes d'exploitation Windows (98, 2000, XP, Vista, 7). Il existe cependant un projet visant à porter la plateforme DotNet (et donc VB.NET) sous Linux, MacOS et OpenBSD. Ce projet s'appelle Mono et il permet déjà de faire tourner nativement des applications .NET 2.0.

Il est important de rappeler que tout programme VB.NET est compilé dans le même langage intermédiaire (IL) que C# ou tout autre langage de la plateforme DotNet.

Sommaire

Les IDE (environnements de développements)

L'IDE commun et incontournable de tous les langages DotNet est Visual Studio, mais celui-ci est payant.

Un IDE gratuit basé sur Visual Studio existe : Visual Basic Express. D'autres IDE gratuits existent, comme SharpDevelop ou MonoDevelop, mais ceux-ci sont moins évolués que Visual Studio.

Évolutions : de VB6 à VB7 (non-exhaustif)

Qu'est-ce qui différencie VB6 par rapport à VB7 (Visual Studio 2003) ?

  • L'orientation objet fait son apparition avec notamment l'intégration de la technologie de l'héritage, qui jusqu'à ce jour limitait l'industrialisation du code Visual Basic (VB6 n'était pas un langage orienté objet à proprement parler).
  • L'intégration de l'environnement de développement (IDE) dans la suite Visual Studio permettant d'utiliser d'autres langages comme Visual C++ ou Visual C#. Une bibliothèque de fonction faite en C# sera totalement compatible et utilisable dans une application VB.NET.
  • Le code produit par VB.NET est compilé dans un même langage intermédiaire qu'on appelle le CIL (Common Language Infrastructure) ou MSIL (Microsoft Intermediate Language). Ce langage est le même que le résultat d'une compilation de C#.
  • La technologie XML est intégrée nativement dans DotNet, ce qui permet la création plus facile d'application en ligne ou de sauvegarde de données.
  • Le générateur de code SQL est beaucoup plus performant.
  • L'écriture de gestionnaires d'erreurs tient compte du Multithreading via des blocs TRY/CATCH.
  • La portée des instructions GOTO est limitée (les sauts ne peuvent se faire qu'au sein d'une même fonction). Ce comportement est dû au fonctionnement-même de la plateforme DotNet et est commun à tous les langages DotNet (C#, J#, ...).
  • La déclaration des variables est rendue obligatoire par défaut (contrairement au Visual Basic 6 où cette fonctionnalité était désactivée par défaut).
  • L'intégration de nouvelles classes d'objet .NET s'est faite tout en permettant pour les versions intermédiaires de réutiliser les objets .COM rendant la migration plus facile de Visual Basic 6 à VB Net. VB.NET est le seul langage de DotNet à avoir une intégration "en profondeur" des objets COM.
  • Les "pointeurs" vers des fonctions peuvent et doivent (dans 99% des cas) désormais être typés (notion de délégués).

Évolutions : VB7 à VB8 (non-exhaustif)

Quelques nouveautés ont fait leurs apparitions entre VB7 et VB8, mais c'est surtout le passage du DotNet FrameWork 1.1 au 2.0 qui marque cette évolution.

En voici tout de même un résumé :

  • Les classes partielles, permettant de répartir l’implémentation d’une classe sur plusieurs fichiers.
  • Les types génériques, évolution typée des templates C++.
  • Les types « nullables », c'est-à-dire la possibilité de spécifier qu’un type de valeur peut être nul. Ceux-ci sont déclarés avec le caractère point d'interrogation « ? » suivant le nom du type, comme ceci : Dim X as Integer? = Nothing (VB9) ou avec une classe particulière (VB8+). Cette valeur « Nothing » serait, si le « ? » n'était pas spécifié, converti en 0 dans ce cas-ci. Dans le nouveau système, (X+10) vaudrait « Nothing » (Nothing est absorbant dans tous les opérateurs), et pas 10 comme cela aurait été le cas autrement. Tout membre d'une valeur « vide » est « vide ».
  • La documentation est automatiquement générée depuis des commentaires spéciaux dans le code.

Évolutions : VB8 à VB9 (non-exhaustif)

VB9 a évidemment implémenté toutes les nouvelles fonctionnalités de C#, ainsi que quelques autres :

  • LINQ, XLINQ, DLINQ…
  • Expression Trees (fonctions anonymes)
  • Assouplissement des conversions entre délégués
  • XML Littéral
  • Introduction du IF ternaire (équivalent de bool?truePart:falsePart), optimisé par rapport à IIF()

Évolutions : VB9 à VB10

VB10 (aussi appelé VBx) marque un tournant majeur dans l'évolution de VB. Outre le fait qu'il sera intégré dans le Framework 4, il devrait surtout combler totalement son "retard" par rapport à C# sur certains points (tout comme C# comblera son retard envers VB), vu que la "co-évolution" des langages C# et VB.NET a été officiellement annoncée. Cela assure non seulement un futur stable à VB.NET, qui ne pourra pas être délaissé par Microsoft mais aussi une garantie que tout ce qui est faisable en C# le sera toujours aussi sous VB.NET (même si c'est d'une autre façon).

Les fonctionnalités prévues pour VBx :

  • Objets dynamiques (permet notamment la Programmation orientée prototype et la communication entre des langages dynamiques (JScript…) et les langages de la plateforme DotNet)
  • Gestion implicite des interfaces (comme C#)
  • Gestion des méthodes anonymes
  • Simplification de l'écriture des tableaux, collections, listes et dictionnaires.

Quelques différences entre C# et VB.NET (non-exhaustif)

Voici les différences les plus flagrants entre VB.NET et C# (VB.NET et C# évoluant, les éléments de cette liste peuvent être obsolètes):

  • VB supporte les paramètres optionnels (C# ne le supporte que depuis sa version 4)
  • VB supporte le "late-binding" (appel d'une propriété/fonction avec son nom, sans connaitre le type de l'objet (pour les objets COM))
  • L'espace de nom Microsoft.VisualBasic donne une compatibilité par rapport à VB6. Il est à éviter si une solution plus performante existe.
  • L'espace "My" implémente de nombreux appels WMI ou d'IO, ainsi que plusieurs "raccourcis" dans la gestion des ressources et paramètres d'applications. (VB8+)
  • VB supporte la structure With
  • Gestion des évènements simplifiée dans les fenêtres et contrôles
  • On peut définir une méthode d'interface avec un nom différent que celui proposé au départ (si on veut redéfinir une fonction dans la classe avec un même nom mais une action différente)
  • Support du mot-clé When dans le bloc Catch (exemple : Catch ex as ComException When ex.ErrNumber = 30)
  • XML Litéral n'est pas implémenté en C#.
  • Les Custom Events ne sont pas implémentés en C#.

Une liste des différences (en 2005) entre C# et VB.NET plus complète existe ici.

Quelques exemples de code en VB.NET

Hello World en VB.NET(Mode Console)

Public Module HelloWorld
 
    ' Les lignes qui suivent sont toutes facultatives, mais conseillées
    ' Elles sont automatiquement transformées en documentation
    ''' <summary>Point d'entrée du programme</summary>
    ''' <param name="Args">Les arguments en ligne de commande passé au programme</param>
    Public Sub Main(Byval Args as String())
 
        ' Ecrire dans la console
        Console.WriteLine("Hello World!")
 
        ' Attendre que l'utilisateur tape ENTER
        ' Renvoie un String (la ligne que l'utilisateur a tapée)
        Console.ReadLine()
 
    End Sub
 
End Module

Hello World en VB.NET(Mode Windows Forms)

Public Class Form1
Public Sub AfficheMessage()
'1ère solution(Marche aussi en VBScript)
MsgBox("Hello World!")
'2ème solution
MessageBox.Show("Hello World!")
End Sub
End Class

Boucles et conditions

'
' A simple IF statement
'
If XCondition = 3 Then
   ' XCondition valait 3
ElseIf YCondition <> 4 Then
   ' XCondition ne valait pas 3
   ' YCondition ne valait pas 4
ElseIf ZCondition Is AnotherObject
   ' XCondition ne valait pas 3
   ' YCondition valait 4
   ' ZCondition et AnotherObject renvoyait vers le même objet
Else 
   ' Aucune des conditions précédentes n'a été rencontrée
End If
 
 
 
'
' An optimised SELECT-CASE (switch in C#)
'
Select Case X
   Case 0
      ' X = 0
   Case 1
      ' X = 1
   Case 2
      ' X = 2
   Case Else
      ' X <> 1
End Case
 
 
 
'
' A SELECT-CASE that's translated as IF/ELSE-IF at compilation
'
Select Case Y
   Case Is < 3
     ' Y < 3
   Case 3
     ' Y = 3
   Case Else
     ' Y > 3 dans ce cas
End Case
 
 
 
'
' While
'
While ImTrue
   ' ImTrue était vrai
   ' Ici on change la valeur de ImTrue
   ImTrue= False
End While
' ImTrue n'est plus vrai
 
 
 
'
' Do...Loop
'
ImFalse = False
Do
   ' Aucune condition n'a été appliquée si c'est la première fois
   ' Sinon, c'est que ImFalse n'est pas faux 
   ' Dans cet exemple, le code n'est pas relancé une 2e fois
Loop Until ImFalse = False
' ImFalse est bien faux
 
 
 
'
' For et For Each
'
For X as Integer = 0 to 9
   ' Ce code sera exécuté 10 fois
Next
 
For X as Integer = 10 to 1 step -1
   ' Ce code sera exécuté 10 fois en sens inverse
Next
 
For Each Element as ElementType In Array
   ' Ce code sera exécuté autant de fois qu'il y a d'éléments de type ElementType dans Array
Next

Gestion des exceptions

VB.NET possède les instructions try et catch permettant de gérer les exceptions (comportement non attendu des instructions du programme).

Exemples :

Try
    My.Computer.FileSystem.FileReadBytes("C:\Chemin\Fichier.ext")
Catch Ex as FileNotFoundException 'Pour l'erreur Fichier introuvable
    MessageBox.Show("Impossible trouver le fichier", "Erreur")
Catch Ex as Exception 'Pour les autres erreurs.
    MessageBox.Show("Une erreur inconnue s'est produite. Erreur renvoyée: " & ex.Message, "Erreur")
End Try
'Remarquez que ex récupère les données
'de l'erreur, permettant de les traiter.
'Il y a d'autres options que Message. Consultez la documentation Visual Basic .NET pour en savoir plus.
 
Try
    SomeUnknownCOMObject.DoSomething()
Catch Ex as COMExcpetion When Ex.ErrorCode = 4
    ' The object was of the excpected type but he throwned
    ' an error with HRESULT 4, which is possible as the 
    ' documentation of the object says (it's an exemple).
    MessageBox.Show("L'objet n'était pas prêt")
    ' Throw some new Application-Specific error.
    Throw new Exception ("The object was not ready.")
Catch Ex as Exception
    ' Display some message
    MessageBox.Show("Une erreur inconnue s'est produite", "Erreur")
    ' But throw the (same) exception
    Throw
Finally
    ' Quoiqu'il se passe, on fait cela
    ' Même si une erreur est survenue, ce code sera lancé
    Try : SomeUnkwnowCOMOBject.DoSomethingAnyWay() : Catch ex as Exception : End Try
End Try

Exemple d'utilisation de LINQ

' Retourne un énumérateur qui renvoie tous les noms des fenêtres enfants qui sont des éditeurs de texte
' Visual Studio 2008 trouve le type de la variable automatiquement, similaire au "var" du C#
Dim AllText = From CW in MyFormInstance.ChildWidows
  Where CW.GetType() is GetType(MyTextEditorWindow)
  Select CW.Text
 
' Crée un objet XML (un Document XML, pas une chaine de caractère)
' Visual Studio 2008 trouve le type de la variable automatiquement, similaire au "var" du C#
Dim XMLDoc = _
    <root><% For Each Item in Items %>
        <item name="<%= Item.Name %>" />
    <% Next %></root>
' Sauvegarde dans un fichier le document XML
XMLDoc.Save("FileName.xml")

Exemple d'un événement simple

' Déclaration des objets (fonctions, événements, ...) pour la fenêtre Form1
Public Class Form1
 
    ' Lorsque l'utilisateur clique sur l'objet Button1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close() ' On ferme la fenêtre parente (grâce à Me) donc l'application
    End Sub
End Class

Exemple d'un code appelant une fonction

Public Class Form1
    ' Création de la fonction Quitter avec un Private Sub
    Private Sub Quitter()
        Me.Close()
    End Sub
 
    ' Lorsque l'utilisateur clique sur l'objet Button1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Quitter() ' On apelle Private Sub Quitter()
    End Sub
 
    ' Lorsque l'utilisateur clique sur l'objet Button2
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Quitter() ' L'avantage de ce code, c'est qu'on peut appeler Quitter() autant de fois que l'on souhaite
    End Sub
 
End Class

Voir aussi

Sur les autres projets Wikimedia :

Articles connexes

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Visual Basic .NET de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Visual Basic .NET — Paradigm(s) Structured, imperative, object oriented and declarative Appeared in 2001 Designed by Micro …   Wikipedia

  • Visual Basic .NET — Basisdaten Paradigmen: prozedural, vollständig objektorientiert Erscheinungsjahr: 2 …   Deutsch Wikipedia

  • Visual Basic .Net — Basisdaten Paradigmen: prozedural, vollständig objektorientiert Erscheinungsjahr: 2002 Entwickle …   Deutsch Wikipedia

  • Visual Basic .NET — (VB.NET) es un lenguaje de programación orientado a objetos que se puede considerar una evolución de Visual Basic implementada sobre el framework .NET. Su introducción resultó muy controvertida, ya que debido a cambios significativos en el… …   Wikipedia Español

  • Visual Basic.NET — Visual Basic .NET Visual Basic .NET Apparu en 2001 (VB9 : 2007) …   Wikipédia en Français

  • Visual Basic.NET — (VB.NET) es una versión de Visual Basic enfocada al desarrollo de aplicaciones .NET. El lenguaje de programación es Visual Basic, que apareció en el año 1991 como una evolución del QuickBasic que fabricaba Microsoft. Es un lenguaje de… …   Enciclopedia Universal

  • Visual Basic .NET — См. также: Visual Basic Visual Basic .NET Класс языка: Объектно ориентированный, Императивный, Структурный, Декларативный Тип исполнения: компилируемый, интерпретируемый Появился в: 2001 …   Википедия

  • Comparison of C Sharp and Visual Basic .NET — The correct title of this article is Comparison of C# and Visual Basic .NET. The substitution or omission of the # sign is because of technical restrictions. Programming language comparisons General comparison Basic syntax Basic instructions …   Wikipedia

  • Microsoft Visual Basic .NET — …   Википедия

  • Visual Studio .NET — Microsoft Visual Studio Внешний вид Visual Studio 2008 SP1 с программой на языке C# в Windows Vista Тип Среда разработки программного обеспечения …   Википедия


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.