Site:  Cours VB.net  
1.20 Les Classes, les objets.

Résumons un peu la notion de Classe, d'objet.

Voyons aussi les espaces de noms, les références, les Dll.

    En VB 2003

    En VB 2005

Portée des espaces de noms.

Propriétés ambiguës.

Alias.

Héritage.

Membres d'instance ou partagés.

Classe statique.

Voir la vidéo au format 'Flash': ou au format AVI en Visual Basic 2005.

La vidéo (identique à celle du chapitre 0-1)contient:

1)Objets, Classes.

2)Références, espaces de noms.

 

Classes.

Nous avons vu qu’on utilise des objets.

Il existe des 'types' d’objet qui définissent les caractéristiques communes des objets. Ces types se nomment les Classes.

Exemple:

La Classe System.Windows.Forms contient les "Forms" et les "Control"

On rappelle que se sont ces classes que l’on utilise comme "moule" pour instancier (créer) un objet, une instance

Dim B As New Form   crée un formulaire( une instance de formulaire) à partir de la Classe Form (Fenêtre).

B hérite de toutes les caractéristiques de la Classe Form. 

 

Les classes sont regroupées  en bibliothèques sous la dénomination "Espace de noms".

 

Essayons de comprendre:

Pour utiliser un objet en VB (fourni par le Framework par exemple), il faut:

A- Que la DLL correspondante soit chargée dans le projet. (La DLL c'est un fichier exécutable '.dll' qui contient le code nécessaire). En VB.NET on appelle cela la 'Référence' (Dans ‘Explorateur de solutions’)Exemple de DLL:

             System.dll

   

B- Que l'espace de nom soit importé: une DLL contient des espaces de noms dans lesquelles se trouvent les Classes. Pour utiliser une Classe il faut inclure l'espace de noms correspondant dans le programme donc il faut l'importer à partir de la DLL . On va par exemple importer l'espace de nom 'System.Windows.Forms'( il est dans System.dll et contient les Classes 'Form' et 'Control'):

             Imports System.Windows.Forms   

C- On peut maintenant utiliser les Classes contenues dans cet espace de nom et créer un objet. par exemple on va créer une fenêtre avec la Classe Form contenue dans System.Windows.Forms.

             Dim Form1 As New Form

Form1 est donc un objet formulaire qui hérite de tous les membres (Propriétés, méthodes) de la Classe Form, on peut donc utiliser une méthode de cet objet:

             Form1.Show()    'pour faire apparaître la fenêtre

ou une propriété:

             Form1.BackColor=Color.Red 'pour modifier la couleur de fond

 

Les Classes les plus courantes sont déjà chargées et disponibles, ce qui simplifie un peu les choses.

 

A - Détails  en VB 2003:

 - Les Références:

Pour qu'une classe soit utilisée, il faut que le composant correspondant (la DLL) soit chargé; on a vu que par défaut quelques composants du Framework (System.dll..) et le CLR ( mscorlib.dll) étaient chargés.

Dans 'Explorateur de solutions':

Double-cliquez la rubrique références pour voir les DLL (références déjà chargées).

Si vous souhaitez utiliser un autre composant dans votre application et qu'il n'est pas chargé, il faut ajouter la référence de ce composant. Dans la fenêtre de l'explorateur de solutions, cliquez le bouton droit de la souris puis cliquez sur 'Ajouter une référence'. La boîte de dialogue 'Ajouter une référence de Visual Studio .NET' propose trois options :

 

 - Importation d'espace de noms:

Certains espaces de noms ne sont pas chargés, l’espace de noms  Math n’est pas chargé par exemple. (Bien que la référence, la dll qui se nomme System soit présente dans le projet.)

Si je veux utiliser Round pour arrondir un nombre il faut d’abord importer l’espace de nom 'Math':

Pour cela il faut taper en haut de la fenêtre (au dessus de public Class)

Imports System.Math

Ensuite, on peut écrire:

      Label1.Text = (Round(1.2)).ToString 'qui affiche 1.

 

Si l’Imports n’a pas été fait, System.Math.Round(1.2) est accepté aussi. (A condition que la Dll soit chargée)

Noter bien que dans notre exemple, comme Math fait partie de System, la référence (la DLL correspondante) est déjà chargée.

Autre exemple: si on veut utiliser les fichiers, il faut importer System.IO.

 

B - Détails en VB 2005:

 - Les Références:

Pour qu'une classe soit utilisée, il faut que le composant correspondant(la DLL) soit chargé; on a vu que par défaut quelques composants du Framework (System.dll..) et le CLR ( mscorlib.dll) étaient chargés.

Dans 'Explorateur de solutions' double-cliquez sur 'My Projet', ou dans le menu Projet, cliquez sur propriétés de..

Puis choisir l'onglet 'Références'

On voit la liste des références chargées dans le projet: ici System, System.Data..

Si vous souhaitez utiliser un autre composant dans votre application et qu'il n'est pas chargé, il faut ajouter la référence de ce composant. Cliquez le bouton 'Ajouter...'. La boîte de dialogue 'Ajouter une référence' s'ouvre:

Elle propose:

En cliquant sur une référence puis sur 'Ok', cela charge la référence.

 

 - Importation d'espace de noms:

Certains espaces de noms ne sont pas chargés, l’espace de noms  Math n’est pas chargé par exemple. (Bien que la référence, la dll qui se nomme System soit présente dans le projet.)

Si je veux utiliser Round pour arrondir un nombre il faut d’abord importer l’espace de nom 'Math':

Pour cela il faut taper en haut de la fenêtre(au dessus de public Class)

Imports System.Math

Ensuite, on peut écrire:

      Label1.Text = (Round(1.2)).ToString 'qui affiche 1.

 

Si l’Imports n’a pas été fait, System.Math.Round(1.2) est accepté aussi. (A condition que la Dll soit chargée)

Noter bien que dans notre exemple, comme Math fait partie de System, la référence (la DLL correspondante) est déjà chargée.

On peut aussi importer les espaces de noms directement depuis l'onglet références (Après avoir cliqué sur 'My Projet'):

Il suffit de choisir la dll en haut pour voir l'afficher les espaces de noms contenus dans cette dll en bas et de cocher ceux que l'on veut charger.

 

 

 

Portée de l'espace de noms:

Si un seul espace de noms est spécifié  (Import System par exemple), tous les membres à nom unique de cet espace de noms sont présents. Si un espace de noms et le nom d'un élément de l'espace de noms sont spécifiés (Import System.Math), seuls les membres de cet élément sont disponibles sans qualification.

Exemple:

 Imports System

Permet d'utiliser System.ArgumentException mais pas  Systeme.Math.round

Pour utiliser Round il faut Importer  System.Math

 

 

Propriété ambiguë:

Certaines propriétés sont communes à plusieurs classes, il peut y a avoir ambiguïté et il faut utiliser dans ce cas la syntaxe complète.

Cela semble le cas pour left qui est  une propriété de Microsoft.VisualBasic.Strings mais aussi une propriété des contrôles.

MonControle.left=250  'est accepté

Chaine= left(C,2)     'pose des problèmes.

Pour lever l'ambiguïté il faut écrire  Microsoft.VisualBasic.left(C,i) par exemple quand on utilise left pour manipuler des chaînes. (Car left fait partie de l'espace Microsoft.VisualBasic )

Chaine= Microsoft.VisualBasic.left(C,2) est accepté.

 

Alias:

Parfois pour simplifier l'écriture ou pour éviter des ambiguïtés  on peut utiliser des Alias:

Imports STR= Microsoft.VisualBasic.Strings importe l'espace de nom String mais le désigne sous le nom de STR (STR est un Alias); STR est utilisé ensuite:

 Chaine=STR.left(C,i)

 

En résumé:

Les Classes sont dans des espaces de nom qui sont dans des  Dll (références).

ou

Les 'Dll' contiennent des 'Espaces de noms' contenant des 'Classes'.

 

Les références ( Dll) permettent de charger des composants, des Classes du Framework ou d'autres classes.

L'instruction 'Imports' permet d'importer des espaces de nom venant de ses références.

Cela donne  accès dans le programme  à des classes . on pourra donc  instancier des objets grâce à ces Classes puis  utiliser des méthodes.

 

Noter que dans les Classes, il existe une structure arborescente.

La premier Classe (en haut) est System.

Dessous il y a entre autres System.WindowsForms

Dessous System.Windows.Forms.Control

Enfin System.Windows.Forms.Control.Name par exemple.

 

Héritage:

Héritage:

Les classes héritent des membres(propriétés, méthodes) dont elles sont issues:

Exemple :

Un contrôle Button hérite de System.Windows.Forms.Control  car tous les composants avec représentation visuelle héritent de 'Control'.

Et bien les propriétés Name, Left, Right, Visible, Enabled qui sont des membres de Control deviennent aussi des membres de Button.

 

Membres d'instance et membres partagés.

Un objet a des membres (propriétés et méthodes) :

Exemple:

     Dim A As String crée une variable A , en fait une instance, un objet à partir de la Classe String.

     Ensuite on peut utiliser

B=A.Trim(" ") 'ici Trim enlève les blancs en début et fin de chaîne.

     Trim est bien une méthode qui s'applique à une instance (A).

   

        -La Classe de sa nature, de son type.

        Dans la classe 'String' j’utilise la méthode Compare pour comparer 2 chaînes.

        c=String.Compare(a,b)

         J'utilise 2 paramètres, mais j'appelle la méthode directement à partir de la Classe String.

        -La Classe de l’opération à effectuer

        Dans la Classe Math j’utilise la méthode Abs (Valeur absolue)

        c=Math.Abs(-12)

On appelle cela une méthode partagée (shared) car on l'utilise directement à partir du nom de la classe sans avoir à instancier.

 

On remarque que la Classe String a des membres d'instance et aussi des membres partagés.

La syntaxe est parfois bizarre mais obéit donc à une certaine logique.

 

Classes statiques ou non

Ici on parle des classes et non des membres.

Certaines Classes sont dites Statiques car elles existent d'emblée et on peut travailler dessus sans que l'on aie besoin de les instancier:

Exemple:

La Classe Directory (répertoire):

Directory.GetCurrentDirectory    'est utilisable directement pour obtenir le répertoire courant.

Par contre avec une Classe non statique il faut instancier l'objet que l'on va utiliser:

Pour la classe DirectoryInfo (information sur le répertoire), on  doit instancier avant usage un DirectoryInfo particulier:

Dim D As DirectoryInfo

D= New DirectoryInfo( MonDossier)

C'est un peu théorique, mais on verra au fur et à mesure des exemples pratiques de cela.