Architecture de VB.Net

1 - Le framework.Net

Le framework.net sert d'interface entre le développement d'applications et le système d'exploitation.
Programme Framework Système d'exploitation Matériel

Divers langages peuvent l'utiliser, comme Visual Basic, C#, C++ ou Jscript.

Dans l'avenir, le framework devrait être adapté à d'autres systèmes d'exploitation comme Linux ou Mac, on pourrait alors utiliser une application sans se soucier du matériel sur lequel elle devrait tourner.

Visual Basic est maintenant un vrai langage orienté objet. Tout ses composants sont des classes du Framework.Net.

Le framework comprend 3 grandes parties dont le Common Language Runtime (CLR) qui gère la mémoire et les processus et contient le compilateur de langage intermédiaire (un système permettant aux différents langages de s'exécuter), la gestion des méta-données et la sécurité.

Le framework.net doit être installé sur un ordinateur pour qu'un programme créé avec Visual Basic.Net puisse s'exécuter.

2 - La structure des programmes

1 - L'ordre de déclaration

Dans un projet, les déclarations doivent toujours respecter l'ordre suivant :

2 - Les clauses Option

Les clauses Option permettent de définir une fois pour toute un ensemble de règles.

Option Explicit
Option Strict
Option Compare
Vérifie la déclaration des variables.
Limite les conversions implicites de types de données.
Définit les règles de comparaison des chaînes de caractères.

3 - Les clauses Imports

Les clauses Imports évitent de faire référence explicitement aux espaces de noms.
L'appel doit se trouver sur la 1ère ligne de code de la feuille.
Imports System.Drawing.Color
Ainsi, on pourra écrire par la suite :
Dim Couleur As Color = Pink
au lieu de devoir écrire :
Dim Couleur As Color = Color.Pink

4 - Sub Main

Placée dans un module, cette procédure sera exécutée par le programme avant toutes les autres. On peut ainsi créer un programme sans interface, ou dont la fenêtre de démarrage dépend de certaines conditions traitées dans cette procédure.

5 - La portée des variables

Public Var1 As Integer
Déclarée dans un module, la variable est connue dans tout le projet et peut, en plus, être utilisée à partir d'autres projets.
Friend Var2 As Integer
Déclarée dans un module, la variable est connue dans tout le projet.
Private Var3 As Integer
Déclarée dans une classe, la variable est connue à l'intérieur de cette classe et uniquement de celle-ci.
Dim Var4 As Integer
Déclarée à l'intérieur d'une procédure, la variable est connue uniquement à l'intérieur de cette procédure.
Dim Var5 As Integer
Déclarée à l'intérieur d'une boucle, la variable est connue uniquement à l'intérieur de cette boucle.

3 - Les formulaires

Un formulaire est un objet servant d'interface avec l'utilisateur. Il présente deux parties :

1 - Faire apparaître un formulaire

Il faut d'abord créer une instance de ce formulaire, puis l'appeler à l'aide des méthodes Show() (affichage non modal) ou ShowDialog() (affichage modal).
Un affichage modal signifie qu'il faudra obligatoirement fermer la nouvelle fenêtre (la fenêtre fille) pour que les contrôles de la fenêtre précédente (la fenêtre mère) soient à nouveau disponibles.
Dans un affichage non modal, les contrôles des deux (ou plus) fenêtres sont accessibles simultanément.

Si Form1 est le formulaire qui a été conçu:
Dim F1 As New Form1
F1.ShowDialog()

2 - Récupérer les informations de fermeture

Soit un formulaire "Form2" contenant 2 boutons "Ok" et "Annuler".
Dans la procédure d'évènement Click du bouton "Ok", on écrit :
Me.DialogResult = DialogResult.Ok
Dans la procédure d'évènement Click du bouton "Annuler", on écrit :
Me.DialogResult = DialogResult.Cancel
Le formulaire est fermé automatiquement dès que le programme arrive sur une instruction DialogResult différente de "None".
De retour sur le formulaire principal, il suffit de tester :
If Form2.DialogResult = ...

3 - Déterminer la provenance

Un formulaire peut être appelé depuis différents autres formulaires. On détermine d'où provient l'appel de la façon suivante :
If Me.ActiveForm.Name = "Form1" Then ...
Attention, cette condition ne doit pas se situer n'importe où, sinon Me.ActiveForm.Name peut avoir la valeur Nothing. Il vaut mieux la tester juste après le chargement du formulaire et créer une variable suivant les besoins.

4 - Passer des paramètres à un formulaire

Voici un exemple pour passer un tableau à 2 dimensions de Form1 à Form2.
Dans Form1 on a créé un tableau et on appelle le second formulaire en lui passant l'objet.
Private Tableau(12,2) As Double
 ...
Dim F2 As New Form2(Tableau)
F2.ShowDialog()
Dans Form2, on initialise une variable de même dimension que le tableau et visible dans toute la feuille.
On créé ensuite une procédure "Sub New" qui admettra le tableau en paramètre.
Private Résultat(12,2) As Double
Public Sub New(ByVal Array1 As Array)
  InitializeComponent()
  Résultat = Array1
End Sub

5 - Évènements liés au formulaire

Load n'est généré qu'une seule fois, lors du chargement du formulaire.
VisibleChanged est généré chaque fois que le formulaire est rendu visible ou caché.
Activated est déclenché chaque fois que le formulaire prend le focus.
Deactivate est déclenché chaque fois que le formulaire perd le focus.
FormClosing se produit pendant la fermeture du formulaire.
FormClosed se produit lorsque le formulaire est fermé.
Disposed Se produit lorsque le composant est supprimé par un appel à la méthode Dispose.

Cette petite liste d'évènements choisis (il y en a beaucoup d'autres) permet de se rendre compte de leur diversité. Il faut donc veiller à bien les utiliser.
Par exemple : On initialisera toutes les données lors du chargement d'un formulaire (Form_load). Mais si quelques données bien précises risquent d'être modifiées dans un second formulaire, on pourra utiliser l'évènement Form_Activated pour mettre à jour uniquement ces données lorsqu'on reviendra dans le premier formulaire.

4 - Les modules

Contrairement au formulaire, un module ne comprend que du code. Il sert surtout à héberger des variables et procédures publiques.
On peut utiliser un module comme élément de démarrage en lui ajoutant une procédure :
Sub Main
  ...
End Sub

Ensuite, faire un clic droit sur le projet. Dans l'explorateur de solutions, ouvrez la fenêtre de propriétés et choississez Sub Main dans "Objet de Démarrage".

5 - Les procédures

Une procédure est un bloc d'instructions délimité par une ligne de déclaration et une ligne de fin commençant par le mot clé End.

6 - Les fonctions

Une fonction est une procédure retournant une valeur.
Voici un exemple d'une fonction retournant la valeur en francs d'un montant passé en euros. Le résultat est présenté, ici, sous la forme d'une chaîne de caractères.
Public Function ConvEuroFranc(ByVal Euro As Double) As String
  Return String.Format("{0:N}", Euro * 6.55957)
End Function

L'appel de la fonction peut se faire de la façon suivante :
MontantFrancs = ConvEuroFranc(520.05)

7 - Types de données

1- Les entiers

Type de données Espace mémoire en octets Valeurs
Byte 1 entier de 0 à 255
Short 2 entier de -32 768 à 32 767
Integer 4 entier de -2 147 483 648 à 2 147 483 647
Long 8 entier de -9e18 à 9e18

2- Les entiers dérivés des précédents

Préfixe : S=Signed ; U=Unsigned
Type de données Espace mémoire en octets Valeurs
SByte 1 entier signé de -128 à + 127
UShort 2 entier non signé de 0 à 65 535
UInteger 4 entier non signé de 0 à 4 294 967 295
ULong 8 entier non signé de 0 à 1,84e19

3- Les nombres à virgule flottante

Type de données Espace mémoire en octets Valeurs
Single 4 de 1,4e-45 à 3,4e38 en valeurs positives et négatives
Double 8 de 4,9e-324 à 1,7e308 en valeurs positives et négatives

4- Les Autres types de données

Type de données Espace mémoire en octets Valeurs
Boolean 2 True ou False
Char 2 stocké sous forme d'entier de 0 à 65 535 représente un caractère unicode unique
Decimal 12 plage de valeurs environ +/- 7,9e28. De structure particulière, c'est la représentation la plus précise d'un nombre, mais c'est aussi la plus lente
Date 8 du 01/01/0001 au 31/12/9999
String 2 x nb Char + 10 texte jusqu'à 2000 milliards de caractères
Objet 4 références d'objets et de tout autres types de données


8 - Dictionnaire

Classe
C'est un plan qui définit précisément un objet. Chaque objet dessiné à l'écran est une instance de sa classe. Une classe représente un objet du réel.
Il est conseillé de créer un nouveau fichier (.vb) pour chaque nouvelle classe.
Public Class Personne
  ...
End Class
Constructeur de classe
C'est une procédure appelée chaque fois que la classe est instanciée.
Elle a pour nom : Public Sub New.
Espace de nom
C'est un concept d'organisation des objets permettant de les référencer sans ambiguïté. Par exemple, System.IO regroupe tout ce qui concerne la lecture et l'écriture des fichiers.
Evénement
Deux types d'évènement peuvent se produire dans un programme:
  • Les évènements produits par une action de l'utilisateur comme un click sur un objet ou la frappe d'une touche au clavier.
  • Un moment précis dans le temps géré par un objet Timer.
    Le système propose tous les évènements possibles, le programmeur décide ou non d'utiliser ces évènements.
Formulaire
C'est une instance de la classe Form, une fenêtre servant d'interface avec l'utilisateur.
Héritage
Une classe dérivée peut hériter des propriétés, méthodes et évènements d'une classe de base (on parle de super classe).
Par exemple, la classe Employé peut hériter de la classe Personne.
Public Class Employé
  Inherits Personne
End Class
Une classe peut avoir les deux attributs suivants :
Public MustInherit class Personne
Dans ce cas, on ne peut pas instancier la classe Personne. Elle ne peut servir qu'à créer des classes dérivées (must = doit). Il s'agit donc d'une classe de base.
Public NotInheritable class Employé
Dans ce cas, aucune classe ne peut hériter de la classe Employé. Cette classe est en bout d'héritage.
Masquage
.
Méthode
Action pouvant être appliquée à un objet. Exemple: L'objet TextBox possède la méthode Clear() pour effacer son contenu.
Procédure de Propriété
L'idée est d'obtenir des variables bien conformes aux besoins. Par exemple, l'âge d'une personne est calculée à partir de sa date de naissance, elle peut être lue mais ne doit pas pouvoir être écrite.
On utilise 2 procédures, Get pour la lecture et Set pour l'écriture ainsi qu'une variable de stockage, interne à la procédure et contenant la valeur de la propriété.
Get est une fonction retournant la valeur de la propriété (mot clé Return).
Set est une procédure prenant en paramètre la valeur de la propriété.
Public Class Personne
  Private v_nom() As String = ""
  Property nom() As String
    Get
      Return Me.v_nom.ToUpper()
    End Get
    Set (ByVal Value As String)
      If Value.Length > 0 Then v_nom = Value
    End Set
  End Property
End Class
  • Pour qu'une propriété soit en lecture seule, il suffit d'omettre la section Set et d'ajouter ReadOnly devant Property.
  • Pour qu'une propriété soit en écriture seule, il suffit d'omettre la section Get et d'ajouter WriteOnly devant Property.
Projet
C'est un conteneur rassemblant tous les fichiers nécessaires à une application.
Propriété
Attribut caractérisant un objet comme sa couleur, sa taille, sa position...
Redéfinition
.
Région
Partie de code que l'on souhaite cacher. Cela n'a aucune incidence sur le programme. Tout le code compris entre les deux lignes de région pourra être masqué afin de donner plus de visibilité au reste du code.
#Region "Procédure de pagination"
 ...
#End Region
Solution
Conteneur identique à un projet, mais de portée plus étendue. Une solution contient un ou plusieurs projets. Un projet est obligatoirement contenu dans une solution. Le fichier porte l'extension .sln.
Surcharge
Le principe de surcharge permet de créer plusieurs propriétés ou plusieurs procédures ayant un même nom pourvu qu'elles aient une signature différente. C'est à dire un nombre ou un type de paramètre différent.
Pour surcharger une propriété, on utilise le mot-clé Overloads.
Public Overloads Property Name(Param) As Type
 ...
End Property
On pourra par exemple créer 2 fonctions de recherche portant le même nom, l'une acceptant comme paramètre un nom de famille, l'autre acceptant un matricule.
Public Overloads Function Cherche(ByVal Nom As String) As String
Public Overloads Function Cherche(ByVal Num As Integer) As String
Visual Basic
C'est un langage de programmation
Visual Studio
C'est un environnement de développement.


Statistiques :      Conformité :  Valid XHTML 1.1 © Christian Soulié
Dernière mise à jour le 16 juillet 2014.
Table des matières -  Éléments de programmation