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 :
- Clause Option
- Clause Imports
- Procédure Sub Main
- Déclaration de classes et modules
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 :
- Le Design est la partie visible dessinée par le programmeur par l'ajout de contrôles et leur mise en forme.
- Le code est la partie invisible contenant le code informatique du formulaire.
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.
- Les procédures
Sub exécutent une action.
- Les procédures
Function retournent une valeur.
- Les procédure
Property définissent ou retournent des valeurs de propriétés.
- Les procédures évènementielles sont exécutées chaque fois qu'un évènement se produit.
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.