IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Question rapide sur les classes [AC-2002]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Question rapide sur les classes
    Bonjour,

    Suite à la lecture des tutoriels de sinarf et fauconnier sur les modules de classe (très clairs et complets, soit dit en passant!), j'ai décidé d'en implanter un dans l'application que je développe actuellement. Ça fonctionne très bien, mais une constatation me chicotte un peu et j'aimerais avoir votre opinion.

    Pour faire simple, j'ai une classe pour les employés (nom, prénom, salaire, service, etc). Une fois mon module de classe complété, je déclare une instance dans un formulaire et, lorsque je tape le code, un menu déroulant m'apparait avec seulement les propriétés de ma classe, ce qui est super. Ce qui me tracasse, c'est que si je met un espion sur mon instance je peux voir les propriétés de ma classe ainsi que les propriétés déclarées comme privées dans la classe (ex : Employe.Nom = "Gamache", Employe.strNom = "Gamache"). Évidemment, ça n'affecte pas mon code le moindrement. Par contre, je ne trouve pas ça très propre puisque je vois chaque propriété en double. Est-ce que c'est normal? Est-ce que j'ai mal déclaré mes variables dans le module de classe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Option Compare Database
     
    Private strCodeNT As String
    Private strNom As String
    Private strPrenom As String
     
     
    Property Let CodeNT(ByVal CodeNT As String)
        strCodeNT = CodeNT
        RemplitChamps
    End Property
     
    Property Get CodeNT() As String
        CodeNT = strCodeNT
    End Property
     
    Property Let Nom(ByVal Nom As String)
        strNom = Nom
    End Property
     
    Property Get Nom() As String
        Nom = strNom
    End Property
     
    Property Let Prenom(ByVal Prenom As String)
        strPrenom = Prenom
    End Property
     
    Property Get Prenom() As String
        Prenom = strPrenom
    End Property
     
    ' Propriété NomComplet en lecture seule
    Property Get NomComplet() As String
        NomComplet = Me.Prenom & " " & Me.Nom
    End Property

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Si tu as mis ton espion dans la classe alors c'est normal, les variables privées sont visibles dans l'objet qui les déclare par contre si tu essais de les voir à partir de code qui utilise cette classe là tu ne devrait voir que les propriété publiques.

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    En fait non, j'ai déclaré ma variable qui utilise la classe dans l'en-tête d'un module standard et j'ai mis mon espion dans le formulaire qui fait usage de cette variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Compare Database
    Public Usager As Employe
     
    Sub infoUsager()
    On Error GoTo erreur
     
        Set Usager = New Employe
        'Récupère le code NT de l'usager
        Usager.CodeNT = Environ("USERNAME")
    ...
    Ce que je trouve étrange, c'est que la composition automatique ne m'affiche que les propriétés publiques telles que je les ai nommées, mais que l'espion affiche en plus les propriétés privées de la classe.

    Enfin, ma question n'est peut-être pas pertinente, car tout fonctionne bien au fond. J'ai simplement l'impression de faire quelque chose de malpropre.

    Merci quand même!

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    L'espion étant un outil de bebuggage, il a probablement des droits supérieurs à ceux du code standard.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 03/08/2009, 23h08
  2. Réponses: 5
    Dernier message: 22/08/2008, 10h59
  3. question rapide sur les warning
    Par yan dans le forum C++
    Réponses: 12
    Dernier message: 18/06/2008, 09h48
  4. Question débutant sur les classes
    Par oranoutan dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/05/2007, 11h25
  5. Question de base sur les classes
    Par deaven dans le forum C++
    Réponses: 3
    Dernier message: 27/11/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo