Introduction à VB 2005 – VS 2005 … Mais encore

Transcription

Introduction à VB 2005 – VS 2005 … Mais encore
Introduction à VB
2005 – VS 2005 …
Mais encore ?!
1) Introduction à VB 2005 ..................................................................................................... 3
2) Les applications que vous pouvez construire .................................................................... 5
2.1) Applications Consoles ................................................................................................ 5
2.2) Applications Windows Smart Client .......................................................................... 6
2.3) Librairies de classes.................................................................................................... 6
2.4) Applications Web ....................................................................................................... 7
2.5) Web Services .............................................................................................................. 7
2.6) Windows Services ...................................................................................................... 8
2.7) Application Smart Device .......................................................................................... 8
2.8) Projets de setup et de déploiement ............................................................................. 8
3) VS 2005 : Un environnement de développement unifié.................................................... 9
4) Mais qu’est-ce que le .NET Framework ?....................................................................... 10
5) Quelques nouveautés du langage VB 2005 ..................................................................... 13
5.1) Générics .................................................................................................................... 14
5.2) Classes partielles....................................................................................................... 21
5.3) Types Nullables ........................................................................................................ 22
5.4) My............................................................................................................................. 22
5.5) Surcharge des Opérateurs ......................................................................................... 23
5.6) Mots clés IsNot & Using .......................................................................................... 24
5.7) Types Integer non signés .......................................................................................... 24
5.8) L’état Continue ......................................................................................................... 24
6) Nouveautés de VS 2005 .................................................................................................. 25
6.1) Nouveautés dans l’IDE............................................................................................. 26
6.2) Nouveautés dans l’édition de votre code.................................................................. 30
6.3) Nouveautés dans le debugger de Visual Studio 2005............................................... 36
1) Introduction à VB 2005
Le langage de programmation Visual Basic est historiquement dans les gênes de la société
Microsoft. Avec plus de 50.000 développeurs en France l’utilisant au quotidien, Visual Basic
reste un langage de programmation incontournable malgré les quelques erreurs de
communications de Microsoft à son sujet.
L’évolution des MFC (Microsoft Fundation Classes) et de VB 6.0 vers la première version du
.NET Framework sous entendu le CLR (Common Language Runtime) et VB.NET 1.0 à
partir de juin 2000 ouvrit de nouvelles perspectives pour tous types de développement.
La sortie en Mars 2003 de la version 1.1 du .NET Framework apporte de nouvelles
fonctionnalités au travers du nombre de classes ajoutées à la version 1.0 du .NET
Framework. Mais cette seconde version ne se limite pas à ceci, elle nous pousse à conclure
sur une pérennité de nos développements au travers de l’investissement et de la continuité
effectués par Microsoft sur cette technologie.
La sortie du .NET Framework 2.0 et du langage VB 2005 (notez la disparition de la
terminologie .NET) en novembre 2005 clôture toute polémique et conforte tout choix de
migration et d’évolution des équipes de développements de technologies plus anciennes (VB
6.0, VB.NET 1.0, 1.1) vers le .NET Framework 2.0. Vous ne pourrez qu’apprécier les
avancées en terme de productivité, sécurité de vos applications tant WebForm que
WinForm, l’intégrité de vos application, l’interopérabilité et déploiement de celles-ci.
Oubliez les idées reçues :
« VB.NET est mort, vive C# »
NON
« .NET et la programmation objet n’a pas de valeur ajoutée, et c’est compliqué »
NON
Faites-vous votre propre expérience et jugement ! Découvrez une plateforme et un
environnement de développement puissant, intuitif, performant. Ouvrez Visual Studio 2005
ou une version Express !
Fig 1 : « Visual Basic 2005 – Express Edition »
2) Les applications que vous pouvez construire
Le lancement officiel par Microsoft de Visual Studio 2005, du .NET Framework 2.0 et de ce
fait de Visual Basic 2005 s’est déroulé en novembre 2005. Microsoft met les bouchées
doubles afin de médiatiser, crédibiliser et professionnaliser sa gamme de produits de
développement. Le .NET Framework et les services web XML ont été le cheval de bataille
des campagnes marketing. Mais ces éléments ne sont pas une finalité en soi, Visual Basic
2005 et le .NET Framework vous permettent de développer bien d’autres types
d’applications : « Applications Consoles, Windows, Smart Device, Web, Web Services,
librairies, … ».
2.1) Applications Consoles
Les applications consoles ou plus fréquemment appelées « applications en lignes de
commande » restent des applications incontournables et d’une puissance parfois mal
considérée. Ce type d’application est plus généralement utilisé dans le cadre de gestions de
données en entrée et en sortie sans nécessité de passer par une Interface Utilisateur.
Fig 2 : « Nouveau projets type WinForm – Visual Basic Express Edition »
2.2) Applications Windows Smart Client
Ces applications sont celles se rapprochant le plus des applications Windows développables
en VB 6.0. Dans l’environnement .NET, ces applications sont couramment appelées des
applications « WinForm » en opposition avec les applications web « WebForm » !
L’application WinForm « Smart Client » est ainsi un compromis de la capacité d’exploiter la
puissance du processeur (capacité de calcul) de la machine cliente, des interfaces utilisateurs
riches et de la facilité de connectivité et de déploiement généralement associées aux
WebForms.
Ainsi l’application « Smart Client » est conventionnellement une application WinForm
contenant les améliorations suivantes :
• Consommation de web service
• Support du mode offline
• Déploiement depuis un serveur centralisé
• Distribution automatique de mises à jour
• Support de multi-devices
L’intérêt des applications « smart client » est ainsi fortement ressenti dans les applications
sujettes à exploiter la puissance du processeur client tout en exploitant le meilleur des
applications Web.
2.3) Librairies de classes
La capitalisation, factorisation, protection et réutilisation du code sont des facteurs essentiels
de tout développeur professionnel. Dans ce cadre, les librairies de classes appelées également
« Frameworks » ou « Assembly » permettent d’encapsuler tout code potentiellement
réutilisable sous forme de fichiers « *.dll ».
Cette opération est proche de la création d’un projet COM DLL pour tout développeur VB
6.0 hormis le fait que le fichier « *.dll » créé par Visual Studio 2005 n’est pas un composant
COM !
Les librairies de classes ou assemblies contiennent du code managé (basé sur le .NET
Framework). Celles-ci contiendront tout type de classes (ex : règles métiers, entités, …),
contrôles, composants, classes d’extension du FCL (Framework Class Librairy, le .NET
Framework).
2.4) Applications Web
Les applications web, un premier fer de lance du .NET Framework, ont popularisé cette
technologie. Mieux connu sous la dénomination de « ASP.NET », ce type d’application a
rapidement supplanté les applications développées en ASP 3.0 en apportant un modèle riche
d’objets au travers d’une puissance (passage d’un modèle interprété des pages ASP vers un
modèle compilé) et d’une scalabilité accrues.
Fig 3 : « Nouveau projets type WebForm – Visual Web Developer Express Edition »
2.5) Web Services
Les Web Services, second fer de lance au service du lancement et de la promotion du .NET
Framework, peuvent être considérés comme un sous ensemble des applications web
« ASP.NET ». Les web services sont basés sur SOAP (Simple Object Access Protocol) et
XML (Extensible Markup Language) définis par la syntaxe et les règles d’échanges entre
deux systèmes. Les messages SOAP se véhiculent de la même manière qu’une page web au
travers des protocoles http.
2.6) Windows Services
Les applications « Windows Services » ou entendez les services Windows sont des
applications tournant en tâches de fond pour des raisons de performance ou de distribution de
services au profit d’autres programmes. Un service Windows se démarre en générale
automatiquement et peut fonctionner alors qu’aucun utilisateur n’est connecté sur la machine.
Très utile et utilisé dans le cadre d’applications installées sur des serveurs de production. Ex :
gestion de synchronisation de serveur, rapatriement automatique de documents, … La
création de ce type d’application avec le .NET Framework est relativement aisée et peut se
faire à partir de n’importe quel langage dit .NET-Compliant.
2.7) Application Smart Device
L’ensemble des applications passées en revue tournent sur le .NET Framework. Vous pouvez
également développer des application sur le .NET Compact Framework (sous ensemble du
.NET Framework) orienté vers des supports à faibles ressources (processeur, ram, écrans)
comme les Pocket PC, SmartPhones, … Visual Studio 2005 embarque un émulateur vous
permettant de tester les fonctionnalités et le développement sur de telle plateforme.
2.8) Projets de setup et de déploiement
Vous pouvez également créer des projets de déploiement de vos projets développez via
Visual Basic 2005 ou tout autre projet .NET-Compliant. La facilité de création déconcertera
plus d’un développeur sur une technologie plus ancienne telle que Visual Basic 6.0. Visual
Studio 2005 vous permettra de créer 6 types de projets de déploiement différents permettant
autant des déploiements dits de type lourd ou de type léger. Vous rencontrerez ainsi deux
méthodes phares telles que le déploiement par MSI (Microsoft Installer) ou le déploiement
par ClickOnce qui fera l’objet d’un traitement particulier dans ces tutoriaux.
3) VS 2005 : Un environnement de développement unifié
L’apparition de Visual Studio .NET introduisit une nouvelle génération d’environnement
unifié ! Entendez par « environnement unifié » un environnement vous permettant de créer
différents types d’applications (comme celles mentionnées dans le point 2 de ce document).
Visual Studio 2005 offre quant à lui de nombreuses nouvelle fonctionnalités que vous aurez
l’occasion de parcourir un peu plus loin dans ce tutorial.
Fig 4 : « Structuration de la gamme de produits Visual Studio 2005 »
Visual Studio 2005 est disponible dans les éditions suivantes :
•
•
•
Visual
Studio
2005
Team
System
Gamme d'outils productifs, intégrés et extensibles de gestion du cycle de vie d'un
projet permettant aux équipes de développement de logiciels d'améliorer leur
communication et leur collaboration pendant tout le processus de développement.
Visual
Studio
2005
Professional
Editions
&
Office
System
Outil professionnel destinés aux développeurs individuels ou aux membres de petites
équipes créant des applications windows, Web, mobiles ou basées sur Microsoft
Office.
Visual
Studio
2005
Standard
and
Express
Editions
Outils de développement simples d'utilisation et faciles à prendre en main pour les
développeurs débutants, amateurs et étudiants qui souhaitent créer des applications
pour Windows et Internet.
Vous trouverez un comparatif des fonctionnalités des différentes versions de Visual Studio
.NET à l’adresse suivante :
http://www.microsoft.com/france/msdn/vstudio/vs2005/comparaison/default.mspx
4) Mais qu’est-ce que le .NET Framework ?
L’architecture .NET peut être définie de la façon suivante :
Il s’agit d’un ensemble de Services communs, utilisables depuis plusieurs langages objet. Ces
Services s’exécutent sous la forme d’un code intermédiaire indépendant de l’architecture
sous-jacente. Ces Services s’exécutent dans un « runtime » (CLR – Common Language
Runtime) assurant les fonctions de gestion des ressources et de surveillance du bon
fonctionnement des applications.
A la lecture de cette rapide description, on ne peut s’empêcher de faire un parallèle avec Java.
Effectivement, Microsoft ne se cache pas d’avoir puisé de façon tout à fait pragmatique ses
inspirations dans technologies existantes, et en particulier dans le monde Java.
Le but premier de .NET est de fournir aux développeurs les moyens de créer des applications
interopérables utilisant des "Web Services" depuis tout type de terminal : PC, assistant
personnel, téléphone mobile.
Fig 5 : L’architecture générale du .NET Framework
Avec la plateforme .NET, Microsoft fournit plusieurs langages ainsi que les compilateurs
associés, tels que VB 2005, C# 2.0, ..
D’autres éditeurs, soucieux de profiter de la vague .NET, écrivent des compilateurs pour
d’autres langages non supportés par les équipes de Redmond. Nous y retrouverons des
langages aussi divers et insolites que Cobol, Eiffel, Python.
Tous ces langages sont compilés sous la forme d’un langage intermédiaire (Initialement
appelé MSIL, rebaptisé IL pour Intermediate Language), indépendant du matériel et du
système d’exploitation.
Ce langage « IL » : Microsoft Intermediate Language est ensuite exécuté dans un Runtime, la
« CLR » (Common Language Runtime) qui remplit sensiblement le même rôle que la JVM
dans la plateforme Java.
Fig 6 : Briques logiques de la BCL (Base Class Library)
L’IL est alors traduit en code machine par un compilateur "Juste à temps" (JiT compiler).
Les applications compilées sous la forme de code intermédiaire se présentent sous la forme de
binaires exécutables portables (Portable Exécutable : DLL, EXE).
Pour qu’un langage soit éligible au rang de langage supporté par la plateforme .NET dit
« .NET-Compliant », il faut qu’il puisse fournir un ensemble de fonctionnalités qui sont
recensées dans un contrat de service « CLS » - Common Language Specification (cfr Fig 5).
Pour ajouter un langage à .NET, il suffira donc a priori de faire en sorte qu’il corresponde aux
exigences de la CLS ainsi que développer un compilateur pour ce langage vers le langage IL.
Ceci semble relativement anodin, mais sachez que les contraintes imposées par le respect de
la CLS aux différents langages de .NET font en sorte que Visual Basic .NET, par exemple,
est finalement un nouveau langage à part entière qui ne conserve de Visual Basic 6.0 que son
approche syntaxique.
Une autre conséquence directe du fait que les langages utilisés dans le .NET soient compilés
sous la forme de code intermédiaire est qu’une classe écrite dans un langage pourra aisément
être dérivée dans un autre langage, et de ce fait, nous pourrons instancier dans un autre
langage un objet d’une classe écrite dans un autre langage, de par le passage par le langage
IL.
Ainsi, via .NET, tous les langages offriront les mêmes possibilités et fourniront sensiblement
les mêmes performances, le choix entre VB.NET et C# ne dépendra plus que de vos goûts et
habitudes de programmation, et ne sera plus imposé par des contraintes d’implémentation.
« Que du Bonheur !!! » me direz-vous.
Comment tout ceci est donc possible ? Afin de mieux comprendre l’aspect multi-langage de
.NET, je spécifierais qu’en définitive le .NET ne supporte qu’un seul langage : le langage «
IL ».
En revanche, Microsoft vous propose pour votre confort, d’écrire ce code IL avec n’importe
quel langage normé Visual Basic, ou C++, Cobol ou Eiffel...
Cet ensemble hiérarchique de classes fournit l’ensemble des services et API nécessaires au
développement d’applications. Grâce aux possibilités d’introspection proposées par l’API de
« reflection » (System.Reflection), le code est auto documenté, ce qui fournit au développeur
une documentation non négligeable à l’inverse de Javadoc.
Fig 7 : « Hiérarchie de classes du .NET Framework en version 1.1 »
5) Quelques nouveautés du langage VB 2005
Le .NET Framework 2.0 apporte de sérieuses nouveautés dans ses différents langages. Le
mot d’ordre semble orienté vers une réduction de plus de 50% du code à générer !
A la première lecture, une classification sommaire nous permet de dégager les axes
d’innovation suivants :
• Innovation des langages
• Perfectionnements des compilateurs
• Perfectionnements de la productivité
• Perfectionnements du débuggeur
Comme vous pourrez le constater, les nouveautés et innovations des langages deviennent
difficilement dissociables de l’IDE Visual Studio 2005. Vous pourrez même, en faisant
abstraction de l’approche purement puriste, constater que les nouveautés majeures reposent
soit sur les combinaisons des langages et de leur cadre de développement respectif, soit les
différentes versions du VS.NET.
Bien qu’innovants, force est de reconnaître que des langages comme C# et VB.NET tendent à
s'uniformiser et à devenir tellement semblables en terme de réalisations pragmatiques
réalisables qu’il devient difficile de tirer des arguments purement techniques sur le choix
décisif de l’un ou l’autre. Ceci, fis de l'approche psycho métaphysique de tout puriste.
Dans la suite de ce tutoriel, vous aborderez les Générics, les classes partielles, les méthodes
anonymes, les itérateurs, les qualifications d'alias et des classes statiques, ... Les explications
se voudront relativement simples en vue de permettre une compréhension rapide de ces
avancées.
5.1) Générics
Présenté comme étant une des caractéristiques prépondérantes, soutenue par Bill Gates, du
.NET Framework 2.0 et initialement du langage C#, les Générics apportent la capacité de
réutilisation générique des algorithmes de langages .NET-Compliant.
Mieux connus en C++ sous le nom de Template, l’absence des Générics sous VB.NET ou C#
fut un reproche des utilisateurs auprès de Microsoft. Malgré que les Générics n’implémentent
pas encore la totalité des fonctionnalités des Templates C++, ceux-ci vous seront d’une
précieuse aide. Consultez l’article suivant pour la liste complète des différences entre les
Templates C++ et les Générics en .NET 2.0 : http://msdn2.microsoft.com/enus/library/c6cyy67b.aspx
Mais qu’est-ce qu’un « Générics » ? Selon une définition purement scientifique les Générics
ou « Parametric polymorphism » entendez Polymorphismes paramétriques font allusion aux
classes et aux méthodes qui travaillent uniformément sur des valeurs de types différents.
En bon français, cela pourrait donner la généralisation ou la réutilisation de collections,
classes et/ou méthodes sans se soucier des problématiques de typage (Type-Safe, dont le type
est sûr) ce celles-ci ou de leurs paramètres (transtypage engendrant les problématiques de
« Boxing – UnBoxing » et ainsi de test au debuging, performances, maintenance, …).
L’idée d’implémenter les générics dans la CLI puis dans la CLR fut proposée en 1999 par
Don Syme et Andrew Kennedy (http://research.microsoft.com/projects/clrgen). Les générics
ont été officiellement annoncés en 2002.
L’objectif principal des Générics, comme vous l’aurez compris, est multiple :
• Minimisation de votre code
• Approche générique de votre code
• Sécurisation de votre code lors de la compilation
Types Génériques
Observez le code suivant permettant d’introduire la gestion d’une classe de type collection :
Public Class myCollection
Public Sub Add(ByVal myKey As String, ByVal myElement As Object)
' ...
End Sub
End Class
Celle classe vous permettra ainsi de stocker des éléments de n’importe quel type, la première
problématique apparaît rapidement ! Pour traiter ces éléments de type sans rapport
spécifiques, vous êtes dans l’obligation de devoir les traiter en tant que type System.Object.
Deux problématiques viennent s’ajouter :
1. Supposons que vous ne souhaitiez que stocker des types « Entiers » dans votre liste,
vous pourrez certes utiliser cette classe, cependant que se passera-t-il si vous stocker
accidentellement un type « non-Entier » ?
2. Quid des problématiques de transtypage du type « Object » vers le type « Entier » et
des performances associées à ce transtypage.
La création d’une classe de type collection fortement typée sur un type « Entier » comme
présenté dans le code ci-dessous permettrait de contourner des deux problématiques.
Public Class myCollection
Public Sub Add(ByVal myKey As String, ByVal myInteger As Integer)
' ...
End Sub
End Class
Mais que se passe-t-il maintenant si vous souhaitez stocker non plus de entiers mais des types
dates ou boolean ou vos types personnels ? Vous devrez ainsi pour chaque type vous créer
une collection fortement typée… pas très productif même si vous passez par une approche
basée sur l’utilisation du type System.Object !
Ainsi les collections génériques vous apportent une aide non négligeable afin de résoudre ses
problématiques de duplication de code, de perte de performances ou encore d’utilisation de
collections fortement typées.
Observez les exemples de code ci-dessous :
Public Class myCollection(Of ElementType)
'Le second paramètre est défini et utilisé en qualité de générics
Public Sub add(ByVal myKey As String, ByVal myElementType As ElementType)
' ... code
End Sub
End Class
Public Class myCollection(Of KeyType, ElementType)
'Les deux paramètres sont définis et utilisés en qualité de générics
Public Sub Add(ByVal myKey As KeyType, ByVal myElement As ElementType)
' ... code
End Sub
End Class
Public Class usedGemerics
Sub myFirstUse()
Dim myIntegerCollection As New myCollection(Of Integer)
myIntegerCollection.add("myFirst", 1)
Dim myDateIntegerCollection As New myCollection(Of Date, Integer)
myDateIntegerCollection.Add(CDate("2005-12-27"), 123)
End Sub
End Class
Le premier exemple « Dim myIntegerCollection As New myCollection(Of Integer) » définit ainsi
une collection fortement typée n’acceptant que des types Entiers qui seront directement
affectés dans le second attribut de la méthode « Add ». Vous remarquerez que cette approche
fonctionne également pour tout autre paramètre devant être fortement typé.
Note : Vous remarquerez dors et déjà la capacité de surcharger les classes selon leur
déclaration
de
type.
A
même
titre
que
leurs
méthodes.
L’utilisation de cette approche est également fonctionnelle dans le cas de structures,
d’interfaces ou de délegates devant être génériques.
Observez le résultat obtenu lors de la compilation du code suivant :
Dim myIntegerCollection As New myCollection(Of Integer)
'Ajout valide, second paramètre de type Integer
myIntegerCollection.add("myFirst", 1)
'Ajout non valide, second paramètre de type string
myIntegerCollection.add("myFirst", "reBonjour")
Vous constaterez effectivement que lors de l’implémentation du type ElementType par la
compilation Just-in-Time, le langage IL se charge de valider le type « Entier » de l’élément
passé et ainsi éviter toute conversion vers un type System.Object.
Méthodes Génériques
A même titre que les collections, vous pourriez avoir le souhait d’utiliser des méthodes
exploitant des types différents. Les problématiques ainsi rencontrées ne feraient que se
répéter. L’exemple de la méthode « Sort » présenté ci-dessous peut en être un bon exemple !
Public Sub Sort(ByVal Arr() As Object)
' ... code
End Sub
Ces problématiques peuvent, comme vous devez déjà le concevoir, se résoudre au travers de
la construction d’une méthode générique « Sort » comme présentée ci-dessous.
Public Sub Sort(Of myType)(ByVal Arr() As myType)
' ... code
End Sub
Vous le constatez, la méthode générique « Sort » est ainsi fortement typée avant toute
exploitation d’un de paramètres traditionnels.
Vous pouvez maintenant invoquer la méthode générique « Sort » en lui passant un argument
« Type » pur myType et un argument traditionnel.
Dim myIntArray() As Integer = {2, 3, 4, 5}
Sort(Of Integer)(myIntArray)
La réelle contrainte restante dans ce code étant que le type « myType » que vous invoquerez
devra être iComparable afin de passer par une méthode type « Sort » contenant
vraisemblablement un passage par … myItem(i).CompareTo(myItem(j))
L’apparition d’une contrainte d’implémentation d’IComparable dans ce cas particulier est
nécessaire afin de ne pas engendre une erreur lors de la compilation.
Afin de résoudre ce nouvel obstacle, vous aurez la possibilité d’utiliser deux méthodes de
gestion de contraintes :
- contraintes de Type : « Type Constraints »
- contraintes New : « New Constraints »
Contraintes de Type
Vous pourrez ainsi utiliser des contraintes de types afin de vous assurer que le type de
l’argument exploité dans un des paramètres hérite bien ou implémente le type souhaité. Les
classes et interfaces pourront être spécifiées par des contraintes de Type.
Public Class myContraintsCollection(Of KeyType, ElementType As
System.Windows.Forms.Panel)
'Les deux paramètres sont définis et utilisés en qualité de générics
'ElementType possède une contrainte sur le type "Panel"
Public Sub Add(ByVal myKey As KeyType, ByVal myElement As ElementType)
' ... code
Dim myControl As System.Windows.Forms.Control = myElement
End Sub
End Class
L’exploitation de ce code n’en restera que plus transparent :
'Déclaration correcte, la contrainte "Panel" est respectée
Dim myContraintsCollection As New myContraintsCollection(Of String, Panel)
'Déclaration non correcte, la contrainte "Panel" n'est pas respectée
Dim myContraintsCollection_bis As New myContraintsCollection(Of String, TextBox)
Voici le retour côté IDE :
Bien entendu les contraintes pourront être individuelles et placées sur chaque paramètre.
Celles-ci pourront également être multiples, voir croisées avec les contraintes « New » cidessous. Une contrainte pourra également est par exemple une Interface.
Contrainte New
Ce type de contrainte est plus typique puisqu’elle vous permet de valider le fait que votre
« Type » possède bien un constructeur et ne soit pas par exemple une Interface voir une classe
« MustInherit ». Observez l’exemple suivant :
Public Class myFactory(Of myType As New)
Public Function myInstance() As myType
' ... code
Dim myNewInstance As New myType
End Function
End Class
Qui sera exploité de la manière suivante :
'Déclaration correcte puisque l'objet de Type Control possède bien un constructeur
Dim myFactory As New myFactory(Of Control)
Contraintes Multiples
Voici un exemple de contraintes multiples. Supposons le contexte suivant :
Interface myInterface1
Sub mySub1()
Sub mySub2()
End Interface
Interface myInterface2
Sub mySub1()
Sub mySub3()
End Interface
Class myClasse
Sub mySub4()
End Sub
End Class
Vous pourrez ainsi créer votre classe générique avec les contraintes suivantes :
Class myMultipleContraints(Of myType As {myClasse, myInterface1, New}, mySecondType As
{myInterface1, myInterface2})
Public Sub myMethod()
Dim myT As New myType
myT.mySub4()
myT.mySub1()
myT.mySub2()
Dim myT2 As mySecondType
'Déclaration incorrecte du au caractère ambigue entre les deux interfaces
'mySub1 étant présente dans les deux interfaces
'remarquez que myT2 n'instancie pas de constructeur New puisqu'elle ne possède
pas de contrainte de type New
myT2.mySub1()
'Déclaration correcte de par le Cast explicite de myT2 myInterface2
CType(myT2, myInterface2).mySub1()
'Déclaration correcte, pas de caractère ambigue
myT2.mySub3()
End Sub
End Class
Voyez côté IDE – Intellisense :
Générics vs Polymorphism
Bien que vous ayez parcouru au travers de ces quelques explications l’exploitation potentielle
des générics au sein de votre code VB 2005. Que se passerait-il dans le cas suivant.
Supposez que vous souhaitiez définir une méthode permettant d’imprimer le contenu texte
d’un contrôle.
Deux possibilités s’offrent à vous :
1. Définition d’une méthode non générique attendant un paramètre de type Control
2. Définition d’une méthode générique
Observez :
'Méthode non générique
Sub PrintControl(ByVal C As Control)
'... code
End Sub
'Méthode générique
Sub PrintControl(Of myType As Control)(ByVal C As myType)
'... code
End Sub
Quel sera le meilleur choix ? la méthode générique ou non générique ?
Les deux méthodes permettent l’exploitation de tout type de contrôle pour autant que celui-ci
hérite du type Control (ex : Button, TextBox, …). Ainsi le côté pragmatique devrait vous
pousser vers la première non générique puisque la seconde n’apporte aucun élément
qualificatif supplémentaire et n’engendrerait que complexité complémentaire.
Mais supposons maintenant que vous souhaitiez n’imprimer que les contrôles implémentant
l’Interface « IPrint » ci-dessous.
Interface IPrint
'... code
End Interface
Dans ce cas, l’exploitation code change de la manière suivante :
'Méthode non générique
Sub PrintControl(ByVal C As IPrint)
'... code
End Sub
'Méthode générique
Sub PrintControl(Of myType As {Control, IPrint})(ByVal C As myType)
'... code
End Sub
Hors, quid ici de la garantie que l’objet de type IPrint sera bien un type Control, ainsi dans ce
second cas la méthode générique est plus appropriée.
5.2) Classes partielles
Les classes partielles représentent une nouveauté intéressante et plus particulièrement dans le
cadre du travail collaboratif, voir dans l’extension de code généré au travers d’outils comme
des AGL (Agents de Génie Logiciel).
L’approche est simple, à l’avenir les classes pourront être écrites sur plusieurs fichiers grâce à
la syntaxe " public partial class …"
Voici un exemple de création de classes partielles :
•
myPartialClass1.vb
Partial Public Class myPartialClass
Sub mySub1()
'... code
End Sub
End Class
•
myPartialClass2.vb
Partial Public Class myPartialClass
Sub mySub2()
'... code
End Sub
End Class
•
myPartialClass3.vb
Public Class myPartialClass
Sub mySub1(ByVal myAtt As String)
'... code
End Sub
Sub mySub3()
'... code
End Sub
End Class
Et voici le résultat obtenu au travers de l’explorateur de classes nous montrant bien que le
compilateur se chargera bien de reconstruire pour l’IL de votre assembly une classe unique à
partir des partiales classes.
Une nuance à ce titre entre VB.NET et C#, VB.NET tolère une classe déclarée en « Public
Class ».
5.3) Types Nullables
Si vous n’aviez jamais imaginé assigner des valeurs nulles à vos types « valeur », détrompezvous ! Vous pouvez désormais assigner des valeurs nulles à des types valeur en définissant un
type nullable.
Les types nullables dérivent du type générique System.Nullable<T>. T étant votre type.
Deux propriétés étendent l'utilité des types nullables : "HasValue" et "Value".
HasValue évalue le caractère « nulle » de votre type tandis que Value retournera la valeur
fondamentale que celle-ci soit nulle ou non.
Observez le code ci-dessous :
'Définition du type nullable sur un type Integer
Dim myNullable As Nullable(Of Integer)
'Vérification si la valeur est nulle ou non
If myNullable.HasValue Then
'... Code
Else
Console.WriteLine("Type Null !")
End If
Les nouveautés sont toutes aussi importantes que celles de C# 2.0. Certaines sont communes.
Nous pourrions parler de My, de la surcharge d'opérateurs, des mots clés IsNot et Using, des
types Integer non signés, de Continue ainsi que des processus asynchrones en nouveautés
distinctes.
5.4) My
L’objet "My" est retrouvé exclusivement dans l’interface de développement sous Visual
Basic. Celui-ci permet d'avoir accès rapidement à un ensemble de fonctionnalités diverses.
Voici un exemple de chargement d’un fichier son :
My.Computer.Audio.Play("c:\mesSons\fichierson.wav")
Dès plus intuitif ! Observez un autre exemple de code permettant de vérifier l’état de
connexion de l'ordinateur au réseau.
If My.Computer.Network.IsAvailable Then
'... Code
Else
'... Code
End If
Voici la représentation de l'objet "My" :
Vous y retrouverez : « My. »
-
Application : informations de version, logs, …
Computer : impression, base de registre, audio, fichiers, …
Forms : collection de formulaires
Resources : icônes, images, …
Settings : paramètres des applications et utilisateurs
User : nom d’utilisateur, groupe, domaine, …
WebService : collection des web services référencés dans le projet
5.5) Surcharge des Opérateurs
Historiquement, le .NET Framework permet la surcharge des opérateurs. Ce dispositif
permet de consommer des opérateurs dont la fonctionnalité a été surchargée par une classe
particulière, ce dispositif n’était pas disponible dans les versions précédentes, et permet aussi
au développeur de surcharger les fonctionnalités des opérateurs standards des langages
comme +, -, *, / et bien d’autres.
Dim p1 As New Point(100, 100)
Dim s1 As New Size(20, 30)
Dim p2 As Point = p1 + s1
Dim p3 As Point = p1 - s1
p2 contenant ainsi {120, 130} et p3 contenant {80, 70},
Cette surcharge n'est pas limitée à ces quelques opérateurs mais s’étend à d’autres opérateurs
comme / , ^, &, Like, Mode, And, Or, Xor, Not, <<, >>, = (comparaison), <>, <, <=, >, >=,
CType, IsTrue et IsFalse.
5.6) Mots clés IsNot & Using
Une des innovations se trouve également dans l’introduction de ces deux mots clés. Voici ce
que vous deviez écrire :
Dim Obj As New Object
If Not (Obj Is Nothing) Then
'... Code
End If
Vous écrirez à partir de maintenant :
Dim Obj As New Object
If Obj IsNot Nothing Then
'... Code
End If
Plus intuitif !
Dans VB.NET 2005 apparaît le mot clé Using qui se chargera de créer un bloc de code qui
sera disposé lors de la fin de l’utilisation de ce bloc, peut importe comment vous échapperez
ce bloc de code.
Voici un exemple repris de la MSDN :
Private Sub Form1_Paint( _
ByVal sender As Object, ByVal e As PaintEventArgs) _
Handles MyBase.Paint
' Create a new font.
Using myFont As New Font("Verdana", 12)
' Create a new solid brush.
Using myBrush As New SolidBrush( _
Color.FromArgb(123, 0, 123))
e.Graphics.DrawString( _
"Hello, World!", myFont, myBrush, 0, 0)
End Using
End Using
End Sub
5.7) Types Integer non signés
VB.NET 2005 prend nativement en charge les type signés et non signés ainsi que l’ensemble
des méthodes nécessaires à la conversion de ceux-ci. Les types SByte, UShort, UInteger et
ULong.
5.8) L’état Continue
VB.NET 2005 intègre le « Continue ». Cette syntaxe est déjà présente en C#. Elle permet de
passer directement à l'itération suivante sans exécuter le code de votre Do, While, For.
6) Nouveautés de VS 2005
Les nouveautés de Visual Studio 2005 (Professional Edition) comme vous pourrez le
constater sont nombreuses et peuvent un peu déconcerter au premier abord, une tendance à la
réorganisation méthodologique fait grand pas dans cette nouvelle version. Le mot d'ordre
reste toujours : "Plus productif, plus pragmatique, plus professionnel !"
Ce paragraphe se veut centrique sur l’IDE en version « Professional ». Ainsi les nouveautés
orientées sur des aspects comme Team System seront volontairement écartés en vue de se
concentrer sur une approche orientée purement développeur !
Les nouveautés de l’IDE peuvent être classées en catégories, voici celles mentionnées par la
MSDN US dont vous trouverez la référence en fin de tutorial :
•
•
•
•
•
•
•
Nouveautés dans l’IDE
Nouveautés dans l’édition de votre code
Nouveautés dans la création et gestion des Projets, Solutions, et Items
Nouveautés dans la compilation, le test et le déploiement
Nouveautés dans le debugger de Visual Studio 2005
Nouveautés dans la gestion des extensions et automatisation dans Visual Studio 2005
Nouveautés dans l’aide de Visual Studio 2005
Vous voici face un beau panel de catégories nous pouvant être détaillées au travers d’un
simple tutorial tant les nouveautés des l’IDE sont riches.
6.1) Nouveautés dans l’IDE
La première catégorie de nouveautés, visuellement spectaculaire, permettra de mieux
comprendre la nouvelle direction "Productivité" prise par les équipes de Redmond. Cette
première direction ne reste pas orpheline puisque d'autres groupes d’améliorations comme la
navigation, les nouveaux dispositifs de l’IDE et l'intégration de la communauté des
développeurs au sein même de VS 2005 sont au goût du jour !
Dès l’ouverture, le nouveau design de la page d’accueil et de l'IDE peut surprendre, bien qu’à
ce stade de nombreux articles ont déjà fleuris et permis de s’habituer à cette nouvelle
approche visuelle. La fenêtre d'accueil a complètement été revue graphiquement pour cette
release et contient maintenant quatre sections d’informations que vous pouvez découvrir dans
la capture ci-dessus.
La réorganisation de création des projets centrée sur l'objet du développement (Besoin final
du client) et non plus sur la compétence du développeur transpire au travers de ce nouvel
IDE. Y aurait-il un souhait de réconcilier ces deux mondes ?
La personnalisation lors du premier lancement de Visual Studio nous donne la même
impression, les arrangements de l’IDE sont de plus en plus orientés vers le type de
développements et personnalisation individuelle !
Ces personnalisations incluent les configurations des fenêtres, l’exposition ou non des
commandes et menus, de leurs noms, des raccourcis clavier,…
Toutes les adaptations effectuées sur votre IDE sont dépistées automatiquement et stockées.
Celles-ci pourront être par la suite exportées et importées par d'autres utilisateurs de Visual
Studio 2005. Ceci permettant une plus grande cohésion dans le cadre d’un travail
collaboratif.
Un assistant accessible de puis l'option « Tools / Import and Export Settings Wizard » vous
permettra d’effectuer une telle opération.
Mais avant d’exporter ou importer l’adaptation de l’IDE, observez quelques nouveautés non
négligeables propres à l’exploitation visuelle de celui-ci.
•
La Gestion de la disposition des fenêtres et boîtes à outils a subit un sérieux
rafraîchissement comme vous pouvez le constater dans la capture ci-dessus, la
visualisation de l’ancrage a nettement été améliorer. L'arrangement des boites à outils
et fenêtre se fait maintenant avec une grande précision en un minimum de temps!
•
La navigation entre les fenêtres ouvertes dans l'IDE grâce à la combinaison des
touches « Ctrl + Tab » sera certainement un des éléments de navigation que vous
apprécierez. Effectivement, celui-ci se veut proche du mode de navigation entre les
fenêtres dans Windows.
•
La liste des fichiers actifs accessible dans la partie supérieure droite d'affichage des
fichiers ouverts permet également une meilleure navigation au sein des fichiers de
votre projet.
Vous constaterez que ces quelques fonctionnalités deviennent très rapidement indispensables
et manquent cruellement lors de tout retour dans Visual Studio .NET 2003 !
Enfin, et afin de clôturer cette première catégorie de nouveautés de l'IDE, vous retrouverez
une intégration forte du monde communautaire (Projet CodeWise – CodeZone) au sein de
l'IDE de Visual Studio 2005.
Effectivement, ceci a été possible grâce au travail de collaboration de l’ensemble des
représentants et responsables des communautés tant francophone qu'anglophone, l'idée de
cette intégration est de permettre un accès centralisé à l'ensemble des sources, articles,
tutoriaux au sein de l’aide de Visual Studio 2005 tout en préservant l'autonomie et
l'indépendance de chaque communauté membre de cette initiative.
6.2) Nouveautés dans l’édition de votre code
Cette seconde catégorie, plus proche des besoins quotidiens du développeur, apporte de
sérieuses nouveautés permettant d’accroître la productivité et le professionnalisme de manière
considérable.
Ces nouveautés fonctionnelles, tantôt propre à un langage, tantôt non, sont nombreuses et
demanderaient un traité à part entière rien que pour les lister et les décrire brièvement.
En voici une première liste non exhaustive propre à l’édition de votre code et la création de
vos interfaces :
•
Code
Snippets
Les Code Snippets sont des segments de codes prêt à l’emploi pouvant être inséré
dans vos projets VB.NET, C# ou J#.
Snippets sous VB.NET
Snippets sous C#
Les Code Snippets peuvent être administrés à partir de la fenêtre « Code Snippets
Manager » accessible depuis le menu "Tools".
Cette fenêtre vous permettra d’ajouter, supprimer ou importer vos Snippets personnels
(accessible dans le répertoire : \ Mes documents\Visual Studio 2005\Code Snippets).
Voir de les partager avec vos collègues en mode collaboratif. L’ensemble des
Snippets présents par défaut dans Visual Studio (C#) sont accessibles depuis le
répertoire suivant : C:\Program Files\Microsoft Visual Studio 8\VC#\Snippets.
L’accès au snippets de VB.NET se fait en modifiant "VC#" par "VB"
•
Smart
Tags
Les Smart Tags vous accompagneront tout au long de votre travail avec Visual Studio
2005. Ceux-ci se chargeront de vous relayer les informations ou indications
disponibles en fonction de votre contexte de travail.
•
Refactoring
Disponible par défaut en C# et sous forme d’add-in (DeveloperExpress) à VS 2005
pour VB.NET, les options Refactoring vous permettront de renommer vos objets à la
volée, l’extraction de méthodes, l’extraction d’interfaces, la modification de signature
ainsi que l’encapsulation de propriétés.
•
Track
Changes
Au cours de votre utilisation de VS 2005, vous remarquerez vite des zones de couleurs
changeantes en marge des lignes de votre code. Effectivement, cette nouvelle option
vous permet d’avoir une visualisation directe des modifications et sauvegarde que
vous opérez dans vos fichiers. La couleur jaune déterminant dans ce cas les lignes
modifiées et la couleur verte leur sauvegarde.
Les couleurs peuvent être adaptées à partir des options de VS 2005.
•
AutoRecover
Fonctionnalité non négligeable, celle-ci se chargera de sauvegarder vos fichiers toutes
les 5 minutes et videra son cache à partir de 7 jours. Les délais peuvent bien
évidemment être refixés à partir des options, voir même désactivé.
Cette
fonctionnalité de Recover ira un cran plus loin en vous proposant à l’ouverture de VS
2005 de récupérer vos fichiers ouverts lors de la session précédente en cas de
fermeture non souhaitée de l’IDE.
Mais ceci n’est pas tout, d’autres fonctionnalités plus orientées sur la création de vos
interfaces et le soutient que VS 2005 peut vous apporter sont pour le moins bluffantes, le mot
d’ordre restant toujours : « plus de productivité ».
Un rapide coup d’œil sur la toolbox de contrôles web permet de se rendre compte à quel point
ce nouvel IDE permettra d’accélérer les temps de développements.
Et ce n’est qu’un début, l’ouverture d’un formulaire vous permettra de vite vous rendre
compte de nouvelle fonctionnalités vous permettant encore d’accélérer votre travail.
La navigation dans les tags de votre document, dans un formulaire web au sein d'un projet
ASP.NET, devient des plus intuitives grâce à l’exploitation de la barre de navigation de
documents html en mode design (Tag Navigator).
Observez l’interaction de VS2005 et de SQL Server ainsi que les nouveaux contrôles
ADO.NET au travers d’un petit exemple des plus explicites en créant l’affichage de la liste
des enregistrements de la table « Products » de la base Northwind au sein d’une page
ASP.NET.
La création de ceci se fera sans écrire une seule ligne de code, par un simple cliquer-déplacer
de la table products sur l’ASPX rappelant furieusement le mode de fonctionnement de la
MxDataGrid présente dans WebMatrix.
Vous obtiendrez le résultat suivant :
VS2005 a créé ainsi un GridView ainsi que le SQLDataSource correspondant.
Après quelques adaptations effectuées en quelques secondes grâce aux Smart Tags du
GridView et toujours sans avoir effectué une ligne de code, nous obtiendrons le résultat
suivant :
6.3) Nouveautés dans le debugger de Visual Studio 2005
Cette dernière catégorie fait certainement partie des plus impressionnantes, effectivement, le
debugger, bien qu’indispensable et performant sous VS.NET 2003, manquait de lisibilité pour
le développeur.
Le debugger sous VS 2005 s’est enrichi et offre de nouvelles fonctionnalités qui réjouira plus
d’un développeur ! Vous pourriez simplement parler de l’Edit & Continue, des Smart Tags
de navigation en mode débug de vos objets, de l’incorporation de l’intellisense au sein des
fenêtres d’espion, des visualiseurs, de l’exception helper, ou encore le mode debugger
DataTips permettant de visualiser le contenu de structure de données complexes.
Bien entendu, à tout mode debugger vient se greffer de manière naturelle une gestion des
points d’arrêts (BreakPoints). L’exploitation de ceux-ci c’est également vu subir un sérieux
coup de rafraichissement. Pour cause, vous pouvez toujours ajouter ou supprimer des points
d’arrêts mais vous pourrez également travailler sur des modes conditionnels, de Hit Count,
Filter, Location ou When Hit dans le cadre de l’exploitation de ceux-ci !
L’ajout et la suppression d’un point d’arrêt n’a pas changé, par contre vous aurez la
possibilité à partir de son menu contextuel de transformer votre point d’arrêt en un Trace
Point grâce à la fonctionnalité « When Hit » :
Cette fenêtre de gestion du TracePoint vous permettra ainsi d’afficher un message définit sous
forme d’expression, voir de démarrer une macro et enfin de définir si ce TracePoint garde le
comportement intrinsèque ou non d’un point d’arrêt !
Nous pourrions ainsi nous étendre sur bien d’autres nouveautés de VS 2005 et constater que
le tapage marketing Microsoft n’est pas dénué de sens. La « Productivité » est clairement le
mot d’ordre qui a guidé les équipes de Redmond dans l’évolution vers cette nouvelle version
de l’IDE.
Sa prise en main, des plus intuitives, rassurera tout développeur dans le passage de la version
2003 à la version 2005.
D’autres fonctionnalités importantes auraient encore pu être traitées dans ce tutorial.
Rappelons toutefois d’autres nouveautés comme :
• Le Class Designer
• La fenêtre de définition de code en C#
• La fenêtre de commande incorporant encore plus d’IntelliSense et d’Alias
• Le Wizard de publication de vos sites en ASP.NET
• L’amélioration du formatage de votre code VB.NET ou C#
• L’amélioration de l’édition de l’XML et le XSLT debugging
• …
Je ne pourrais ainsi que vous conseiller l’installation d’au moins une version Express et de
vous faire votre propre expérience et jugement.
Sources & références Web
Site Microsoft & MSDN2 :
•
•
•
•
•
•
•
Visual Studio 2005
http://www.microsoft.com/France/msdn/vstudio/
Centre de développement Visual Basic
http://www.microsoft.com/France/msdn/vbasic
Visual Studio 2005 Developer Center
http://lab.msdn.microsoft.com/vs2005/
http://msdn.microsoft.com/vstudio/products/
Tools and Utilities
http://lab.msdn.microsoft.com/vs2005/downloads/tools/default.aspx
NImport – Export Settings Wizard
http://msdn2.microsoft.com/library/1x6229t8
Defining and Using Generics in Visual Basic 2005
http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnvs05/html/vb2005_generics.asp

Documents pareils