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

VB.NET Discussion :

Accès aux attributs d'une classe [Débutant]


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut Accès aux attributs d'une classe
    Bonjour à vous tous. j'ai besoin de votre aide. Ma question est dans le commentaire du code Main

    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
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Public Class Salarie
        Private nom As String
        Private prenom As String
        Private matricule As Integer
        Private salaire As Double
        Public Shared tauxCS As Double = 11 / 100
        Public Shared nbr_salaries  as Integer = 0
        ' ======= LES CONSTRUCTEURS ============
        ' Par defaut
        Public Sub New()
            nbr_salaries += 1
        End Sub
        ' Matricule
        Public Sub New(ByVal mmatricule As Integer)
            Me.matricule = mmatricule
            nbr_salaries += 1
        End Sub
        ' Matricule et nom
        Public Sub New(ByVal mmatricule As Integer, ByVal nnom As String)
            Me.matricule = mmatricule
            Me.nom = nnom
            nbr_salaries += 1
        End Sub
        ' Touts les attribus
        Public Sub New(ByRef nnom As String, ByVal pprenom As String, ByVal mmatricule As Integer, ByVal ssalaire As Double)
            Me.nom = nnom
            Me.prenom = pprenom
            Me.matricule =
            Me.salaire = ssalaire
            nbr_salaries += 1
        End Sub
        ' Recopie
        Public Sub New(ByVal salar As Salarie)
            Me.nom = salar.nom
            Me.prenom = salar.prenom
            Me.matricule = salar.matricule
            Me.salaire = salar.salaire
            nbr_salaries += 1
        End Sub
        '===== Destructeur 
        Public Shared Sub detruire(ByRef S As Salarie)
            S = Nothing
            nbr_salaries -= 1
     
        End Sub
        ' ======= ACCESSEURS PROPERTY ==========
        '   nom
        Public Property Pnom() As String
            Get
                Return Me.nom
            End Get
            Set(ByVal value As String)
                Me.nom = value
            End Set
        End Property
        '   prenom
        Public Property Pprenom() As String
            Get
                Return Me.prenom
            End Get
            Set(ByVal value As String)
                Me.prenom = value
            End Set
        End Property
        '   Matricule
        Public Property Pmatricule() As Integer
            Get
                Return Me.matricule
            End Get
            Set(ByVal value As Integer)
                Me.matricule = value
            End Set
        End Property
        '  Salaire
        Public Property Psalaire() As Double
            Get
                Return Me.salaire
            End Get
            Set(ByVal value As Double)
                Me.salaire = value
            End Set
        End Property
        ' ==== Fonction qui calcul le salaire net ======
        Public Function CalculerSalaireNet()
            Return (Me.salaire - (Me.salaire * Salarie.tauxCS))
        End Function
    End Class
    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
    Module Module1
     
        Sub Main()
     
            Dim salarie1 As New Salarie("Leconte", "Henri", 1234, 14000)
            Dim salarie2 As New Salarie("Blanche", "Samy", 850, 14500)
            Dim salarie3 As New Salarie("Sendy", "Brown", 850, 13000)
            Dim salarie4 As New Salarie("Zaki", "Kamal", 1020, 12500)
            Console.WriteLine(Salarie.nbr_salaries)
            Console.WriteLine(salarie1.Pprenom)
            Console.WriteLine(salarie1.Psalaire) ' donne 0, alors que je m'attends à 14000
            Console.WriteLine(salarie2.Pnom)
            Console.WriteLine(salarie2.Pmatricule) 'donne 0, alors que je m'attends à 850
            Salarie.detruire(salarie2)
            Console.WriteLine(Salarie.nbr_salaries)
     
            Console.ReadKey()
     
        End Sub
     
    End Module
    Merci à vous
    J'apprends la programmation pour le plaisir

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    voici les lignes 27 et 28 de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.matricule =
    Me.salaire = ssalaire
    qui réécrit sans saut de ligne donne Me.matricule = Me.salaire = ssalaire ce qui est parfaitement valide (syntaxiquement) on assigne à matricule le résultat de la comparaison en salaire et ssalaire.
    Du coup à aucun moment on a assigné salaire donc il reste à 0

    Par contre ce code ne passerait pas si tu compilais avec Option Strict à On (rien que le fait de copier/coller ton code m'a signalé des erreurs)

    Je ne parle même pas de certain passages de paramètre ByRef qui ne servent à rien (99% du temps utiliser ByRef ne sert à rien ) et ton "destructeur" ou ton "constructeur par copie" (on se croirait vraiment en c++ ) autant le constructeur par copie "peut" avoir une utilisé (et encore avec des propriétés en lecture/écriture et un constructeur avec tous les paramètres c'est pas gagné) ; autant le "destructeur" ne détruit rien (il déréférence UNE variable il suffit d'une autre variable référençant le même objet pour qu'il ne soit pas détruit). et puis c'est quoi cette manie de faire des compteurs d'instance ; je pourrais aussi mentionner la répétition dans tes divers constructeurs (pourquoi incrémenter ton compteur d'instance dans chaque constructeur plutôt que de faire appeler le constructeur de base dans les autres ?)
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Merci à vous.
    Remarque 1:
    on se croirait vraiment en c++
    Effectivement j'ai suivi un mooc durant 3 mois sur C++ (il y a donc des traces)
    Remarque 2: J'ai commis une faute toute bête "Me.matricule= " et de manière fortuite j'ai un renseignement de plus
    qui réécrit sans saut de ligne donne Me.matricule = Me.salaire = ssalaire ce qui est parfaitement valide (syntaxiquement) on assigne à matricule le résultat de la comparaison en salaire et ssalaire.
    Du coup à aucun moment on a assigné salaire donc il reste à 0
    sans cette explication j'aurais compris que j'affecte Me.salaire à Me.matricule et ssalaire à Me.salaire. Erreur qui m'a apris une chose importante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Module Module1
     
        Sub Main()
            Dim x As Integer = 5
            Dim y As Integer = 2
            Dim z As Integer = 5
            Dim a = x = y
            Dim b = x = z
            Console.WriteLine(a & " ===== " & b)
            Console.ReadKey()
     
        End Sub
     
    End Module
    Une autre fois merci à vous
    J'apprends la programmation pour le plaisir

  4. #4
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Sehnsucht:
    pourquoi incrémenter ton compteur d'instance dans chaque constructeur plutôt que de faire appeler le constructeur de base dans les autres ?
    si quelqu'un pouvait m'expliquer, car je ne sais pas comment y procéder
    J'apprends la programmation pour le plaisir

  5. #5
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Voici l'exemple initial réécrit

    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
    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
    76
    77
    78
    79
    80
    Module Module1
     
        Sub Main()
            Dim salaries = {
                New Salarie("Leconte", "Henri", 1234, 14000),
                New Salarie("Blanche", "Samy", 850, 14500),
                New Salarie("Sendy", "Brown", 850, 13000),
                New Salarie("Zaki", "Kamal", 1020, 12500)
            }
            Dim copieSalarie = salaries(1)
     
            Console.WriteLine(Salarie.NombreSalaries)
     
            Console.WriteLine(salaries(0).Prenom)
            Console.WriteLine(salaries(0).Salaire)
     
            Console.WriteLine(salaries(1).Nom)
            Console.WriteLine(salaries(1).Matricule)
     
            Salarie.Detruire(salaries(1))
     
            Console.WriteLine(Salarie.NombreSalaries)
     
            Console.WriteLine(copieSalarie.Nom)
            Console.WriteLine(copieSalarie.Matricule)
        End Sub
     
    End Module
     
    Public Class Salarie
        Public Const TauxCS As Double = 11 / 100
     
        Private Shared _NombreSalaries As Integer = 0
     
        Public Sub New()
            _NombreSalaries += 1
        End Sub
     
        Public Sub New(matricule As Integer)
            Me.New()
            Me.Matricule = matricule
        End Sub
     
        Public Sub New(matricule As Integer, nom As String)
            Me.New(matricule)
            Me.Nom = nom
        End Sub
     
        Public Sub New(nom As String, prenom As String, matricule As Integer, salaire As Double)
            Me.New(matricule, nom)
            Me.Prenom = prenom
            Me.Salaire = salaire
        End Sub
     
        Public Sub New(autre As Salarie)
            Me.New(autre.Nom, autre.Prenom, autre.Matricule, autre.Salaire)
        End Sub
     
        Public Shared ReadOnly Property NombreSalaries As Integer
            Get
                Return _NombreSalaries
            End Get
        End Property
     
        Public Property Nom As String
        Public Property Prenom As String
        Public Property Matricule As Integer
        Public Property Salaire As Double
     
        Public ReadOnly Property SalaireNet As Double
            Get
                Return Salaire * (1 - TauxCS)
            End Get
        End Property
     
        Public Shared Sub Detruire(ByRef salarie As Salarie)
            salarie = Nothing
            _NombreSalaries -= 1
        End Sub
    End Class
    Au niveau des changements :
    j'ai utilisé un tableau plutôt que de créer plusieurs variables salarie1, salarie2 ... ça change pas grand chose ça ; j'ai aussi ajouté une copie de ton salarie2 (donc l'indice 1 de mon tableau) pour montrer que cette copie existe toujours après "destruction"
    Dans la classe en elle-même :
    J'ai fait de TauxCS une constante publique ; après tout, a priori, ça n'a pas vocation à changer (on aurait pu aussi la mettre privée si elle n'a pas vocation à être utilisée à l'extérieur)
    De même j'ai changer ton compteur d'instance en champ privé statique (associé à une propriété en lecture seule) parce que ce sont les créations/destructions qui doivent le modifier donc ne pas laisser d'accès direct en modification.
    S'en suivent les différents constructeurs ; j'ai gardé l'ordre de tes arguments même s'il est un peu incohérent (un coup c'est matricule en premier, un coup c'est le nom) et tu peux y voir les appels aux autres constructeurs.
    Puis la propriété statique [Shared] en lecture seule du nombre d'instances comme évoqué plus haut ainsi que les différentes propriétés que tu avais (en tant que propriété auto-implémentées)
    Et enfin ta méthode CalculSalaireNet (à laquelle il manquait le type de retour) que j'ai aussi mise en tant que propriété en lecture seule (l'un comme l'autre se valent, mais il me semblait que c'était plus une propriété calculée qu'une méthode) ; j'ai un peu changé le calcul pour ne faire qu'un accès au Salaire mais ça c'est du détail
    Pour finir ta méthode détruire qui prend un Salarie ByRef (les ByVal sont désormais optionnels et la valeur par défaut du coup je les ai enlevés sur le reste du code [notamment dans ton constructeur "tous paramètres" où le nom était ByRef sans trop de raison])
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  6. #6
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Merci infiniment pour ce code.J'y ai appris de nouvelles choses(surtout appeler le constructeur de base dans les autres). Par contre, et je ne suis qu'un débutant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim copieSalarie = salaries(1)
    D'après ce que j'ai appris "copieSalarie" n'est pas une référence de "salaries(1)" mais c'est une autre variable qui vit indépendamment de "salaries(1)". "copieSalarie" n'appartient pas au tableau "salaries". d'ailleurs quand on fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Salarie.Detruire(salaries(1))
    et après on essaye d'afficher le nom des salariés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each elem In salaries
                Console.WriteLine(elem.Nom)
            Next
    le code se bloque quand il arrive à l'indice 1, car "salaries(1).nom" n'existe plus, et ce même si "copieSalarie.nom" affiche "Blanche"
    C'est ce que je pense
    J'apprends la programmation pour le plaisir

  7. #7
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Quand tu dis << D'après ce que j'ai appris "copieSalarie" n'est pas une référence de "salaries(1)" >>
    L'assignation de références(*) ne fait pas que la variable est ou n'est pas une référence vers l'autre expression mais que les deux expressions font référence à la même chose ; l'un est un alias pour l'autre et vice-versa.

    Ainsi copieSalarie contient bien une référence sur ce quoi salaries(1) réfère ; pour t'en convaincre teste ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim copieSalarie = salaries(1)
     
    salarie(1).Salaire = 1000
    Console.WriteLine(copieSalarie.Salaire)
    Et tu verras que ça t'affiches bien 1000 ; par conséquent copieSalarie et salaries(1) se réfère bien au même objet.

    Par contre après, quand tu fais Salarie.Detruire(salaries(1)) ce qu'il se passe c'est qu'on assigne à notre paramètre Nothing ; autrement dit après ça salarie(1) se réfère à Nothing mais ça ne change pas ce sur quoi réfère copieSalarie.
    En un sens tu les désolidarises ; il ne sont plus des alias sur la même "chose" ; l'ancien (copieSalarie) se réfère toujours à ce qu'il référait avant (vu qu'on y a pas touché) et salaries(1) s'est vu modifié ce sur quoi il réfère ; le fait que dans ta boucle ça plante c'est juste une conséquence du fait qu'on ait choisi Nothing (et que tenter de faire Nothing.Nom ça plante) on aurait très bien pu écrire ceci (qui a peu d'intérêt) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Shared Sub Detruire(salarie As Salarie)
        salarie = New Salarie("Anon", "Ymous", 0, 1000000000)
        nombreSalaries -= 1
    End Sub
    et en sortie copieSalarie contiendrait toujours (une référence vers) "l'ancien" (soit "Blanche", "Samy") alors que salaries(1) contiendrait désormais (une référence vers) "le nouveau" (soit "Anon" "Ymous") et là ta boucle ne planterait plus.

    En résumé tant que tu ne modifies pas ce sur quoi réfère copieSalarie ou salaries(1) ; utiliser l'un ou l'autre revient au même parce qu'ils se réfèrent à la même chose ; par contre dès que tu changes ce sur quoi réfère l'un ou l'autre cela n'est plus vrai.

    (*)Pour être exact l'assignation effectue toujours une copie de la valeur de l'autre expression ; dans le cas d'un type valeur (Integer, Double, DateTime, etc.) la valeur de l'expression c'est le "contenu de l'objet" ; donc tu obtiens un nouveau type valeur (le même ; Integer si c'était Integer, Double si c'était Double etc.) avec le même contenu en gros un clone [donc indépendant]. Dans le cas d'un type référence, la valeur de l'expression c'est la "référence vers l'objet" ; donc tu obtiens une copie de la référence (ou plus exactement, une nouvelle référence vers le même objet) ce qui explique pourquoi toute opération modifiant l'objet depuis une de ces références est "visible" depuis n'importe laquelle des autres références qui se réfèrent au même objet.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  8. #8
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Cher Sehnsucht merci pour toutes ces explications , j'ai bien assimilé cette question de référence et j'ai compris pourquoi ma boucle bloque. mais un problème avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Shared Sub Detruire(salarie As Salarie)
        salarie = New Salarie("Anon", "Ymous", 0, 1000000000)
        _nombreSalaries -= 1
    End Sub
    salaries(1).Nom donne toujours "Blanche" et salaries(1).Prenom donne Samy, en plus le nombre de salariés ne change pas.
    j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Shared Sub Detruire(ByVal salarie As Salarie)
            salarie = Nothing
            salarie = New Salarie("Anon", "Ymous", 0, 1000000000)
            _NombreSalaries -= 1
        End Sub
    même résultat
    J'apprends la programmation pour le plaisir

  9. #9
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Normal, ta méthode Detruire prend son paramètre ByVal (c'est ByVal aussi quand on ne met rien) du coup ce que tu as dans ta méthode c'est une nouvelle référence vers salaries(1) (un alias donc si je reprends ma terminologie)
    Si tu réassignes cet alias, il fera donc référence à autre chose mais ceci n'impacte pas salaries(1) (comme modifier ce sur quoi référait salaries(1) ne changeait pas ce sur quoi référait copieSalarie précédemment).

    Il faut que tu passes cet argument ByRef, ainsi ce sera bien la référence à salaries(1) que tu passeras et plus un "alias" à celle-ci (comme je l'avais fait dans mon code )
    Et dans ton 2ème extrait de code c'est pareil, réassigner à Nothing puis réassigner à autre chose ça revient au même que directement réassigner à autre chose

    Quant au fait que le nombre de salaries ne diminue pas c'est également normal
    quand on appelle Detruire on a X (dans ton cas 4 mais partons du principe qu'on l'ignore) salaries, tu réassignes ton argument à un nouveau salarie ; donc appel du constructeur qui incrémente ce nombre on a donc (X + 1) salaries ; puis on décrémente ce nombre dans Detruire donc on revient bien à notre X initial
    C'est bien pour cela que dans mon précédent post j'avais précisé << on aurait très bien pu écrire ceci (qui a peu d'intérêt) >> (parce que ce "nouveau" Detruire ne détruit rien en fait mais le précédent ne détruisait pas forcément non plus comme je l'avais montré avec copieSalarie)

    De toute façon dans mon premier post ; j'avais bien précisé que Detruire ne servait pas vraiment à grand chose (<< autant le "destructeur" ne détruit rien >>), je l'ai laissé quand j'ai réécrit le code uniquement parce qu'il était là au départ
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  10. #10
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    ça devient clair (mais après une migraine! je n'ai plus les neurones d'il y a 30 ans).
    cette discussion pour moi, vaut mieux que plusieurs pages d'un tuto.
    Merci infiniment
    J'apprends la programmation pour le plaisir

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

Discussions similaires

  1. Accès aux attributs d'une autre classe
    Par alexmam15 dans le forum Débuter
    Réponses: 5
    Dernier message: 25/02/2011, 09h26
  2. [PHP 5.3] Empêcher l'accés aux attributs d'une classe ?
    Par tintin72 dans le forum Langage
    Réponses: 1
    Dernier message: 20/08/2010, 14h58
  3. Accès aux attributs propres à une classe fille
    Par jamilya dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/12/2008, 15h06
  4. Réponses: 38
    Dernier message: 16/02/2005, 02h03
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02

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