Programmation Evenementielle Et IHM 1
Programmation Evenementielle Et IHM 1
Programmation Evenementielle Et IHM 1
Fiche Matière
PRE REQUIS
OBJECTIFS GENERAUX
POPULATION
Contrôle continu
Evaluation semestrielle
MOYENS PEDAGOGIQUES
Support de cours
Travaux Pratiques
On peut utiliser n’importe quel éditeur texte pour développer des fichiers source d’un
programme .NET. Mais le meilleur environnement est Visual Studio .NET car il c’est un
environnement intégré de développement (IDE) qui offre plusieurs avantages :
Une version express contrairement à la version complète payante de Visual Studio .NET,
permet d’installer le Framework et un seul support de langage (dans notre cas le Visual
Basic .NET que nous allons souvent appelé VB dans la suite du cours). Donc, l’écran sera
titré Microsoft Visual Basic 2008 Express.
Fig 16 : écran pour choix d’un nouveau ‘gabarit’ ou ‘template’ pour un projet VB
La fenêtre de code
La programmation sur la plate-forme .NET est orientée objet : le principal élément est
« la classe » qui définit un objet à travers ses propriétés et ses méthodes. Et le
programmeur bénéficie d’un grand nombre de classes prédéfinies regroupées en espaces
de noms ou namespaces dont l’ensemble forme de FCL(Framework Class Library).
L’IDE que nous utilisons facilite très bien l’implémentation de cette notion d’orientée
objet. Le plus gros élément conteneur qui est le formulaire est édité en mode concepteur
(design) et constitue une classe vue en mode code.
ateur(s)
- Le type valeur est utilisé pour « une pièce de donnée » :les prédéfinis sont : integer,
double, long, char, etc. Le programmeur peut construire des types valeurs
(énumérations, structures, etc.
- le type référence a une location dans sa mémoire où la donnée est stockée. Cette
location peut contenir plusieurs « pièces de donnée » : les prédéfinis sont : string,
object. Le programmeur peut construire des types références comme les tableaux, les
fichiers, les classes, les interfaces, etc
Byte 8 0 à 255
Long 64 -9,223,372,036,854,775,808 à
9,223,372,036,854,775,807
Fig 34 : Tableau des types prédéfinis en VB (les types référence sont dans le
fond gris)
Définir une variable au début d'une procédure, juste avant son utilisation ou dans la
section "Declarations" en utilisant Dim
Dim unEntier As Integer
Dim nomClient As String
Dim montantDu As Double
Ceci a pour effet de spécifier le nom d'un espace de stockage et d'annoncer au
compilateur le type de valeur qui sera contenue. Cela permet une gestion plus efficace de
la mémoire et aide à éviter les erreurs. On peut aussi déclarer plusieurs valeurs sur une
même ligne:
Dim nomEtudiant As String, noteEtudiant As Single
Dim nbHeures, salBrut, salNet As Single
Dim dateNaiss, dateEmbauche As Date
On peut aussi initialiser les variables en les déclarant :
Dim nbHeures As Integer = 40
Dim monNom As String = "Michel"
MessageBoxButtons.OK
MessageBoxButtons.OKCancel
MessageBoxButtons.YesNo
MessageBoxButtons.YesNoCancel
MessageBoxButtons.RetryCancel
MessageBoxButtons.AbortRetryIgnore
Constantes de Icône
MessageBoxIcon
MessageBoxIcon.Exclamation
MessageBoxIcon.Information
MessageBoxIcon.Question
MessageBoxIcon.Error
2. 1. DEFINITION
Les formulaires Windows sont utilisés pour créer des programmes GUI. Un
formulaire (forms) est un élément graphique qui apparaît sur le bureau. Un formulaire
peut être une boîte à dialogue, une fenêtre ou un MDI (Multiple Document Interface)
windows. Une composante est une instance d’une classe qui implémente l’interface
«IComponent». Cette interface définit les comportements des composantes graphiques.
Un contrôle, par exemple un bouton (button) ou une étiquette (label), sont des
composantes qui ont une représentation lors de l’exécution du programme. Les contrôles
sont visibles mais d’autres comme «timer» ne le sont pas.
Label Objet où une icône, une image ou un texte peut être affiché.
Textbox Objet où l’utilisateur peut entrer des données avec le clavier. Cet objet
peut aussi afficher de l’information.
ComboBox Objet contenant une liste d’articles dans laquelle l’utilisateur peut faire
une sélection en cliquant dans la liste ou en tapant dans la boîte.
ListBox Objet qui affiche une liste d’articles. L’utilisateur peut sélectionner dans
la liste en cliquant sur n’importe lequel des articles. Plusieurs articles
peuvent être sélectionnés.
La figure suivante montre les contrôles et les composantes d’un formulaire Windows dans
le «Toolbox». Les deux premières images présentent les contrôles que peut contenir un
formulaire et la troisième image présente les composantes.
Lorsqu’on utilise plusieurs fenêtres, la fenêtre active est celle en avant de toutes
les autres. Une fenêtre devient active lorsque l’utilisateur clique à l’intérieur de celle ci.
On dit que la fenêtre à le «focus».
Un formulaire est un objet qui sert à contenir les composantes et les contrôles.
Lorsqu’un contrôle est ajouté, Visual Studio .NET génère le code pour nous. Il crée une
instance de l’objet et initialise ses propriétés. On pourrait écrire le code nous même mais
il est plus facile de créer et modifier les contrôles en utilisant les fenêtres «Toolbox» et
«Properties».
Pour créer une application Windows nous avons besoin d’ajuster les propriétés du
formulaire, ajouter des contrôles, changer les propriétés et implémenter les événements.
Voici la liste des propriétés, des méthodes et des événements les plus communs du
formulaire :
Propriétés Description
Font Police du texte affiché dans le formulaire et aussi la police par défaut
des autres contrôles ajoutés dans le formulaire.
Méthodes Descriptions
Événement Descriptions
Figure 66 : liste des propriétés, des méthodes et événements les plus communs pour un
formulaire
Les événements sont basés sur une notion qui s’appelle délégation. Les objets
référent à des méthodes. Les événements délégués sont «multicast» (classe
MulticastDelegate), ils représentent des groupes de délégués avec la même signature.
Les délégués «multicast» permettent à l’appel des événements d’être envoyés
séquentiellement. Dans le modèle événementiel, les délégués actent comme
intermédiaires entre les objets qui créent des événements et les méthodes qui
manipulent ces événements.
Les délégués permettent aux classes de spécifier des méthodes qui ne sont pas
nommées ou implémentées jusqu'à ce que la classe soit instanciée. Ce principe est très
utile lors de la création de manipulateur d’événement. Par exemple, le créateur de la
classe «Form» n’a pas besoin de nommer ou de définir la méthode qui va s’occuper de
l’événement Clic. En utilisant les délégués, la classe est spécifiée quand un manipulateur
d’événement est appelé.
Nous avons jusqu’ici travaillé dans le mode Design. Ce mode nous permet de
fournir une représentation graphique du programme. Dans l’arrière plan, Visual Studio
.Net a créé du code qui peut être accédé en utilisant l’onglet ou en cliquant n’importe où
à droite dans la fenêtre Design en choisissant «View Code». Pour définir et enregistrer
un manipulateur d’événement pour lblOuput, IDE doit afficher le code de l’application
Windows.
Tout en regardant le code, il faut noter les deux «drop-down menus» dans le
haut de l’éditeur. Le «drop-down menus» à gauche est appelé «Class Name» et
contient la liste de tous les composantes contenues dans notre formulaire. On devrait y
apercevoir lblOuput. Sélectionner cet élément dans le menu. Le «drop-down menus»
à droite est appelé «Méthod Name» et permet au programmeur d’accéder, modifier et
de créer de manipulateur d’événement pour les composantes du formulaire. Cette liste
affiche les méthodes possibles de l’élément sélectionné à gauche.
End Sub
C’est cette méthode (procédure) qui sera appelée lorsque l’utilisateur appuiera sur
le «Label». Maintenant, nous voulons ajouter dans cette procédure le code nécessaire
pour afficher notre boîte de message. Ajouter la ligne suivante dans le manipulateur
d’événement lblOuput_Click :
End Sub
Un «TextBox», classe TextBox, est un endroit dans lequel on peut entrer ou afficher du
texte par le programme ou un utilisateur à l’aide du clavier. Un «password textbox»
est un «TextBox» qui cache l’information entrée par l’utilisateur. Lorsque l’utilisateur
entre des caractères, le «password TextBox» masque les caractères avec un astérisque
(*). Si une valeur est fournit à la propriété «PasswordChar», la «TextBox» devient un
«password TextBox». Les utilisateurs rencontrent souvent les deux types de
«TextBox», lorsqu’ils se loggent in sur un ordinateur ou un site Web dont la page est
protégée.
AcceptsReturn Si True, en appuyant sur Enter une nouvelle ligne est créée.
«TextBox» doit être multiligne. Si False, appuyant sur
Enter c’est le bouton par défaut du formulaire qui est pressé.
Événement de Description
«TextBox»
Un bouton est un contrôle que l’utilisateur peut cliquer afin de déclencher une
action spécifique. Un programme peut employer plusieurs types de bouton, comme par
exemple un «checkbox» ou un «radio button». Tous les boutons sont dérivés de la
classe «ButtonBase». Le texte sur un bouton s’appelle «button label».
Propriété de «Button» Description
«GroupBoxes» et «Panels»
Lorsqu’un contrôle est placé à l’intérieur d’un «GroupBox», le contrôle est ajouté
à la propriété «GroupBox Control» et devient membre de la classe «GroupBox». La
propriété «GroupBox Control» n’est pas accessible à l’intérieur de la fenêtre propriété.
Cette propriété peut-être accédée à l’intérieur de l’éditeur de code. Cette propriété utilise
un argument qui indique l’index du contrôle. Voici un exemple :
control_1 = GroupBox3.Controls(0)
nom = control_1.Name
End Sub
Propriété de Description
«Panel»
«CheckBoxes» et «RadioButtons»
Propriété de Description
«RadioButtons»
Le «CheckBox» est une petite boîte carrée qui peut être cochée ou pas. Lorsque qu’un
«CheckBox» est sélectionné, une petite coche noire apparaît dans la boîte. Il n’y a
aucune restriction comment les «CheckBoxes» sont utilisées : une ou toutes les
«CheckBoxes» peuvent être cochées. Les «CheckBoxes» sont utilisés lorsque
l’utilisateur peut choisir plusieurs options dans un groupe.
«PICTUREBOXES»
Un «PictureBoxes», classe PictureBox, affiche une image. Une image, objet de la
classe Image, peut être un bitmap, un GIF, un JPEG, un icône ou un format métafichier.
La propriété «Image» spécifie l’image qui sera affiché, la propriété «SizeMode» indique
comment l’image doit être affiché (Normal, StretchImage, Autosize ou CenterImage).
Délégué : EventHandler
Argument : EventArgs
Délégué : MouseEventHandler
Argument : MouseEventArgs
MouseEventArgs
Button Spécifie le bouton de la souris qui a été appuyé. Bouton
de gauche, bouton de droite, bouton du milieu ou aucun.
Délégué : KeyEventHandler
Argument : KeyEventArgs
Délégué :
KeyPressEventHandler
Argument : KeyPressEventArgs
KeyPressEventArgs
KeyChar Retourne le caractère ASCII de la clé pressée.
KeyEventArgs
Alt Indique si la clé Alt a été appuyée.
WriteOnly Xor
End If End If
où condition est une expression booléenne.
Else Else
Bloc de code 2 Decision =’’refusé’’
End If End If
Imbrication
mention = “TB”
mention = “B”
mention = “AB”
mention = “Passable”
Else
mention = “Rattrapage”
End IF
Exemple :
… Case 2
Case Else
On peut utiliser la clause select avec l’un des mots clé To, Is, Is et To. Par exemple :
Select case N Select case N Select case N Select case mot
Case 12 Case Is <12 Case 1, 5 to 7, Is >10 Case ‘‘Abel’’, ‘‘Max
….. ….. ….. …..
… … … …
Structure «switch(…)»
Elle prend les couples expression, valeurs. Reponse=switch(expr1, valeur1, expr2,
valeur2, …) Exemple : Monnaie=switch(pays= ‘‘USA’’, ‘‘$’’, pays= ‘‘France’’, ‘‘€’’, …)
Structure «iif(…)»
Elle évalue la condition et prend la 1ère valeur si vraie ou la 2ème valeur si fausse.
Structure «choose(…)»
Elle choisit la valeur spécifiée avec l’index ou numéro. Exemple :
Cette structure de répétition est similaire à la boucle «While», sauf que la condition est
évaluée après l’exécution du Bloc de code. Syntaxe :
Do Exemple
Do i=0
Bloc de code do
i++
On peut représenter la structure «For …Next» avec la structure «While … end while» :
End While
On peut représenter la structure «For …Next» avec la structure «While … end while» :
Exercice 7 : Créer une application console pour la résolution d’une équation de 2nd degré
en prenant en compte les degrés 0 et 1 dans le programme.
Exercice 9 : Application Windows pour calculer les factoriels des différents nombres <=
à un nombre donné au clavier.
Module modPaiement
Sub Main()
paie(40, 3500)
paie(38, 4250)
paie(20, 3750)
paie(50, 4250)
End Sub
End Sub
End Module
End Sub
Cet exemple comme celui qui va suivre, montre une procédure dans une application
console. Ce serait écrit de la même façon dans une applications Windows, mais
généralement le code serait rattaché à la survenue d’un événement : La programmation
événementielle est l’habileté à répondre lorsque l’état d’un objet change dans une
interface graphique. (voir fig 6.4, page 190)
Sub Main()
Dim i As Integer
For i = 1 To 10
Next
End Sub
'Function carre
Return y ^ 2
End Function
End Module
End Fonction
Si la valeur retournée n’est pas du même type que celle définie dans la définition de la
fonction, Visual Basic essaye de la transformer. Si la valeur ne peut pas être convertie,
une erreur lors de l’exécution sera générée.
Les Méthodes
Une méthode est n’importe quelle procédure ou fonction inclue dans une
classe. On a toujours besoin de la classe lorsque nous utilisons une méthode. Par
exemple, le tableau ci-après présente les méthodes de la classe prédéfinie «Math»:
Abs(0) = 0
Abs(-23.7) = 23.7
Boolean Object
Date Object
Double Object
Object None
String Object
Par exemple, la méthode Sqrt de la classe Math, peut être appelé avec un entier
comme argument, même si la définition de la méthode indique qu’il faut utiliser un
argument de type Double. Lorsque cette méthode est appelée avec l’argument 4 :
Console.Write(Math.Sqrt(4))
number = Convert.ToInt32(Console.ReadLine()).
Normalement, les types valeur, sont utilisés pour une « pièce » de donnée, comme
Integer ou Double. Une variable de type référence, contient une location dans sa
mémoire ou est emmagasiné la donnée. La location dans la mémoire contient plusieurs
« pièces » de données. Les types référence sont connus comme étant un objet.
Les types valeur et les types référence contiennent des types déjà construits et
des types que le programmeur peut construire. Les types valeur déjà construits
contiennent les types intégraux (Byte, Short, Integer et Long), les types réels
(Single et Double) et les types Boolean, Date, Decimal et Char. Les types référence
déjà construits contiennent Object et String. Les types valeur qui peuvent être
construits par le programmeur contiennent les Structures et les Enumérations. Les
types référence qui peuvent être construits par le programmeur sont les classes, les
interfaces et les délégués. (voir fig 21 : les types de données)
Les arguments peuvent être passés de deux façons : par valeur ou par référence.
Quand un argument est passé par valeur, le programme fait une copie de la valeur de
l’argument et passe à la procédure cette copie. Si la procédure change la valeur de cette
copie, elle n’affecte pas du tout la valeur originale. Quand un argument est passé par
référence, le programme donne accès à la procédure de changer la valeur originale
directement. Lorsque que nous voulons passer un argument par valeur, il faut utiliser le
mot clé ByVal. Lorsque que nous voulons passer un argument par référence, il faut
utiliser le mot clé ByRef.
Les variables déclarés à l’intérieur d’un bloc, comme dans une procédure
ou dans une structure IF/Then, ont un accès bloc (block scope). Ce genre d’accès
débute à la déclaration de l’identificateur et termine à la fin du bloc (End ou Next). Les
variables locales d’une procédure ont un accès bloc. Les paramètres d’une procédure ont
aussi un accès bloc, parce qu’ils sont considérés comme des variables locales de la
procédure.
Cette déclaration créée une variable, objetAléatoire, de type Random. Le mot clé
New permet la création d’une instance de la classe Random (Objet Random).
x objetAléatoire.Next(x,y) < y
lbldé.Image = Image.FromFile(“de1.jpg”)
Arguments optionnels
Un paramètre peut être déclaré comme étant optionnel. Le programmeur aura le
choix de passer un argument ou pas lorsqu’il appelle cette procédure. Les arguments
optionnels, sont déclarés avec le mot clé «Optional» dans la définition des procédures.
Voici un exemple :
Dans la première situation, il n’y a aucune valeur pour le deuxième paramètre, donc par
défaut il sera 0.
Modules
Les programmeurs utilisent les modules afin de regrouper les procédures. Ces modules
peuvent être réutilisés dans un autre projet. Pour utiliser les modules il faut avoir une
bonne connaissance des règles d’accès. En générale, les modules doivent être auto
contenu, ce qui veut dire que les procédures dans un module ne doivent pas accéder les
variables et les procédures en dehors du module, excepté les valeurs passées comme
arguments. Pour ajouter un module, il suffit de sélectionner Project>Add Module.
Cette déclaration crée une variable nommée numbers initialisée avec les chiffres 1, 2 et
3. Visual Basic peut déterminer la grosseur du tableau lorsque nous lui assignons une
liste. On peut déclarer et initialiser le tableau avec une commande : Dim T() As
Integer = New Integer(11) {}
Dim T1(), T2() As Integer Dim T(5) as integer ou Dim T1(5), T2(4) as
integer
En résumé, on peut :
2. Assigner un objet tableau avec new en précisant le type suivi des parentheses
et des accolades (les parentheses et les accolades peuvent être vides)
Ex. Dim T() As Integer = New Integer() {}
3. Assigner un objet tableau avec new en précisant le type suivi des parentheses
comprenant la taille et des accolades vides
Ex: Dim T() As Integer = New Integer(2) {}
4. Assigner un objet tableau avec new en précisant le type suivi des parentheses
vides et des accolades comprenant les valeurs initiales
Ex : Dim T() As Integer = New Integer() {1, 2, 3}
Plusieurs méthodes existent avec l’objet tableau. Voici les plus communes :
Méthode Définition
Pour passer un tableau comme un argument à une procédure, il faut spécifier le nom du
tableau sans utiliser les parenthèses. Par exemple, pour passer un tableau T qui a été
déclaré comme suit : Dim T As Integer() = New Integer() {50,100,150}
Mais il faut faire attention, car lorsque nous passons un objet, comme le
tableau, c’est l’adresse de l’objet qui est passée, non une copie. Les définitions
des deux procédures suivantes on le même effet sur le tableau Tab :
On peut aussi passer à une procédure la valeur d’un index. Par exemple, T(2) qui
contient la valeur 150 : proc(T(2))
N.B. :
La procédure proc peut être appelée avec un nombre différent d’arguments. Voici
un exemple :
proc() ou proc(2, 3) ou proc(7, 8, 9, 10)