|
Site |
Cours VB.net |
|
|
|
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
- 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
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) :
Un membre peut être accessible directement sur un instance : on appelle cela un membre d'instance.
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).
Un autre membre peut être accessible par les méthodes de la classe (en non pas de l'instance) :
-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.
|
|
|
|
|