Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : juin 2012
    Messages : 1
    Points : 0
    Points
    0

    Par défaut ASP VBSCRIPT Pseudo Heritage

    Bonjour,

    j'ai lu le tutoriel de ce site à cette adresse

    Tous a la fin il y a possibilité, de réaliser un pseudo héritage entre deux classe,
    le problème est que je n'arrive pas à realisé cela.

    voici mon code :

    Code :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Class Utilisateur
     
        Private Num_EH 
        Private Num_Reg 
     
        Public Sub Class_Initialize()
            SetNum_EH() : SetNum_Reg() 
        End Sub
     
        Public Property Get SetNum_EH()
            Num_EH = Session("EH_Num") 
        End Property
     
        Public Property Get SetNum_Reg()
            Num_Reg = Session("CMSI")
        End Property
     
        Public Property Get GetNum_EH()
            Response.Write Num_EH
        End Property
     
        Public Property Get GetNum_Reg()
            Response.Write Num_Reg
        End Property
     
    End Class
     
    ' creation d'un user
    Set User = New Utilisateur
     
     
    puis :
     
     
    Class ListeD_Regions
     
        Private InstanceUser
        Private UserNum_EH 
        Private UserNum_Reg 
        Private Sel_Num_EH 
        Private Sel_Num_Reg 
     
        Public Sub Class_Initialize()
            Set InstanceUser = New Utilisateur
            SetUser_Num_EH() : SetUser_Num_Reg() : SetSel_Num_EH() : SetSel_Num_Reg()
        End Sub
     
     
        Public Property Get SetUser_Num_EH()
            UserNum_EH = InstanceUser.SetNum_EH
        End Property
     
        Public Property Get SetUser_Num_Reg()
            UserNum_Reg = InstanceUser.SetNum_Reg
        End Property
     
        Public Property Get SetSel_Num_EH()
            If Not IsEmpty(Request.Form("EH")) Then Sel_Num_EH = Request.Form("EH") else Sel_Num_EH = UserNum_EH
        End Property
     
        Public Property Get SetSel_Num_Reg()
            If Not IsEmpty(Request.Form("Reg")) Then    Sel_Num_Reg = Request.Form("Reg") else Sel_Num_Reg = UserNum_Reg
        End Property
     
        Public Property Get GetSel_Num_EH()
            Response.Write Sel_Num_EH
        End Property
     
        Public Property Get GetSel_Num_Reg()
            Response.Write Sel_Num_Reg
        End Property
     
    End Class
     
    Set ListReg = New ListeD_Regions
    Si je remplace UserNum_EH = InstanceUser.SetNum_EH ( mon setter qui affecte la valeur )
    par UserNum_EH = InstanceUser.GetNum_EH ( le getter qui permet d'afficher la valeur )

    ma valeur va bien s'afficher sur ma page, mais sinon la valeur (InstanceUser.SetNum_EH qui est donc le numero EH de ma classe Utilisateur ) n'ai pas affecté à la variable UserNum_EH de ma classe ListeD_Regions

    Quelqu'un serait m’expliquer pourquoi ?

    Cordialement.

  2. #2
    Membre Expert
    Inscrit en
    octobre 2011
    Messages
    668
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 668
    Points : 1 167
    Points
    1 167

    Par défaut

    Je viens de regarder le problème surlevé. Il est clair qu'il y ait des erreurs fondamentales.

    [1]
    Public Sub Class_Initialize()
    SetNum_EH() : SetNum_Reg()
    End Sub
    Ce genre de construction traite SetNum_EH et SetNum_Reg comme des sub/function mais pas comme property propre. Ce n'est pas correct. Si vous voulez initier Num_EH et Num_Reg, vous le faites directement. La même pour la classe ListD_Regions.

    [2] Il est possible qu'il y a erreurs de frappe pour SetNum_EH() et SetNum_Reg() etc: ils sont des property Let, pas Get evidemment. La même pour la classe ListD_Regions.

    [3] Mais il ne suffice pas de corriger le mot clé de Get à Let, il y a un caractère important pour les property Let: il faut y avoir au moins un argument qui est la "valeur" - vous devriez relire la signature sur le property Let dans le tuto.

    [4] L'état normal de construction des property Get est qu'il va retourner une valeur et la construction de la valeur retournée est de la même manière comme une fonction vbs. Or, tous les property Get ne retournent rien: ce n'est pas a priori faux mais il est possible que vous n'avez pas faites attention à cet aspect de chose.

    Outre que ces remarques, je n'ai pas scruté le script.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •