Les classes et les objets
Le sommaire :
La programmation orientée objets permet de définir des procédures et des fonctions dans un modèle qui sera utilisable depuis toutes les applications VISUAL BASIC.
Le modèle est un fichier source dans lequel vous décrivez les procédures et les fonctions.
Ce modèle est appelé une classe…
Dès lors qu’une classe est écrite, qu’elle a un nom et qu’elle contient ses procédures et fonctions, vous pouvez l’utiliser dans n’importe quel module VISUAL BASIC depuis un objet.
Le fait d’associer un objet à une classe est une instance de classe.
La syntaxe pour la classe que nous allons appeler ici Classe1 :
Sub Procédure1(paramètre)
Code de la procédure1.
End Sub
Sub Procédure2(paramètre)
Code de la procédure2.
End Sub
function Fonction1(paramètres)
Code de la fonction1.
Fonction1 = Valeur à retourner.
End Function
function Fonction2(paramètres)
Code de la fonction2.
Fonction2 = Valeur à retourner.
End Function
Etc.…
Voilà, ici nous avons défini 2 procédures et deux fonctions dans la classe1, Procédure1, Procédure2, Fonction1 et Fonction2.
Nous pouvons utiliser la classe depuis les macro mais pas depuis le nom de la classe, car une classe est un modèle, nous devons créer un objet, ici, nous allons continuer la description en créant un objet qui s’appellera MonObjet :
La syntaxe dans une macro :
Dim MonObjet as New Classe1
Voilà, MonObjet peut maintenant être utilisé !
Les procédures et les fonctions situées dans la classe sont accessible depuis MonObjet, elles sont devenues les méthodes de l’objet et les paramètres à leur fournir, sont la partie signature de la méthode.
Par exemple, :
MonObjet.Fonction1(Paramètre1,Paramètre2)
MonObjet est l’objet qui est basé sur le modèle Classe1.
Fonction1 est la fonction appelée, c’est la méthode.
Paramètre1 et Paramètres2 sont les valeurs passées en paramètre à la méthode Fonction1, c’est la signature de la méthode…
L’exercice proposé reprend celui se trouvant dans le chapitre :
« 12 les fichiers de données séquentiel ».
Nous avions une première macro intitulée « Fonctionnaire »qui demandait à l’utilisateur de saisir le titre, le prénom, le nom et le service d’un fonctionnaire. Ces informations étaient ensuite enregistrées dans le fichier texte « Fonctionnaires.txt ».
Juste ci-après ce trouve le code VISUAL BASIC de cette macro, et ensuite, la même chose mais avec l’utilisation de l’objet intitulé MonObjet.
Voici donc le code classique sans objet…
Sub Fonctionnaire()
'
' Fonctionnaire Macro
' Macro enregistrée le 21/03/2008 par BOULANGER
'
' déclarations des variables de saisie
Dim Titre As String * 25
Dim Prénom As String * 25
Dim Nom As String *
25
Dim Service As String
* 25
' saisie d'un contact par l'utilisateur
Titre = InputBox("Veuillez saisir le titre", "Titre du fonctionnaire")
Prénom = InputBox("Veuillez saisir le prénom", "Prénom du contact")
Nom = InputBox("Veuillez saisir le prénom", "Nom du contact")
Service = InputBox("Veuillez saisir le service administratif du fonctionnaire", "Service administratif")
' Ajout du fonctionnaire dans le fichier texte fonctionnaires.txt
Open "c:\fonctionnaires.txt" For Append As #1
Print #1, Titre
Print #1, Prénom
Print #1, Nom
Print #1, Service
Close #1
MsgBox ("Enregistrement du fonctionnaire réalisé avec succès")
End Sub
Bon maintenant nous allons modifier le code…
Pour commencer, nous allons créer la classe « classe1 ».
Ouvrez une macro, puis validez l’option de menu :
ALT, « Insertion|Modèle de classe ».
Une page toute vierge apparaît à l’écran, nous sommes dans la classe « Classe1 », saisissons le code suivant :
Function
DemanderChamp(Champ As String)
ValeurSaisie = InputBox(Champ, "Veuillez saisir le champ " + Champ)
DemanderChamp = ValeurSaisie
End Function
Function Enregistrer(Titre As String, Prénom As String, Nom As String, Service As String)
Open "c:\fonctionnaires.txt" For Append As #1
Print #1, Titre
Print #1, Prénom
Print #1, Nom
Print #1, Service
Close #1
Enregistrer = "Enregistrement de " + Titre + " " + Prénom + " " + Nom + " réalisé avec succès"
End Function
Super, vous venez de créer deux fonctions intitulées « DemanderChamp » et « Enregistrer ».
La première permet la saisie d’informations relatives à un fonctionnaire, la deuxième enregistre ces informations dans le fichier texte « fonctionnaires.txt ».
Voici maintenant le code de la macro qui va créer un objet pointant sur la classe « Classe1 », et utilisant les 2 méthodes…
Sub Fonctionnaire()
'
' Fonctionnaire Macro
' Macro enregistrée le 21/03/2008 par BOULANGER
'
' déclarations des variables de saisie
Dim Titre
As String * 25
Dim Prénom
As String * 25
Dim Nom As
String * 25
Dim Service
As String * 25
Dim MonObjet As New Classe1
' saisie d'un contact par l'utilisateur
Titre = MonObjet.DemanderChamp("Titre du fonctionnaire")
Prénom = MonObjet.DemanderChamp("Prénom du fonctionnaire")
Nom = MonObjet.DemanderChamp("Nom du fonctionnaire")
Service = MonObjet.DemanderChamp("Service du fonctionnaire")
' Ajout du fonctionnaire dans le fichier texte fonctionnaires.txt
Message = MonObjet.Enregistrer(Titre, Prénom, Nom, Service)
MsgBox (Message)
End Sub
Ultérieurement, pour modifier une classe, entrez dans n’importe quelle macro.
Ensuite, validez l’option de menu :
ALT, « Affichage|Explorateur d’objets ».
Dans l’explorateur qui apparaît à l’écran, faites tabulation, vous êtes dans la liste des classes disponibles…
Recherchez la classe à modifier en utilisant les flèches verticales, ou en saisissant au clavier la première lettre du nom de la classe.
Ensuite, faites tabulation, vous êtes dans la liste des méthodes de la classe, choisissez l’une des méthodes et pressez la touche entrée.
Vous atterrissez directement dans le code de la méthode…
Philippe BOULANGER