Page 1
Formation VB.NET
Présentation
Programmer en Visual Basic .NET alphorm.com™©
Formation VB.NET
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 2
Plan
• Présentation du formateur
• Qu’est ce que VB.NET ?
• Le plan de formation
• Les liens utiles
Programmer en Visual Basic .NET alphorm.com™©
Page 3
Présentation du formateur• Fabien Brissonneau
• Email : [email protected]
• Consultant Concepteur et Formateur
• Missions d’architecture, de conception , de réalisation logicielles
• Fondateur de eiXa6
• Actuellement en mission sur un projet de gestion
Programmer en Visual Basic .NET alphorm.com™©
• Actuellement en mission sur un projet de gestion
• Mes références :
� Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau
� Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/
Page 4
Qu’est-ce que VB.NET ?
• Langage Microsoft .NET (comme C#, F#, …)
• S’appuie sur le framework .NET
• Reprend en partie la syntaxe VB
• Langage orienté objet
Programmer en Visual Basic .NET alphorm.com™©
Page 5
Contenu
• Généralités
• Langage orienté objet
• Les délégués et les événements
• Les fichiers
• Gérer les exceptions
• Les bases de données
• Les méta-données
Programmer en Visual Basic .NET alphorm.com™©
• Les opérateurs de VB.NET
• Les collections
• Le multithreading
• Winform
• Les méta-données
• ASP.NET
• WPF
Page 6
Les liens utiles
• Microsoft MSDN :
� http://msdn.microsoft.com/en-us/vstudio/hh388573.aspx
• Visual Studio :
� http://msdn.microsoft.com/en-us/vstudio/aa496123
Programmer en Visual Basic .NET alphorm.com™©
Page 7
Et maintenant …
Programmer en Visual Basic .NET alphorm.com™©
Page 8
VB.NET
Présentation
Programmer en Visual Basic .NET alphorm.com™©
VB.NET
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 9
Plan• Généralités
• Langage orienté objet
• Les délégués et les événements
• Les opérateurs de VB.NET
• Les collections
• Le multithreading
• Winform
Programmer en Visual Basic .NET alphorm.com™©
• Winform
• Les fichiers
• Gérer les exceptions
• Les bases de données
• Les méta-données
• ASP.NET
• WPF
Page 10
Généralités
• Visual Studio
• Compatibilité VB6
• Le GAC
• Les espaces de nommage
Programmer en Visual Basic .NET alphorm.com™©
Page 11
Langage orienté objets
• Penser orienté objet
• Classe et objets
• Les interfaces
Programmer en Visual Basic .NET alphorm.com™©
Page 12
Les points avancés de VB.NET
• Délégués et événements
• Les opérateurs
• Les méta-données
Programmer en Visual Basic .NET alphorm.com™©
Page 13
Le framework .NET
• Les collections
• Le multithreading
• Winform
• Les fichiers
Programmer en Visual Basic .NET alphorm.com™©
• Les bases de données
• WPF
Page 14
ASP.NET
• Création d’un projet ASP.NET
• Le codebehind
• WebService
• Gérer les erreurs
Programmer en Visual Basic .NET alphorm.com™©
• Les contrôles
Page 15
Structure du programme
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Structure du programme
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 16
Plan• Framework, Profils et Plateformes
• Bibliothèques de classes portables
• Les éléments d’une application .NET
� Types
� Classes
� Modules
Programmer en Visual Basic .NET alphorm.com™©
� Assemblies
• CTS, Metadonnées, Attributes
• ILDASM
• La mémoire : Garbage Collector, Finalize et IDisposable
• Résumé
Page 17
Framework, Profils, Plateformes
Plateformes Versions
.Net Framework .Net 4 et +, 4.03 et +,4.5
SilverLight Silverlight 4 et +, 5
Windows Phone WP7 et +, WP 7.5 et +, WP8
.Net pour Metro .Net pour Metro
Programmer en Visual Basic .NET alphorm.com™©
Xbox 360 -
Page 18
Bibliothèque de classes portables
• Bibliothèques de classes utilisables avec plusieurs plateformes
Programmer en Visual Basic .NET alphorm.com™©
Page 19
Elements de l’application .NET
• Types
� Encapsule les données
• Classes
• Modules
Programmer en Visual Basic .NET alphorm.com™©
� Contient le IL, compilé par le CLR via le JIT
� Native Image Generator, ngen
• Assembly
� Informations sur l’assembly, une clé si publique, la sécurité, les dépendances
Page 20
CTS, Métadonneés et attributes
• Common Type System garantit l’interopérabilité entre langages
• Les méta données sont compilées dans l’assembly et accompagne le IL
• Les attributes sont des infos que le développeur injecte
Programmer en Visual Basic .NET alphorm.com™©
Page 21
ILDASM
• Le dés-assembleur peut lire l’assembly compilé
Programmer en Visual Basic .NET alphorm.com™©
Page 22
La mémoire
• Le Garbage Collector est déclenché par le système
• La finalisation est non déterministe
• Une interface est proposée pour s’assurer de la libération des ressources
• Il peut être sollicité par GC.Collect();
Programmer en Visual Basic .NET alphorm.com™©
• Il peut être sollicité par GC.Collect();
• Il est optimisé et gère des générations d’objets
Page 23
Ce qu’on a couvert• Framework, Profils et Plateformes
• Bibliothèques de classes portables
• Les éléments d’une application .NET
� Types
� Classes
� Modules
Programmer en Visual Basic .NET alphorm.com™©
� Assemblies
• CTS, Metadonnées, Attributes
• ILDASM
• La mémoire : Garbage Collector, Finalize et IDisposable
Page 24
Syntaxe de base
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Syntaxe de base
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 25
Plan• Variables : déclaration et typage
• Les types primitifs
• Le contrôle du flux d’exécution
� Conditions : If Then, Select
� Boucles
• Les types références
Programmer en Visual Basic .NET alphorm.com™©
• Les String
• Résumé
Page 26
Variables et déclarations
• Il faut déclarer les variables
• Il faut typer les variables
• Sous le contrôle des options
Programmer en Visual Basic .NET alphorm.com™©
Page 27
Les types primitifs
• Short, Int16, UInt16 : 2 octets
• Integer, Int32, UInt32 : 4 octets
• Long, Int64, UInt64 : 8 octets
• Single : 4 octets
Programmer en Visual Basic .NET alphorm.com™©
• Double : 8 octets
• Decimal : 16 octets
• Char, Byte et DateTime
Page 28
Le contrôle du flux d’exécution
• Les conditions
� If Then Else
� Select Case
• Les boucles
While - End While
Programmer en Visual Basic .NET alphorm.com™©
� While - End While
� For -
Page 29
Les types références
• Les types références sont gérés sur le tas
• Leur cycle de vie est sous contrôle du Garbage Collector
• Ils sont accessibles par des références
• Ils n’ont pas de destructeur déterministe
Programmer en Visual Basic .NET alphorm.com™©
Page 30
Les String
• Différentes façons de créer les String
• SubString
• PadLeft et PadRight
• Split
Programmer en Visual Basic .NET alphorm.com™©
• Classe immuable
• Les constantes
Page 31
Ce qu’on a couvert
• Variables : déclaration et typage
• Les types primitifs
• Le contrôle du flux d’exécution
� Conditions : If Then, Select
� Boucles
Programmer en Visual Basic .NET alphorm.com™©
� Boucles
• Les types références
• Les String
Page 32
Compatibilité VB6
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Compatibilité VB6
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 33
Plan• VB.NET est un nouveau langage
• Microsoft.VisualBasic
• Microsoft.VisualBasic.Compatibility.VB6
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 34
VB.Net est un nouveau langage
• Langage orienté objets
• Basé sur le framework .NET
• Une syntaxe de base VB
• MAIS des concepts nouveaux
Programmer en Visual Basic .NET alphorm.com™©
Page 35
Microsoft.VisualBasic
• Encapsule des fonctions, énumérations et constantes VB6
• Considérés comme sûrs à utiliser dans .NET
• Vous devriez préférer le Framework .NET
• Stables
Programmer en Visual Basic .NET alphorm.com™©
• AppWinStyle, DateFormat, … Collection, Strings…
Page 36
Microsoft.VisualBasic.Compatibility.VB6
• Référencé lors d’une mise à niveau de VB6 vers VB.NET
• Considérés comme obsolètes
• Pourrait évoluer dans les futures versions de VB.Net
Programmer en Visual Basic .NET alphorm.com™©
Page 37
Ce qu’on a couvert
• VB.NET est un nouveau langage
• Microsoft.VisualBasic
• Microsoft.VisualBasic.Compatibility.VB6
Programmer en Visual Basic .NET alphorm.com™©
Page 38
Manipuler le GAC
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Manipuler le GAC
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 39
Plan• Le GAC
• Générer un assembly privé
• Générer un assembly partagé
• Livrer dans le GAC
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 40
Le GAC
• C:\Windows\Assembly
• Ou C:\Windows\Microsoft NET\Assembly -> V4.0
• Un répertoire qui contient les DLL utilisées sur ce poste
• Les assemblys ont des versions : majeur.mineur.build.revision
Programmer en Visual Basic .NET alphorm.com™©
Page 41
Générer un assembly privé
• Un projet correspond à un assembly
• La DLL doit être dans le répertoire du client
• Livraison simple par recopie
Programmer en Visual Basic .NET alphorm.com™©
Page 42
Générer un assembly partagé
• Un assembly partagé est signé
• La clé est référencée par les assemblys clients
• Générer la clé avec sn.exe
• Ou bien utiliser Visual Studio
Programmer en Visual Basic .NET alphorm.com™©
Page 43
Livrer dans le GAC
• Un répertoire dans c:\windows
• Recopier dans le répertoire
• Utiliser gacutil
Programmer en Visual Basic .NET alphorm.com™©
Page 44
Ce qu’on a couvert
• Le GAC
• Générer un assembly privé
• Générer un assembly partagé
• Livrer dans le GAC
Programmer en Visual Basic .NET alphorm.com™©
Page 45
Espaces de nommage
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Espaces de nommage
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 46
Plan• Définition d’un espace de nommage
• Les espaces de nommage de .NET
• My
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 47
Définition d’un espace de nommage
• Bloc de code, nommé
• Isole les types, classes, fonctions …
• Permet une organisation logique des classes
• Vous créez vos propres espaces de nommage
Programmer en Visual Basic .NET alphorm.com™©
Page 48
Les espaces de nommage .NET
• Les espaces de nommage sont importés
• Importation implicite par la boîte de projet
• Alias d’espaces possible
• Cas de Microsoft.VisualBasic
Programmer en Visual Basic .NET alphorm.com™©
• Importation valable aussi dans ASP.NET
Page 49
My
• Pas un vrai espace de nommage
• Donne un accès rapide à certains objets importants
• Application, Computer, Forms, Resources, Settings …
• Plus restreint si ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
• Vous pouvez l’étendre …
Page 50
Ce qu’on a couvert
• Définition d’un espace de nommage
• Les espaces de nommage de .NET
• My
Programmer en Visual Basic .NET alphorm.com™©
Page 51
Les conventions
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Les conventions
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 52
Plan• Les espaces de nommage
• Les classes
• Les méthodes
• Les champs
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 53
Les espaces de nommage
• Regroupement de classes …
• Par ensemble logique
• Par technologie
• Par entreprise
Programmer en Visual Basic .NET alphorm.com™©
Page 54
Les classes
• Les types que vous manipulez
• Un nom clair, définissant l’objectif de votre classe
• Un regroupement de méthodes et de champs
• Dans un fichier portant son nom
Programmer en Visual Basic .NET alphorm.com™©
Page 55
Les méthodes
• Les traitements associés aux classes
• Un nom évocateur
• Un modificateur Sub ou Function
• Une visibilité
Programmer en Visual Basic .NET alphorm.com™©
• Des paramètres clairs
• Les parenthèses
Page 56
Les champs
• Les variables utilisées dans les classes
• Un nom bien choisi
• Un type adapté
• Une visibilité
Programmer en Visual Basic .NET alphorm.com™©
Page 57
Ce qu’on a couvert
• Les espaces de nommage
• Les classes
• Les méthodes
• Les champs
Programmer en Visual Basic .NET alphorm.com™©
Page 58
Les options
Généralités
Programmer en Visual Basic .NET alphorm.com™©
Les options
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 59
Plan• Les paramètres de compilation du projet
• Les options en ligne de commande
• Les directives de compilation et leurs tests
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 60
Les paramètres de génération
• Le projet
• Le compilateur
Programmer en Visual Basic .NET alphorm.com™©
Page 61
Les options de la ligne de commande
• Vbc.exe
Programmer en Visual Basic .NET alphorm.com™©
Page 62
Les directives et leurs tests
• Compilation conditionnelle
Programmer en Visual Basic .NET alphorm.com™©
Page 63
Ce qu’on a couvert
• Les paramètres de compilation du projet
• Les options en ligne de commande
• Les directives de compilation et leurs tests
Programmer en Visual Basic .NET alphorm.com™©
Page 64
Concevoir et coder
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
Concevoir et coder
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 65
Plan• Les objectifs de l’orienté objets
• Mettre au même endroit données et traitements
• Penser interactions entre objets
• Encapsuler l’implémentation
• Utiliser le diagramme de classes
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 66
Les objectifs de l’orienté objets
• Favoriser la maintenabilité de l’application
• Améliorer la réutilisabilité des composants
• Permettre l’extension des systèmes existants
• Eviter : fragilité, immobilité, rigidité et … viscosité
Programmer en Visual Basic .NET alphorm.com™©
Page 67
Données et traitements
• Dans une classe :
� Les données : les champs
� Les traitements : les méthodes
• Assurer la cohérence
Améliorer la lisibilité
Programmer en Visual Basic .NET alphorm.com™©
• Améliorer la lisibilité
• Favoriser la réutilisabilité
Page 68
Penser interactions entre objets
• Les objets interagissent
• Ils se connaissent via locales, paramètres ou associations
• Les méthodes sont courtes
Programmer en Visual Basic .NET alphorm.com™©
Page 69
Encapsuler l’implémentation
• Utiliser les visibilités
� De privé à public
• Ne pas montrer les données
• Exposer plutôt des méthodes
Programmer en Visual Basic .NET alphorm.com™©
• Jouer avec les propriétés
Page 70
Utiliser le diagramme de classes
• Le diagramme de classe UML
• Donne une vue globale de votre application
• Permet de concevoir sans les détails
Programmer en Visual Basic .NET alphorm.com™©
Page 71
Ce qu’on a couvert
• Les objectifs de l’orienté objets
• Mettre au même endroit données et traitements
• Penser interactions entre objets
• Encapsuler l’implémentation
• Utiliser le diagramme de classes
Programmer en Visual Basic .NET alphorm.com™©
• Utiliser le diagramme de classes
Page 72
Méthodes et constructeurs
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
Méthodes et constructeurs
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 73
Plan• Ecrire et utiliser une méthode
• Ecrire une propriété
• Ecrire un constructeur
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 74
Ecrire et utiliser une méthode
• Une méthode est soit Sub, soit Function
• Possède ou non des paramètres
• A une visibilité
• Correspond à un traitement réalisé par un objet
Programmer en Visual Basic .NET alphorm.com™©
Page 75
Ecrire une propriété
• Une propriété est une méthode dédiée à l’accès à un champ
• Getter et/ou Setter
• A une visibilité
Programmer en Visual Basic .NET alphorm.com™©
Page 76
Ecrire un constructeur
• Une méthode d’initialisation
• Existe par défaut si personne n’en a créé
• Peut avoir des paramètres
• A une visibilité
Programmer en Visual Basic .NET alphorm.com™©
Page 77
Ce qu’on a couvert
• Ecrire et utiliser une méthode
• Ecrire une propriété
• Ecrire un constructeur
Programmer en Visual Basic .NET alphorm.com™©
Page 78
La généralisation
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
La généralisation
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 79
Plan• Définition de la généralisation
• Conséquence d’héritage
• La redéfinition des méthodes
• Le polymorphisme
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 80
Définition de la généralisation
• Une relations statique entre classes
• La classe mère : super-classe, classe de base
• La classe fille : sous-classe, classe dérivée
• Permet de définir une nouvelle classe qui fournit les mêmes services qu’une classe existante, en l’enrichissant si besoin
Programmer en Visual Basic .NET alphorm.com™©
qu’une classe existante, en l’enrichissant si besoin
Page 81
Conséquence de l’héritage
• Le type « fils » est considéré comme le « père »
• Le fils hérite de tout ce que contient le père
• L’interface du père est présente sur le fils
Programmer en Visual Basic .NET alphorm.com™©
Page 82
La redéfinition des méthodes
• Une méthode de la classe mère est :
� Normalement héritée
� Peut être ré-écrite si besoin
� Il faut le prévoir dans la classe mère
� Et le spécifier dans la classe fille
Programmer en Visual Basic .NET alphorm.com™©
� Et le spécifier dans la classe fille
Page 83
Le polymorphisme
• Le mécanisme permet de déclencher une méthode :
� Qui doit exister sur la classe mère
� Qui est redéfinie sur la classe fille
� Sans connaître la classe fille
• Essentiel dans l’extension des systèmes
Programmer en Visual Basic .NET alphorm.com™©
• Essentiel dans l’extension des systèmes
Page 84
Ce qu’on a couvert
• Définition de la généralisation
• Conséquence d’héritage
• La redéfinition des méthodes
• Le polymorphisme
Programmer en Visual Basic .NET alphorm.com™©
Page 85
Les interfaces
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
Les interfaces
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 86
Plan• Définition des interfaces
• Remarque sur les classes abstraites
• Implémenter une interface
• Le polymorphisme avec les interfaces
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 87
Définition d’une interface
• Une interface :
� Déclare des méthodes, sans corps
� Ne peut pas être instanciée
� Ne possède pas de champs
• Elle sert à :
Programmer en Visual Basic .NET alphorm.com™©
• Elle sert à :
� Définir un contrat
� Définir un type
Page 88
Remarque sur les classes abstraites
• Une classe abstraite est une classe qui ne peut pas être instanciée
• Une classe abstraite :
� Contient de l’implémentation
Programmer en Visual Basic .NET alphorm.com™©
� Possède des constructeurs
Page 89
Implémenter une interface
• Une classe peut implémenter une interface :
� Elle doit redéfinir chaque méthode
• Une classe peut implémenter plusieurs interfaces
• Une interface peut hériter d’une ou plusieurs autres
Programmer en Visual Basic .NET alphorm.com™©
Page 90
Le polymorphisme avec les interfaces
• Il faut redéfinir les méthodes prévues par l’interface
• On peut référencer un objet via son type interface
• Le polymorphisme fonctionne avec les interfaces
Programmer en Visual Basic .NET alphorm.com™©
Page 91
Ce qu’on a couvert
• Définition des interfaces
• Remarque sur les classes abstraites
• Implémenter une interface
• Le polymorphisme avec les interfaces
Programmer en Visual Basic .NET alphorm.com™©
Page 92
Object
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
Object
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 93
Plan• La classe Object
• Les méthodes de Object
• Le polymorphisme avec Object
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 94
La classe Object
• Classe mère de toutes les classes
• On en hérite directement ou indirectement
• Possède quelques méthodes d’intérêt général
• Permet :
Programmer en Visual Basic .NET alphorm.com™©
� Un comportement commun minimum
� Des manipulations standards
Page 95
Les méthodes de Objet
• Redéfinissable ou pas
• Protected : Finalize, MemberwiseClone
• Et publiques :
Programmer en Visual Basic .NET alphorm.com™©
Page 96
Le polymorphisme avec Object
• Manipuler n’importe quel objets VB.NET en tant que Object
• Un code quasi universel, très stable
• Une grande réutilisabilité
• Une occasion pour la « reflection »
Programmer en Visual Basic .NET alphorm.com™©
Page 97
Ce qu’on a couvert
• La classe Object
• Les méthodes de Object
• Le polymorphisme avec Object
Programmer en Visual Basic .NET alphorm.com™©
Page 98
Le type runtime
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
Le type runtime
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 99
Plan• La méthode GetType()
• Les opérateurs Is et IsNot
• L’opérateur TypeOf
• La fonction TryCast
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 100
La méthode GetType
• Une méthode de Object
Programmer en Visual Basic .NET alphorm.com™©
Page 101
Les opérateurs Is et IsNot
• Utilisable avec GetType et TypeOf
Programmer en Visual Basic .NET alphorm.com™©
Page 102
L’opérateur TypeOf
• Détection du type d’un objet référencé
Programmer en Visual Basic .NET alphorm.com™©
Page 103
La fonction TryCast
• Essayer de convertir dans un type donné
• En cas d’échec, la référence vaut Nothing
Programmer en Visual Basic .NET alphorm.com™©
Page 104
Ce qu’on a couvert
• La méthode GetType()
• Les opérateurs Is et IsNot
• L’opérateur TypeOf
• La fonction TryCast
Programmer en Visual Basic .NET alphorm.com™©
Page 105
Les membres partagés
Langage orienté objets
Programmer en Visual Basic .NET alphorm.com™©
Les membres partagés
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 106
Plan• Les champs Shared
• Les méthodes Shared
• Un modèle classique : le Singleton
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 107
Les champs Shared
• Mot-clé Shared
• Une valeur commune à tous les objets de la classe
• Peut être de n’importe quelle visibilité
Programmer en Visual Basic .NET alphorm.com™©
Page 108
Les méthodes Shared
• Mot-clé Shared
• Méthode commune à tous les objets de la classe
• Méthode appelée sur la classe
Programmer en Visual Basic .NET alphorm.com™©
Page 109
Un modèle classique : le Singleton
• Un accès global
• Une création à la demande
• Une garantie de l’unicité de l’instance
Programmer en Visual Basic .NET alphorm.com™©
Page 110
Ce qu’on a couvert
• Les champs Shared
• Les méthodes Shared
• Un modèle classique : le Singleton
Programmer en Visual Basic .NET alphorm.com™©
Page 111
Les délégués
Délégués et Events
Programmer en Visual Basic .NET alphorm.com™©
Les délégués
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 112
Plan• Appeler une fonction sans la connaître
• Déclaration d’un délégué
• Appel de la méthode
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 113
Appeler une fonction sans la connaître
• Une partie de l’application doit déclencher une méthode
• Cette méthode est située dans une autre partie
• Que la première ne doit pas connaître
• Eviter les dépendances cycliques
Programmer en Visual Basic .NET alphorm.com™©
Page 114
Déclaration d’un délégué
Delegate Sub unefonction(ByVal s As String)
Sub Affiche(ByVal s As String)
Console.WriteLine("Voici le message " & s)
Programmer en Visual Basic .NET alphorm.com™©
End Sub
Page 115
Appel de la méthode
Dim d As unefonction
‘
d = AddressOf Affiche
‘on
Programmer en Visual Basic .NET alphorm.com™©
d.Invoke("coucou")
‘et n fait une invocation dynamique
Page 116
Ce qu’on a couvert
• Appeler une fonction sans la connaître
• Déclaration d’un délégué
• Appel de la méthode
Programmer en Visual Basic .NET alphorm.com™©
Page 117
Les « Events »
Délégués et Events
Programmer en Visual Basic .NET alphorm.com™©
Les « Events »
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 118
Plan• Emetteur de l’événement
• Récepteur de l’événement
• Emission/Réception
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 119
Emetteur de l’événement
Public Class Emetteur
Public Event Click(ByVal msg As String)
Public Sub Declenche()
Programmer en Visual Basic .NET alphorm.com™©
RaiseEvent Click("Bouton cliqué")
End Sub
End Class
Page 120
Récepteur de l’événement
Public Class RecepteurPrivate WithEvents c As Emetteur
Public Sub New(ByVal cc As Emetteur)c = cc
Programmer en Visual Basic .NET alphorm.com™©
c = ccEnd Sub
Public Sub ClickGere(ByVal s As String) Handles c.ClickConsole.WriteLine("Je gère le clic sur le bouton " & s)
End Sub End Class
Page 121
Emission/Réception
Dim c As Emetteur = New Emetteur
Dim gc As Recepteur = New Recepteur(c)
Programmer en Visual Basic .NET alphorm.com™©
Dim gc As Recepteur = New Recepteur(c)
c.Declenche()
Page 122
Ce qu’on a couvert
• Emetteur de l’événement
• Récepteur de l’événement
• Emission/Réception
Programmer en Visual Basic .NET alphorm.com™©
Page 123
Les opérateurs arithmétiques
Les opérateurs
Programmer en Visual Basic .NET alphorm.com™©
Les opérateurs arithmétiques
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 124
Plan• Opérateurs arithmétiques
• Opérateurs de comparaisons
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 125
Opérateurs arithmétiques
Programmer en Visual Basic .NET alphorm.com™©
Page 126
Opérateurs de comparaisons
Programmer en Visual Basic .NET alphorm.com™©
Page 127
Ce qu’on a couvert
• Opérateurs arithmétiques
• Opérateurs de comparaisons
Programmer en Visual Basic .NET alphorm.com™©
Page 128
Indexeurs et conversions
Les opérateurs
Programmer en Visual Basic .NET alphorm.com™©
Indexeurs et conversions
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 129
Plan• Un indexeur
• Les conversions
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 130
Un indexeur
Programmer en Visual Basic .NET alphorm.com™©
Page 131
Les conversions
Programmer en Visual Basic .NET alphorm.com™©
Page 132
Ce qu’on a couvert
• Un indexeur
• Les conversions
Programmer en Visual Basic .NET alphorm.com™©
Page 133
Collections séquentielles
Les collections
Programmer en Visual Basic .NET alphorm.com™©
Collections séquentielles
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 134
Plan• Les classes génériques
• Fonctionnement de List(Of T)
• List(Of T) et prédicats
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 135
Les classes génériques
• Une famille de classe
• Le code est généré au moment de l’utilisation
• La génération est paramétrée
Programmer en Visual Basic .NET alphorm.com™©
Page 136
Fonctionnement de List(Of T)
Dim dinosaurs As New List(Of String)
dinosaurs.Add("Tyrannosaurus") dinosaurs.Add("Amargasaurus") dinosaurs.Add("Mamenchisaurus") dinosaurs.Add("Deinonychus")dinosaurs.Add("Compsognathus")
Programmer en Visual Basic .NET alphorm.com™©
dinosaurs.Add("Compsognathus")
For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur)
…
Next
Page 137
List(Of T) et prédicats
• List. FindAll(Pred)
• Accept une méthode en paramètre
� Par délégué
• Une méthode anonyme
Programmer en Visual Basic .NET alphorm.com™©
Page 138
Ce qu’on a couvert
• Les classes génériques
• Fonctionnement de List(Of T)
• List(Of T) et prédicats
Programmer en Visual Basic .NET alphorm.com™©
Page 139
Collections associatives
Les collections
Programmer en Visual Basic .NET alphorm.com™©
Collections associatives
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 140
Plan• System.Collections : Hashtable
• System.Collections.Generic : Dictionary (Of K, V)
• Collections triées : SortedDictionary (Of K, V)
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 141
System.Collection
• Collections non génériques
• Une collection contient des Object
• Hashtable représente le tableau associatif
Programmer en Visual Basic .NET alphorm.com™©
Page 142
System.Collections.Generic
• Dictionary (Of K, V) est l’archétype des associatifs
• Implémenté en hashtable
• Non thread-safe
Programmer en Visual Basic .NET alphorm.com™©
Page 143
Collection triée : SortedDictionary
• SortedDictionary ( Of K, V)
• Implémenté comme un arbre binaire équilibré
• Les clés sont comparées par un objet IComparer ( Of K)
Programmer en Visual Basic .NET alphorm.com™©
Page 144
Ce qu’on a couvert
• System.Collections : Hashtable
• System.Collections.Generic : Dictionary (Of K, V)
• Collections triées : SortedDictionary (Of K, V)
Programmer en Visual Basic .NET alphorm.com™©
Page 145
Créer des threads
Les threads
Programmer en Visual Basic .NET alphorm.com™©
Créer des threads
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 146
Plan• System.Threading.Thread
• Thread.Join
• Start/Abort/Sleep
• Une autre classe : BackgroundWorker
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 147
System.Threading.Thread
Programmer en Visual Basic .NET alphorm.com™©
Page 148
Thread.Join()
Programmer en Visual Basic .NET alphorm.com™©
Page 149
Start, Sleep, Abort
• Start : démarre
• Abort : tente d’arrêter
• Sleep : bloque
Programmer en Visual Basic .NET alphorm.com™©
Page 150
Autre classe
• System.ComponentModel.BackgroundWorker
� Démarre une tâche
� On écoute des événements : progression, fin, …
Programmer en Visual Basic .NET alphorm.com™©
Page 151
Ce qu’on a couvert
• System.Threading.Thread
• Thread.Join
• Start/Abort/Sleep
• Une autre classe : BackgroundWorker
Programmer en Visual Basic .NET alphorm.com™©
Page 152
Synchroniser des threads
Les threads
Programmer en Visual Basic .NET alphorm.com™©
Synchroniser des threads
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 153
Plan• Le problème des accès simultanés
• La synchronisation par attente d’un événement
• La synchronisation par section critique
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 154
Le problème des accès simultanés
• Les threads partagent la mémoire
• Lorsque 2 threads accèdent à la même donnée
• Il veulent la modifier/l’exploiter
Programmer en Visual Basic .NET alphorm.com™©
Page 155
Synchronisation par événement
• Il faut mettre le thread en attente sur un signalement
• Un autre thread va signaler
• Possibilités réelles de blocage
Programmer en Visual Basic .NET alphorm.com™©
Page 156
La synchronisation par section critique
• SyncLock
• Doit s’utiliser sur un type référence uniquement
• Empêche un Thread de rentrer si un exécute déjà le code
Programmer en Visual Basic .NET alphorm.com™©
Page 157
Ce qu’on a couvert
• Le problème des accès simultanés
• La synchronisation par attente d’un événement
• La synchronisation par section critique
Programmer en Visual Basic .NET alphorm.com™©
Page 158
Créer un formulaire
Winforms
Programmer en Visual Basic .NET alphorm.com™©
Créer un formulaire
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 159
Plan• Créer un formulaire
• L’objet formulaire
• Les contrôles dans le formulaire
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 160
Créer un formulaire
• Utiliser l’éditeur graphique
• Les formulaires Windows sont décrits en VB.NET
Programmer en Visual Basic .NET alphorm.com™©
Page 161
L’objet formulaire
• Une classe dérivant de Form
• Des méthodes
• Des événements
Programmer en Visual Basic .NET alphorm.com™©
Page 162
Les contrôles de formulaire
• Nombreux, disposés dans la boîte à outils
• Et des composants non graphiques
Programmer en Visual Basic .NET alphorm.com™©
Page 163
Ce qu’on a couvert
• Créer un formulaire
• L’objet formulaire
• Les contrôles dans le formulaire
Programmer en Visual Basic .NET alphorm.com™©
Page 164
Traiter les événements
Winforms
Programmer en Visual Basic .NET alphorm.com™©
Traiter les événements
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 165
Plan• Traiter le Load du formulaire
• Gérer un événement sur un contrôle
• Réagir à la sélection sur une liste
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 166
Traiter le Load du formulaire
• Après le constructeur du formulaire
• Handles Load
Programmer en Visual Basic .NET alphorm.com™©
Page 167
Gérer un événement sur un contrôle
• Associer le contrôle au gestionnaire
� Par la feuille de propriétés
� En double-cliquant
Programmer en Visual Basic .NET alphorm.com™©
Page 168
Réagir à la sélection sur une liste
• Associer l’événement
• Détecter l’item sélectionner
• Réagir
Programmer en Visual Basic .NET alphorm.com™©
Page 169
Ce qu’on a couvert
• Traiter le Load du formulaire
• Gérer un événement sur un contrôle
• Réagir à la sélection sur une liste
Programmer en Visual Basic .NET alphorm.com™©
Page 170
Utiliser le DataBinding
Winforms
Programmer en Visual Basic .NET alphorm.com™©
Utiliser le DataBinding
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 171
Plan• Pour lier un élément graphique à une donnée
• Ouvrir un second formulaire
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 172
Le databinding
• Une source de données
• Un élément graphique
• Le lien entre les deux
Programmer en Visual Basic .NET alphorm.com™©
Page 173
Ouvrir un second formulaire
• Gérer un événement
• Créer un objet formulaire
• Le rendre visible
Programmer en Visual Basic .NET alphorm.com™©
Page 174
Ce qu’on a couvert
• Pour lier un élément graphique à une donnée
• Ouvrir un second formulaire
Programmer en Visual Basic .NET alphorm.com™©
Page 175
Le système de fichiers
Les fichiers
Programmer en Visual Basic .NET alphorm.com™©
Le système de fichiers
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 176
Plan
• FileInfo/DirectoryInfo ou File/Directory
• Parcours d’un répertoire
• Examen d’un fichier
• FileSystemWatcher
Programmer en Visual Basic .NET alphorm.com™©
• FileSystemWatcher
• Résumé
Page 177
FileInfo/DirectoryInfo ou File/Directory
Programmer en Visual Basic .NET alphorm.com™©
Page 178
Parcours d’un répertoire
• Avec DirectoryInfo (ou bien Directory), récupération d’informations
� GetFiles, GetDirectories
� Create, CreateSubDirectory
� …
Programmer en Visual Basic .NET alphorm.com™©
Page 179
Examen d’un fichier
• FileInfo (ou bien File)
Programmer en Visual Basic .NET alphorm.com™©
Page 180
FileSystemWatcher
• Gère des événements sur modification d’un répertoire
Programmer en Visual Basic .NET alphorm.com™©
Page 181
Ce qu’on a couvert
• FileInfo/DirectoryInfo ou File/Directory
• Parcours d’un répertoire
• Examen d’un fichier
• FileSystemWatcher
Programmer en Visual Basic .NET alphorm.com™©
• FileSystemWatcher
Page 182
Ouvrir et lire un fichier
Les fichiers
Programmer en Visual Basic .NET alphorm.com™©
Ouvrir et lire un fichier
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 183
Plan
• Les flux
• Ouvrir un fichier binaire/texte
• Lire un fichier binaire/texte
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 184
Les flux
Programmer en Visual Basic .NET alphorm.com™©
Page 185
Ouvrir un fichier binaire/texte
• Créer explicitement chaque objet
Programmer en Visual Basic .NET alphorm.com™©
• Passer par des méthodes de fabrication
Page 186
Lire un fichier binaire/texte
• Le fichier texte : encodage ASCII
Programmer en Visual Basic .NET alphorm.com™©
• Le fichier binaire
Page 187
Ce qu’on a couvert
• Les flux
• Ouvrir un fichier binaire/texte
• Lire un fichier binaire/texte
Programmer en Visual Basic .NET alphorm.com™©
Page 188
La sérialisation
Les fichiers
Programmer en Visual Basic .NET alphorm.com™©
La sérialisation
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 189
Plan
• Le flux de sérialisation et les contraintes
• Le flux binaire
• Le flux texte XML
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 190
Le flux de sérialisation
• Arrange des objets dans un flux
• Les classes correspondantes doivent être « Serializable »
• Les champs sont automatiquement sérialisés
• Il est possible d’empêcher la sérialisation d’un champ
Programmer en Visual Basic .NET alphorm.com™©
Page 191
Le flux binaire
• System.Runtime.Serialisation.Formatters.Binary.BinaryFormatter
Dim sw As FileStreamsw = File.Create("documents.dat")
Dim xs As BinaryFormatter
Programmer en Visual Basic .NET alphorm.com™©
Dim xs As BinaryFormatterxs = New BinaryFormatter()
xs.Serialize(sw, obj) ‘ Obj est la référence sur l’objet à sérialiser
sw.Close()
Page 192
Le flux texte XML
• System.Xml.Serialization.XmlSerializer
• System.Runtime.Serialisation.Formatters.Soap.SoapFormatter
Dim sw As FileStreamsw = File.Create("documents.dat")
Programmer en Visual Basic .NET alphorm.com™©
Dim xs As SoapFormatterxs = New SoapFormatter()
xs.Serialize(sw, obj) ‘ Obj est la référence sur l’objet à sérialiser
sw.Close()
Page 193
Ce qu’on a couvert
• Le flux de sérialisation et les contraintes
• Le flux binaires
• Le flux texte XML
Programmer en Visual Basic .NET alphorm.com™©
Page 194
Gérer les exceptions
Les exceptions
Programmer en Visual Basic .NET alphorm.com™©
Gérer les exceptions
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 195
Plan
• Intérêt des exceptions
• Mots-clés Try/Catch/Finally pour gérer une exception
• Mot-clé Throw pour lever une exception
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 196
Intérêt des exceptions
• Gérer les erreurs exceptionnelles
• Remonte la pile des appels
• Sépare le code nominal du code de gestion d’erreurs
• Fonctionne même sans retour de fonction
Programmer en Visual Basic .NET alphorm.com™©
• Le framework communique les erreurs via des exceptions
Page 197
Mots-clés Try/Catch/Finally
• Encadre le code qui peut lever une exception
• Finally optionnel
• Plusieurs Catch possibles
Programmer en Visual Basic .NET alphorm.com™©
Page 198
Mot-clé Throw pour lever une exception
• Signale une erreur
• Plutôt code bas-niveau
Programmer en Visual Basic .NET alphorm.com™©
Page 199
Ce qu’on a couvert
• Intérêt des exceptions
• Mots-clés Try/Catch/Finally pour gérer une exception
• Mot-clé Throw pour lever une exception
Programmer en Visual Basic .NET alphorm.com™©
Page 200
Créer ses propres exceptions
Les exceptions
Programmer en Visual Basic .NET alphorm.com™©
Créer ses propres exceptions
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 201
Plan
• Une classe d’exception hérite de Exception
• Les méthodes de Exception
• Réinterpréter les exceptions
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 202
Une classe d’exception
• Simplement hériter de Exception ou ApplicationException
Programmer en Visual Basic .NET alphorm.com™©
Page 203
Les méthodes de Exception
• Message
• ToString
Programmer en Visual Basic .NET alphorm.com™©
Page 204
Réinterpréter les exceptions
• Attraper une exception et relancer un autre objet, plus facilement interprétable par l’utilisateur
Programmer en Visual Basic .NET alphorm.com™©
Page 205
Ce qu’on a couvert
• Une classe d’exception hérite de Exception
• Les méthodes de Exception
• Réinterpréter les exceptions
Programmer en Visual Basic .NET alphorm.com™©
Page 206
Mode connecté
Les bases de données
Programmer en Visual Basic .NET alphorm.com™©
Mode connecté
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 207
Plan
• Les classes essentielles
• Récupération de la connexion
• DbCommand
• DbDataReader
Programmer en Visual Basic .NET alphorm.com™©
• DbDataReader
• Résumé
Page 208
Les classes essentielles
Classes Description
SqlCommand, OleDbCommand, ODBCCommand
Encapsulation de commandes SQL ou de procédures stockées
SqlCommandBuilder(OleDb/ODBC)
Générateur de commandes SQL à partir du SELECT
SqlConnection (OleDb/ODBC) Connexion
Programmer en Visual Basic .NET alphorm.com™©
SqlConnection (OleDb/ODBC) Connexion
SqlDataAdapter (OleDb/ODBC) Contient des commandes, gère la mise à jour du dataset ET de la database
SqlDataReader (OleDb/ODBC) Curseur sur une base connectée
SqlParameter (OleDb/ODBC) Paramètres à fournir au SQL
SqlTransaction (OleDb/ODBC) Transaction de BD
Page 209
Récupération de la connexion
• La forme de la chaîne de connexion dépend du fournisseur
Programmer en Visual Basic .NET alphorm.com™©
Page 210
DbCommand
Programmer en Visual Basic .NET alphorm.com™©
Page 211
DbDataReader
• Table de résultat et curseur
Programmer en Visual Basic .NET alphorm.com™©
Page 212
Ce qu’on a couvert
• Les classes essentielles
• Récupération de la connexion
• DbCommand
• DbDataReader
Programmer en Visual Basic .NET alphorm.com™©
• DbDataReader
Page 213
Mode déconnecté
Les bases de données
Programmer en Visual Basic .NET alphorm.com™©
Mode déconnecté
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 214
Plan
• Les classes essentielles
• DataSet et DbDataAdapter
• Modèle commun
• Paramétrer le fournisseur
Programmer en Visual Basic .NET alphorm.com™©
• Paramétrer le fournisseur
• Résumé
Page 215
Les classes essentielles
Classe Description
DataSet Contient des DataTables
DataTable Contient colonnes et lignes
DataRow Valeur dans la table
Programmer en Visual Basic .NET alphorm.com™©
DataColumn Colonne dans la table
DataRelation Lien entre deux tables
Constraint Règle de colonne
Page 216
Dataset et DBDataAdapter
• DataSet a une existence en mémoire
• Peut être généré sous forme XML
Programmer en Visual Basic .NET alphorm.com™©
Page 217
Modèle commun des fournisseurs
• Eviter de dépendre de Sql- ou OleDb- X
• Donner une chaîne de caractères qui représente le fournisseur
Programmer en Visual Basic .NET alphorm.com™©
Page 218
Paramétrer le fournisseur
• App.config ou Web.config
• Trouver la factory
Programmer en Visual Basic .NET alphorm.com™©
• Utiliser la factory
Page 219
Ce qu’on a couvert
• Les classes essentielles
• DataSet et DbDataAdapter
• Modèle commun
• Paramétrer le fournisseur
Programmer en Visual Basic .NET alphorm.com™©
• Paramétrer le fournisseur
Page 220
Utiliser les attributes
Les méta-données
Programmer en Visual Basic .NET alphorm.com™©
Utiliser les attributes
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 221
Plan
• Placer les attributs
• Paramètres et cibles d’attributs
• Utilisations courantes des attributs
• Quelques attributs
Programmer en Visual Basic .NET alphorm.com™©
• Quelques attributs
• Résumé
Page 222
Placer les attributs
• Avant une classe
• Avant une méthode
Programmer en Visual Basic .NET alphorm.com™©
• Avant des paramètres
Page 223
Paramètres et cibles d’attributs
• Paramètres
Programmer en Visual Basic .NET alphorm.com™©
• Cibles
Page 224
Utilisations courantes
• WebMethod pour les services web
• Décrire l’interopération avec le code natif
• Décrire les propriété COM de classes
• Appelé du code non managé
Programmer en Visual Basic .NET alphorm.com™©
• Décrire un assembly
• Désigner les classes à sérialiser
• Définir les conditions de sécurité
• …
Page 225
Quelques attributs
• Globaux
� AssemblyName, AssemblyVersion
• Obsolete
• Conditional
Programmer en Visual Basic .NET alphorm.com™©
Page 226
Ce qu’on a couvert
• Placer les attributs
• Paramètres et cibles d’attributs
• Utilisations courantes des attributs
• Quelques attributs
Programmer en Visual Basic .NET alphorm.com™©
• Quelques attributs
Page 227
Créer un attribut
Les méta-données
Programmer en Visual Basic .NET alphorm.com™©
Créer un attribut
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 228
Plan
• Créer un nouvel attribut
• Utiliser un attribut
• Découvrir un attribut
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 229
Créer un nouvel attribut
• Créer une classe héritant de Attribute
Programmer en Visual Basic .NET alphorm.com™©
Page 230
Utiliser un attribut
• Si usage unique
• Ou multiple
Programmer en Visual Basic .NET alphorm.com™©
Page 231
Découvrir un attribut
Programmer en Visual Basic .NET alphorm.com™©
Page 232
Ce qu’on a couvert
• Créer un nouvel attribut
• Utiliser un attribut
• Découvrir un attribut
Programmer en Visual Basic .NET alphorm.com™©
Page 233
Créer un projet
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Créer un projet
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 234
Plan• Les projets site Web
• Un projet WebForms
• Un projet MVC
• Un projet Web API
• L’exécution du projet Web
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 235
Les projets Site Web
• Ajouté depuis VS 2005
• Structure de répertoire qui reflète le site
Programmer en Visual Basic .NET alphorm.com™©
Page 236
Un projet Web Forms
• Une structure standard
• Un master fournissant une présentation standardisée
Programmer en Visual Basic .NET alphorm.com™©
Page 237
Un projet MVC
• Améliore les séparations des responsabilités, la testabilité
Programmer en Visual Basic .NET alphorm.com™©
Page 238
Un projet Web API
• Version Microsoft des services RESTful
Programmer en Visual Basic .NET alphorm.com™©
Page 239
L’exécution du projet Web
• IIS Express par défaut pour les applications Web
• ASP.NET Development Server pour les Website Projects
• IIS
Programmer en Visual Basic .NET alphorm.com™©
Page 240
Ce qu’on a couvert• Il y a plusieurs types de projets en rapport avec le Web
• Un projet Web organise les fichiers de façon particulière
• Plusieurs méthodes d’authentification sont disponibles
• Nous avons décrit les projets WebForms, MVC, et Web API
• L’exécution du projet Web peut se faire localement, à des fins de test
Programmer en Visual Basic .NET alphorm.com™©
Page 241
Créer un formulaire
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Créer un formulaire
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 242
Plan• La création du projet application Web ASP.NET
• Utilisation des onglets de l’éditeur VS
• Le formatage du texte, feuille de propriétés
• L’ajout de contrôles dans le formulaire
• L’examen du code HTML correspondant
• Le code de rappel
Programmer en Visual Basic .NET alphorm.com™©
• Le code de rappel
• L’exécution de la page
• Résumé
Page 243
La création du projet
Programmer en Visual Basic .NET alphorm.com™©
Page 244
L’utilisation des onglets de l’éditeur VS
Programmer en Visual Basic .NET alphorm.com™©
Page 245
Le formatage du texte
Programmer en Visual Basic .NET alphorm.com™©
Page 246
L’ajout de contrôles dans le formulaire
Programmer en Visual Basic .NET alphorm.com™©
Page 247
L’examen du code HTML
Programmer en Visual Basic .NET alphorm.com™©
Page 248
Le code de rappel
Programmer en Visual Basic .NET alphorm.com™©
Page 249
L’exécution de la page
Programmer en Visual Basic .NET alphorm.com™©
Page 250
Ce qu’on a couvert• La création du formulaire WebForms se fait dans un projet application Web ASP.NET
• L’éditeur VS permet de créer l’interface Web à la façon d’une application lourde traditionnelle
• L’ajout de contrôles dans le formulaire est très simple et ergonomique
• Le code HTML est visible en direct
• Le code de rappel est codé directement en VB.NET
• L’exécution de la page se fait très simplement, cela favorise le déboggage
Programmer en Visual Basic .NET alphorm.com™©
• L’exécution de la page se fait très simplement, cela favorise le déboggage
Page 251
Utiliser le codebehind
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Utiliser le codebehind
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 252
Plan• Utilisation du projet Web Forms généré par défaut
• Affichage d’un contenu de base de données
• Navigation entre pages
• Validation d’un formulaire
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 253
Utilisation du projet Web Forms
• Dans les fichiers générés :
� Le HTML est dans les fichier aspx
� Le code VB.NET est dans aspx.vb
Programmer en Visual Basic .NET alphorm.com™©
Page 254
Affichage du contenu de la base
• Une ListBox, chargée dans le Load
Programmer en Visual Basic .NET alphorm.com™©
Page 255
Navigation entre pages
• Une page = une classe
• Gestion d’événements à la façon traditionnelle
Programmer en Visual Basic .NET alphorm.com™©
Page 256
Validation d’un formulaire
Programmer en Visual Basic .NET alphorm.com™©
Page 257
Ce qu’on a couvert• Utilisation du projet Web Forms généré par défaut
• Affichage d’un contenu de base de données
• Navigation entre pages
• Validation d’un formulaire
Programmer en Visual Basic .NET alphorm.com™©
Page 258
Global.asax et HttpModule
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Global.asax et HttpModule
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 259
Plan
•L’application
•Les modules HTTP
•Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 260
L’application
• Données de niveau application
• Evénements de niveau application
• Le fichier global.asax
• Accompagne une applciation
Programmer en Visual Basic .NET alphorm.com™©
Page 261
Les modules HTTP
• Web.config
Programmer en Visual Basic .NET alphorm.com™©
• Créer un module HTTP, lui faire hériter de IHttpModule
• Réaliser Init et Dispose
• Code commun à plusieurs applications
Page 262
Ce qu’on a couvert• L’application
• Les modules HTTP
Programmer en Visual Basic .NET alphorm.com™©
Page 263
Webservices
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Webservices
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 264
Plan
•Créer un service web
•Consommer un service web
•Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 265
Créer un service web
• Page .asmx
• Attribut WebService
• Attribut WebMethod
Programmer en Visual Basic .NET alphorm.com™©
Page 266
Consommer un service web
• Ajout de références de services
• La génération d’un proxy
Programmer en Visual Basic .NET alphorm.com™©
Page 267
Ce qu’on a couvert• Créer un service web
• Consommer un service web
Programmer en Visual Basic .NET alphorm.com™©
Page 268
Gérer les erreurs
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Gérer les erreurs
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 269
Plan
•La page jaune d’erreur d’exception
•La page jaune d’erreur runtime
•La page d’erreur personnalisée
Programmer en Visual Basic .NET alphorm.com™©
•Résumé
Page 270
La page jaune d’erreur d’exception
• Une page avec tous les détails
• Affichée au développeur
Programmer en Visual Basic .NET alphorm.com™©
Page 271
La page jaune d’erreur runtime
• Affichée lors d’une connexion à distance
Programmer en Visual Basic .NET alphorm.com™©
Page 272
Une page d’erreur personnalisée
• Une page qui est adaptée à l’application
• Utilisée conjointement avec « RemoteOnly »
Programmer en Visual Basic .NET alphorm.com™©
• Il est possible d’avoir plusieurs pages d’erreur, par code
Page 273
Ce qu’on a couvert• La page jaune d’erreur d’exception
• La page jaune d’erreur runtime
• La page d’erreur personnalisée
Programmer en Visual Basic .NET alphorm.com™©
Page 274
Les contrôles serveur
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Les contrôles serveur
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 275
Plan
•Créer un contrôle utilisateur
•Modifier le rendu du contrôle
•Emettre un événement
Programmer en Visual Basic .NET alphorm.com™©
•Le rôle de viewstate
•Résumé
Page 276
Créer un contrôle utilisateur
• Une classe héritant de WebControl
• Propriété Text et méthode RenderControl
Programmer en Visual Basic .NET alphorm.com™©
Page 277
Modifier le rendu contrôle
• Réécrire RenderContent
• Générer du HTML
• Eventuellement utiliser HtmlTextWriter
Programmer en Visual Basic .NET alphorm.com™©
Page 278
Emettre un événement
• Un contrôle peut proposer un événement
• Cet événement peut signaler une modification de la propriété
Programmer en Visual Basic .NET alphorm.com™©
Page 279
Le rôle de ViewState
• L’état du contrôle est perdu entre 2 post
• ViewState est un dictionnaire qui stocke l’état du contrôle
Programmer en Visual Basic .NET alphorm.com™©
Page 280
Ce qu’on a couvert• Créer un contrôle utilisateur
• Modifier le rendu du contrôle
• Emettre un événement
• Le rôle de viewstate
Programmer en Visual Basic .NET alphorm.com™©
Page 281
Les contrôles de validation
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Les contrôles de validation
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 282
Plan
•Les différents contrôles de validation
•Utilisation des contrôles de validation
•Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 283
Les différents types de contrôles
• 6 contrôles de validation
• Propriétés ErrorMessage et ControlToValidate
• Peuvent contrôler des contrôles classiques …
Programmer en Visual Basic .NET alphorm.com™©
Page 284
Utilisation des contrôles
• Créer un contrôle classique
• Préparer la validation du formulaire
• Placer les contrôles de validation
Programmer en Visual Basic .NET alphorm.com™©
Page 285
Ce qu’on a couvert• Les différents contrôles de validation
• Utilisation des contrôles de validation
Programmer en Visual Basic .NET alphorm.com™©
Page 286
Les scriptlets
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Les scriptlets
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 287
Plan
• Les blocs de code incorporé
• Les affichages d’expressions
• Les directives
• Les liaisons de données
Programmer en Visual Basic .NET alphorm.com™©
• Les liaisons de données
• Les générateurs d’expressions
• Les commentaires
• Résumé
Page 288
Les blocs de code incorporé
• <% … %>
• Placer du code dans le HTLM
• Pour compatibilité avec ASP
Programmer en Visual Basic .NET alphorm.com™©
Page 289
Les affichages d’expressions
• <%= … %>
• Equivalent d’un seul Response.Write
Programmer en Visual Basic .NET alphorm.com™©
Page 290
Les directives
• <% @ … %>
• @Page : spécifie les attributs de page Web Forms
• @Control : spécifie les attributs de contrôle utilisateur
• @Import : importe un espace de noms
Programmer en Visual Basic .NET alphorm.com™©
• @Register : enregistre un préfixe de contrôle utilisateur
• @Master : page maître
Page 291
Les liaisons de données
• <% # …%>
• Lie une propriété de contrôle de serveur et une source de données
Programmer en Visual Basic .NET alphorm.com™©
Page 292
Les générateurs d’expressions
• Définit la valeur de propriété comme issue de la configuration
Programmer en Visual Basic .NET alphorm.com™©
Page 293
Les commentaires
• Les commentaire côté serveur
Programmer en Visual Basic .NET alphorm.com™©
Page 294
Ce qu’on a couvert
• Les blocs de code incorporé
• Les affichages d’expressions
• Les directives
• Les liaisons de données
Programmer en Visual Basic .NET alphorm.com™©
• Les liaisons de données
• Les générateurs d’expressions
• Les commentaires
Page 295
Web.config
ASP.NET
Programmer en Visual Basic .NET alphorm.com™©
Web.config
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 296
Plan
•Les fichiers de config
•Sections
•Résumé
Programmer en Visual Basic .NET alphorm.com™©
Page 297
Les fichiers de config
• Machine.config
• Web.config global
• Web.config de l’application
Programmer en Visual Basic .NET alphorm.com™©
Page 298
Les sections
• Compilation :
• Custom errors
• Authentification :
Programmer en Visual Basic .NET alphorm.com™©
• Chaînes de connexion :
Page 299
Ce qu’on a couvert• Les fichiers de config
• Sections
Programmer en Visual Basic .NET alphorm.com™©
Page 300
Le formulaire WPF
WPF
Programmer en Visual Basic .NET alphorm.com™©
Le formulaire WPF
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 301
Plan
• L’éditeur graphique
• Le formulaire en XML
• Les contrôles WPF
• Résumé
Programmer en Visual Basic .NET alphorm.com™©
• Résumé
Page 302
L’éditeur graphique
• Un outil de création semblable à Windows Form
Programmer en Visual Basic .NET alphorm.com™©
Page 303
Le formulaire en XML
• Le formulaire est exporté en XML
• Dialecte XAML
Programmer en Visual Basic .NET alphorm.com™©
Page 304
Les contrôles WPF
• Blend
Programmer en Visual Basic .NET alphorm.com™©
Page 305
Ce qu’on a couvert
• L’éditeur graphique
• Le formulaire en XML
• Les contrôles WPF
Programmer en Visual Basic .NET alphorm.com™©
Page 306
Utiliser le databinding
WPF
Programmer en Visual Basic .NET alphorm.com™©
Utiliser le databinding
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 307
Plan
• Le databinding
• Binding entre éléments graphiques
• Données vers Contrôle
• Binding birectionnel
Programmer en Visual Basic .NET alphorm.com™©
• Binding birectionnel
• Résumé
Page 308
Le databinding
• Un moyen de lier les contrôles aux données
• Ne pas avoir à gérer les mises à jour de l’un ou de l’autre
• Fonctionne comme un modèle observateur
• Peut fonctionner entre contrôles du formulaire
Programmer en Visual Basic .NET alphorm.com™©
Page 309
Binding entre éléments graphiques
• Binding entre deux propriétés Text
Programmer en Visual Basic .NET alphorm.com™©
Page 310
Données vers contrôle
Programmer en Visual Basic .NET alphorm.com™©
Page 311
Mise à jour
Programmer en Visual Basic .NET alphorm.com™©
Page 312
Binding bi-directionnel
• Les modes possibles : OneWay, TwoWay, OneTime, OneWayToSource
• Avec TwoWay, modifiant le TextBox, je modifie la donnée
Programmer en Visual Basic .NET alphorm.com™©
Page 313
Ce qu’on a couvert
• Le databinding
• Binding entre éléments graphiques
• Données vers Contrôle
• Binding birectionnel
Programmer en Visual Basic .NET alphorm.com™©
• Binding birectionnel
Page 314
Conclusion
VB.NET
Programmer en Visual Basic .NET alphorm.com™©
Conclusion
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Contact : [email protected]
Page 315
Plan
• Nous avons présenté VB.NET
• Langage universel
• L’avenir
Programmer en Visual Basic .NET alphorm.com™©
Page 316
Nous avons présenté VB.NET
• Un langage héritier de VB et des langages objets
• Intégré à la plateforme dot-net
• Doit être utilisé comme un langage orienté objet
• Manipule les mêmes concepts que son voisin C#
Programmer en Visual Basic .NET alphorm.com™©
• Manipule les mêmes concepts que son voisin C#
Page 317
VB.NET est un langage universel
• VB.Net s’appuie sur la puissance du framework .Net
• Il peut être utilisé pour tout type d’application
• Nous avons montré les applications console, fenêtres, asp.net et webservices
Programmer en Visual Basic .NET alphorm.com™©
Page 318
L’avenir …
• L’avenir de VB.Net est lié à celui de la plateforme
• Une utilisation de plus en plus large
• Tant sur mobiles que serveurs
Programmer en Visual Basic .NET alphorm.com™©