Woman

EXPLORER L’ENVIRONNEMENT DE DEVELOPPEMENT VISUAL BASIC 2008 - ET SI ON SE PASSAIT DE L’IDE …

Et oui après tout ! Est-ce qu’on peut se passer de Visual Studio pour développer en VB ? Contrairement aux aprioris, la réponse à cette question est oui. Vous pourriez développer vos projets .NET avec un éditeur comme le Bloc-notes ! Mais ne vous méprenez pas, l’idée est de vous montrer à quel point ce serait une hérésie …

Dans cet exercice, vous allez apprendre à :


  • Développer un premier programme écrit en VB111
  • Compiler et exécuter un programme à l’aide du .NET Framework

Objectif

Avant de se lancer à la découverte de Visual Studio, l’objectif de ce premier exercice est de positionner les éléments de base qui sont impliqués dans le développement d’une application avec le langage VB.


Contexte fonctionnel

Nous allons dès cette première partie nous lancer dans le développement du calculateur qui s’exécute en mode console :

Contexte fonctionnel


Déroulement de l’exercice :

De quoi avez-vous besoin pour développer un programme écrit en VB ?

De quoi avez-vous besoin pour développer un programme écrit en VB ?

S’il on va à l’essentiel, il vous faut :

  • Un éditeur pour coder
  • Un compilateur pour convertir votre code en code exécutable
  • Un environnement d’exécution (runtime)

Contrairement à ce qu’on pourrait croire, tous ces ingrédients sont fournis non pas par Visual Studio mais par le Framework .NET ! Sans lui, rien ne marche ! C’est d’ailleurs pour cela qu’il est installé automatiquement au moment de l’installation de Visual Studio (cf. procédure d’installation de l’environnement fournie avec ce tutorial). Vous auriez d’ailleurs tout aussi bien pu l’installer seul, sans l’IDE.

Pour vous procurez le Microsoft .NET Framework 3.5 seul :

Pour vous procurez le Microsoft .NET Framework 3.5 seul

 

  1. Créez un premier programme :
    • Ouvrez l’Explorateur Windows.

    • Sélectionnez un répertoire de travail (par exemple C:\Coach VB\Atelier 1\Code).

    • Faites un clic droit Nouveau > Document texte.

      Faites un clic droit Nouveau > Document texte

    • Renommez le fichier en PremierProgramme.vb.

    • Faites un clic droit sur PremierProgramme.vb, et sélectionnez l’option Ouvriravec > Bloc-notes :

      Faites un clic droit sur PremierProgramme.vb, et sélectionnez l’option Ouvriravec > Bloc-notes

    • Ajoutez le code suivant :

Module Programme

     Sub Main()

     End Sub

  End Module
Item - no.1

Comme dans tout programme, vous devez indiquer au runtime le point d’entrée de l’application. C’est l’objectif de la procédure Main qui contient les premières lignes de code à exécuter au lancement de l’application. 

Item - no.2

Pour en savoir plus sur la procédure Main :

https://msdn2.microsoft.com/fr-fr/library/ms235406.aspx

Item - no.3

Les mots clés Sub et End Sub délimitent le contenu de la procédure Main. VB utilise des mots clés qui fonctionnent par paire, du type X / End X, pour structurer le programme en blocs de code. Nous verrons dans ce tutorial que les blocs de code sont fondamentaux pour délimiter la portée des éléments du programme.

Ce type d’écriture par paire de mots clés peut vous paraître lourd mais nous verrons dans la suite de cet atelier que Visual Studio s’occupera bien volontiers pour nous de fermer un bloc par le mot clé adapté précédé de End.

Item - no.4

Un bon réflexe lorsqu’on code avec un langage orienté objet, est de toujours penser à placer son code dans un containeur quelconque. Dites vous bien qu’une procédure qui se balade toute seule dans un fichier, ça n’a pas de sens ! Ici pour démarrer en douceur, avant de se lancer dans la programmation basée sur les classes, nous allons nous autoriser à utiliser l’instruction Module de VB. Mais profitez en bien, car c’est la première et dernière fois J. Avec un module, il n’est donc pas question encore d’objet et c’est un peu comme si pour l’instant on continuait à programmer à l’ancienne mais au moins, on a un containeur pour exécuter le programme.

Item - no.5

Si vous voulez en savoir plus sur les différences entre les Modules et les Classes :

https://msdn2.microsoft.com/fr-fr/library/7825002w.aspx

  • Ajoutez les lignes suivantes au programme :
Module Programme

     Sub Main()

         System.Console.WriteLine("Bonjour à tous")

         System.Console.ReadKey()

     End Sub

  End Module
Item - no.1

Quel est l’objectif fonctionnel de ces deux lignes ?

Affichez le message « Bonjour à tous » dans une fenêtre de commande (console) puis bloquez la console le temps de lire le message. Nous ferons notre calculateur plus tard dans cet atelier.

Rien de bien sorcier donc… sauf que vous savez écrire sur une fenêtre de commande vous ? Moi, pas ! Heureusement, nous avons à disposition toute une palette de classes fournies par le .NET Framework dont l’objectif est de nous épargner l’écriture du code pour toutes les actions élémentaires de ce type, de façon à ce que vous puissiez concentrer toute votre attention sur l’écriture du code métier de votre application.

Item - no.2

Ce qu’il faut comprendre, c’est que la méthode WriteLine de la classe System.Console du .NET Framework, est exactement la même quelque soit le langage que vous utilisez. Elle serait par exemple utilisable telle quelle en C#. Le langage apporte par contre des différences de syntaxe et de structure du code.

Item - no.3

Cliquez sur l’image pour télécharger le poster des types et espaces de noms du Framework 3.5 les plus couramment utilisés (donc ils sont loin d’y être tous J) :

Télécharger le poster des types et namespaces couramment utilisés du .NET Framework 3.5

Item - no.4

Revenons aux spécificités de VB…

En français, les phrases commencent par une majuscule et se terminent par un point. En VB, une instruction est délimitée tout simplement par la ligne. Facile !

L’instruction suivante, écrite sur deux lignes, génère donc une erreur de compilation :

System.Console.WriteLine

      ("Bonjour à tous")

Pour éclaircir le code, vous pouvez bien sûr découper une instruction sur plusieurs lignes. Dans ce cas, pensez à ajouter un espace suivi du signe _ (souligné) à chaque fin de ligne (excepté pour la dernière qui marque la fin de l’instruction) pour indiquer au compilateur que votre ligne de code se poursuit sur la ligne suivante.

System.Console.WriteLine _ Espace + Souligné

      ("Bonjour à tous")

Item - no.5

Autre bonne nouvelle pour développer vite, VB ne tient pas compte de la casse des noms. Aussi les deux lignes suivantes sont absolument identiques pour le compilateur VB.NET :

system.console.writeline("Bonjour à tous")

System.Console.WriteLine("Bonjour à tous")

En revanche, si on est honnête, il faut reconnaître que si vous utilisez la notation Pascal qui consiste à commencer chaque mot par une majuscule, vous obtenez un code beaucoup plus clair et lisible. Là encore, on pourra s’appuyer sur Visual Studio pour nous aider à ne pas perdre de temps.

Item - no.6

En savoir plus sur les conventions de nommage des variables du .NET Framework

  • Sauvegardez votre programme par les menus du Bloc-notes.
  1. Compilez le programme :
Item - no.1

Où trouvez le compilateur VB ?

Pour rappel, il est fourni non pas par Visual Studio mais par le .NET Framework (qui s’est installé en même temps que vous avez installé Visual Basic 2008 Express Edition (ou autre édition 2008 de Visual Studio)).

  • Pour voir les fichiers installés par le .NET Framework, ouvrez Windows Explorer et rendez-vous sous le dossier c:\WINDOWS\Microsoft .NET.

    Microsoft .NET

Item - no.2

Attention dans ce même répertoire, vous constatez qu’il y a en réalité plusieurs versions du .NET Framework installées.

Les éditions 2008 de Visual Studio installent la version 3.5 qui correspond au sous répertoire v3.5. Mais cette version du Framework ne fonctionne pas toute seule. Elle s’appuie sur les précédentes versions du Framework, notamment du point de vue du runtime d’exécution, en lui apportant uniquement des extensions nécessaires pour prendre en compte les nouveautés des langages, Linq et diverses autres améliorations.

Néanmoins, si cette version du Framework n’est pas autonome, vous y trouverez cependant un compilateur VB qui lui est propre, le programme vbc.exe, qui prend en compte les nouvelles structures de la toute dernière version du langage (jetez un œil sur l’info bulle du fichier et vous verrez que VB est maintenant en version 9.0). C’est ce programme qu’il nous faut pour compiler notre projet !

Item - no.3

A quoi servent les autres versions du Framework ?

  • La version 2.0, installée dans le sous répertoire v2.0.50727, constitue le noyau de base du Framework sur lequel s’appuient toutes les autres versions du Framework. Vous y trouverez donc également une version du compilateur vbc.exe pour compiler vos projets dans la version précédente de VB.
  • La version 3.0, qui est installée par exemple en standard avec Windows Vista, fonctionne comme la version 3.5 au-dessus de la version 2.0. C’est tellement vrai que si vous regardez le contenu  du dossier v3.0 correspondant, vous constaterez qu’il ne contient que trois dossiers associés aux trois briques supplémentaires fournies par la version 3.0 : Windows Presentation Foundation, Windows Communication Foundation, et Windows Workflow Foundation. Il n’y a même pas de compilateur, cette version du Framework n’apportant aucune nouvelle structure dans les langages, donc s’appuyant sur le compilateur de la version 2.0.

  • Voici un petit schéma qui récapitule l’imbrication des Frameworks entre eux :

    Versions de Fx

  • Lancez l’Invite de commandes depuis la liste des programmes de Windows (ou tapez cmd dans la zone de recherche de démarrage de Vista).

    Invite de commandes

  • A l’intérieur de la nouvelle invite de commande, positionnez-vous dans le sous répertoire contenant votre programme – par exemple, tapez l’ordre cd C:\Coach VB\Atelier 1\Code.

    cd C:\Coach VB\Atelier 1\Code

  • Indiquez à Windows Vista que vous allez utiliser des commandes d’exécution situées sous le répertoire contenant le compilateur VB, en tapant l’ordre suivant :

    path C:\WINDOWS\Microsoft.NET\Framework\v3.5

    path C:\WINDOWS\Microsoft.NET\Framework\v3.5

  • Compilez votre programme avec l’ordre vbc premierprogramme.vb ;

    vbc premierprogramme.vb

Item - no.4

Si vous avez fait une erreur de codage, le compilateur vous l’indique. Il vous reste à corriger la ligne J .

  • Conservez l’Invite de commandes ouverte.
  • Avec l’explorateur Windows, naviguez jusqu’à votre sous répertoire de travail. Un nouveau fichier PremierProgramme.exe a été généré par le compilateur.

    PremierProgramme.exe

Item - no.5

Plutôt que de parler d’exécutable, on dit que le compilateur a assemblé le code dans un fichier d’extension .exe (ou .dll s’il s’agit d’une librairie). C’est pour cette raison que nous appelons les programmes compilés avec .NET des assemblies (assembly est un mot qui vient de la littérature anglaise).

Item - no.6

Pour en savoir plus sur ce qu’est un assembly :

https://msdn2.microsoft.com/fr-fr/netframework/k3677y81.aspx

  • Double-cliquez le programme PremierProgramme.exe, et une nouvelle console s’affiche, en vous souhaitant : Bonjour à tous !

    PremierProgramme.exe

Item - no.7

Qui a pris en charge l’exécution de votre programme ?

Encore et toujours lui…le .NET Framework ! Plus précisément, il s’agit de  l’environnement d’exécution fourni par le .NET Framework qu’on appelle le CLR pour Common Language Runtime.

Comme l’indique son nom (Common Language), il est le même quelque soit le langage .NET que vous avez utilisé pour coder le programme. En effet, lors de la compilation, le compilateur du langage convertit le code source en langage MSIL (Microsoft Intermediate Language) c’est-à-dire en un langage intermédiaire indépendant du processeur, qui est ensuite converti en langage natif par le CLR. On dit que le programme que vous avez développé en VB est écrit en codemanagé pour signifier que le code est géré (managé) par le CLR du .NET Framework.

  1. Codez le calculateur dans une librairie :

    Pour rappel, l’objectif de cette première application est d’effectuer le calcul de la somme de deux nombres entiers. Le plus simple est donc de coder une fonction qui attend en paramètres deux nombres entiers et renvoie le résultat de la somme de ces deux nombres en valeur de retour.

Item - no.1

On peut supposer que cette fonction d’ajout pourrait être utile dans plusieurs autres applications, aussi un bon réflexe est d’externaliser cette fonction dans un projet séparé sous la forme d’une librairie de sortes qu’elle puisse être partagée par tous les programmes qui en ont besoin.

Nous aurons l’occasion de revenir sur cette bonne pratique qui est extrêmement intéressante lorsqu’on développe une application avec une approche orientée objet. En effet, une solution complexe nécessite souvent plusieurs fichiers différents pour exprimer des besoins différents ou pour partager des éléments d’un projet à l’autre.

  • Dans votre répertoire de travail (par exemple C:\Coach VB\Atelier 01\Code), créez donc un nouveau programme nommé Calculateur.vb.
  • En utilisant le Bloc-notes, ajoutez le code suivant, qui ajoute un calculateur capable de faire une addition ;
Public Class Calculateur

    Shared Function Ajouter(ByVal valeur1 As Integer, _

                             ByVal valeur2 As Integer) As Integer

          Return valeur1 + valeur02

      End Function

  End Class
Item - no.1

Notez que ce programme ne contient pas de procédure Main. En effet, c’est une librairie qui va être appelée par un exécutable extérieur, et donc elle n’a pas besoin d’avoir de point d’entrée. Les librairies possèdent une extension .dll.

Item - no.2

Le calculateur est codé sous la forme d’une classe plutôt que d’un module comme précédemment. Mais le mot clé Shared devant la définition de la fonction va nous permettre de travailler d’une manière quasi identique au module dont tous les membres sont implicitement Shared. Nous reviendrons plus en détails sur ce sujet dans ce tutorial.

Item - no.3

Contrairement au module, vous devez préciser le mot clé Public pour indiquer que la classe sera visible de l’extérieur par tout programme qui utilise la librairie. Nous reviendrons plus en détail sur la notion de visibilité lors de ce tutorial.

  • Sauvegardez ce nouveau programme.
  • Avec l’invite de commandes précédemment ouverte, compilez la librairie en indiquant que vous souhaitez obtenir un fichier avec une extension .dll, en utilisant l’ordre suivant : vbc /target:library calculateur.vb.

    vbc /target:library calculateur.vb

    S’il existe une erreur de codage, le compilateur vous l’indique. Corrigez le programme en conséquence.

Item - no.4

Lors de la compilation du programme initial, nous avions utilisé le compilateur avec ses options par défaut. C’est pour cela qu’un fichier d’extension .exe avait été généré. Ici, nous utilisons l’option /target pour générer un fichier d’extension .dll.

Pour voir l’ensemble des options disponibles avec le compilateur, tapez l’ordre  vbc /?.

  • Laissez l’Invite de commandes ouverte.
  • Avec l’explorateur Windows, naviguez jusqu’à votre sous répertoire de travail. Un nouveau fichier Calculateur.dll a été généré par le compilateur.

    Calculateur.dll

  1. Utilisez la librairie de calcul à partir du programme initial en mode console pour effectuer un calcul entre deux nombres entiers :

    • En utilisant le Bloc-notes, rouvrez le fichier PremierProgramme.vb.
    • Modifiez le code initial de façon à utiliser le calculateur :
Sub Main()



        System.Console.Writeline("Bonjour à tous")

        System.Console.WriteLine("L'addition de 10 et 5 est : {0}.",  _

                                                    Calculateur.Ajouter(10,5))

        System.Console.readKey()

    End Sub



  End Module
Item - no.1

La commande est ici écrite sur plusieurs lignes afin d’améliorer la lisibilité dans le cade de ce document. Vous pouvez bien sûr l’écrire en une seule ligne (sans le caractère souligné de fin).

Item - no.2

La commande utilise les possibilités de formatage des chaînes de caractères en passant les paramètres entre accolades. Plus d’informations sur le formatage des chaînes est disponible sur :

https://msdn2.microsoft.com/fr-fr/library/b1csw23d(VS.80).aspx

Item - no.3

Pour invoquer la fonction Ajouter, ici rien de plus simple puisque pour rappel, nous avons utilisé le mot clé Shared. Il suffit d’invoquer la fonction en la précédent du nom de la classe. Encore une fois, ne vous inquiétez pas, nous reviendrons plus longuement sur ces principes objet dans ce tutorial.

  • Sauvegardez le programme.
  • A partir de l’Invite de commandes, compilez de nouveau PremierProgramme.vb, mais en indiquant maintenant que vous voulez référencer la librairie qui contient le calculateur. L’ordre à taper est le suivant :

    vbc PremierProgramme.vb /reference:Calculateur.dll

    vbc PremierProgramme.vb /reference:Calculateur.dll

  • A partir de l’invite de commande, tapez PremierProgramme. le résultat du calcul s’affiche.

    PremierProgramme

    Félicitations ! Vous avez écrit votre premier programme en VB !

  1. Déployez le projet dans un autre répertoire :
    • Utilisez l’Explorateur de Windows pour copier les deux fichiers PremierProgramme.exe et Calculateur.dll puis collez-les dans un autre répertoire du disque.
    • Exécutez le programme PremierProgramme pour vérifier qu’il fonctionne toujours correctement.
Item - no.1

En déplaçant le projet sur un autre emplacement du disque, vous venez de le déployer.

Pour faire tourner ce même programme sur la machine de quelqu’un d’autre, il vous suffirait de transmettre les deux fichiers (par exemple par email) au destinataire qui, à condition bien sûr d’avoir la version correspondante du Framework d’installée en local (sans environnement d’exécution, pas question d’exécuter quoique ce soit), pourrait exécuter votre programme directement.

Item - no.2

Comment un simple copier/coller permet-il de déployer son code ?

En effet, bien qu’une partie du projet soit une dll, vous remarquez qu’il n’est pas nécessaire d’enregistrer celle-ci dans le registre de la machine pour l’utiliser.

Le principe est que lorsque le compilateur génère le code en langage intermédiaire MSIL, il génère en même temps ce qu’on appelle des métadonnées, c’est-à-dire des données qui décrivent tout ce que le runtime doit savoir pour exécuter votre programme (par exemple les références externes dont votre code a besoin). Du coup, La présence de métadonnées dans le fichier en même temps que le jeu d'instructions MSIL permet à votre code de se décrire lui-même, sans nécessité de faire intervenir une autre entité comme le Registre de Windows.

  • Pour terminer, déplacez également les codes sources des deux projets dans le nouveau répertoire sur lequel vous avez déployé les exécutables, afin de libérer le répertoire Atelier 1 pour la suite de l’exercice.

En résumé, dans cette première partie, nous avons vu qu’il suffit d’installer la dernière version du .NET Framework sur votre environnement de travail pour développer en VB.Il vous fournit :

  • le compilateur
  • puis s’occupe d’exécuter le programme,
  • et en prime vous apporte toute une batterie de classes pour coder les instructions de base (telles qu’écrire une information sur la console de l’Invite de commandes Windows).

Oui, mais là, nous n’avons tapé qu’une petite dizaine de lignes de code...Imaginons maintenant un projet constitué de plusieurs dizaines de librairies, elles-mêmes fournissant une multitude de classes avec des milliers de lignes de code L. Franchement, sans IDE, ce n’est même pas la peine d’y penser !