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 :

Class et sous class


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut Class et sous class
    Bonjour à tous,

    Une fois de plus je viens solliciter votre aide car je suis confronté à un problème loin d'être inédit (je penses) mais google ne me donnant quasiment rien comme résultat je décide de m'adresser à ceux qui savent...

    Je travailles actuellement sur un projet de class "Intervention". La class principale fonctionne très bien mais j'ai besoin de rajouter des informations et j'aimerais savoir s'il est possible de mettre des sous-attributs.

    En gros, j'ai une classe Intervention avec diverses proprités comme Technicien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'renvoi le nom du technicien
    Intervention.Technicien
    J'aimerais pouvoir rajouter une propriété.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'renvoi le telephone du technicien
    Intervention.Technicien.Telephone
    Avez vous une méthode pour cela ?

    Sinon j'avais pensé à créer une fonction qui va chercher le résultat dans la base de données mais là un autre soucis se présente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'renvoi le telephone du technicien
    Intervention.Technicien.Info("tel")
     
    'renvoi le telephone du chargé d'affaire
    Intervention.ChargeAffaire.Info("tel")
    Pour le code ci-dessus, je ne sais pas s'il y a une solution pour que la fonction récupère la valeur de la propriété qui l'appelle... (si je n'ai pas confondu propriété et attribut )

    Merci d'avance.

    Cordialement

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class technicien
      public property tel as string
    end class
     
    public class intervention
      public property tech as technicien
    end class
    et après tu peux écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UneIntervention.Technicien.Tel
    passer par des chaines de caractères en paramètre complique la chose, et n'a d'utilité que si les propriétés ne sont pas connues lors du codage
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Intervention.Technicien.Telephone
    Il te faut une classe intervention, qui possède un property de Technicien, et cette property renvoit un objet de la classe Technicien. Et dans la classe technicien, tu auras une property téléphone.

    Pour illustrer en code ta 1ére proposition :
    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
    Public Class InterventionData
     
        Private _technicien As TechnicienData
        Public Property technicien As TechnicienData
            Get
                Return _technicien
            End Get
            Set(value As TechnicienData)
                _technicien = value
            End Set
        End Property
     
    End Class
     
    Public Class TechnicienData
     
        Private _telephone As String
        Public Property telephone As String
            Get
                Return _telephone
            End Get
            Set(value As String)
                _telephone = value
            End Set
        End Property
     
    End Class
    Ainsi tu pourrais faire Intervention.Technicien.Telephone

    Ta 2éme solution est aussi faisable, mais le codeur derrière ne pourra pas savoir que pour récupérer le téléphone c'est .Info("tel") il essayera peut-être .Info("telephone") ou plein d'autres solutions. Donc on fera un Enum pour le forcer à choisir parmi plusieurs choix définis.

    Pour illustrer :
    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
    Public Class InterventionData
     
        Private _technicien As TechnicienData
        Public Property technicien As TechnicienData
            Get
                Return _technicien
            End Get
            Set(value As TechnicienData)
                _technicien = value
            End Set
        End Property
     
        Public Function AfficherTelephone() As String
     
            Return technicien.getInfo(TechnicienData.typeInfo.TELEPHONE).ToString
     
        End Function
     
    End Class
     
    Public Class TechnicienData
     
        Private _telephone As String
        Private _nom As String
        Private _prenom As String
        Private _niveauQualification As Integer
     
        Public Enum typeInfo
     
            TELEPHONE = 0
            NOM = 1
            PRENOM = 2
            NIVEAU_QUALIFICATION = 3
     
        End Enum
     
        Public Function getInfo(type As typeInfo) As Object
     
            Select Case type
                Case typeInfo.NOM
                    Return _nom
     
                Case typeInfo.PRENOM
                    Return _prenom
     
                Case typeInfo.TELEPHONE
                    Return _telephone
     
                Case typeInfo.NIVEAU_QUALIFICATION
                    Return _niveauQualification
     
                Case Else
                    Throw New System.Exception("TypeInfo inconnu")
                    Return Nothing
            End Select
     
        End Function
     
     
    End Class
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class technicien
      public property tel as string
    end class
     
    public class intervention
      public property tech as technicien
    end class
    Tellement simple, tellement évident.... pourquoi aucun tuto ne montre ça...

    Au passage la plupart des tuto trouvés sur internet ont des exemples complètement tordu et irréalistes.

    Merci à vous deux.

    ++

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    c'est le problème de la plupart des tutos où on te présente une classe voiture avec une propriété couleur et une méthode avancer
    ca embrouille plus qu'autre chose ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/12/2008, 20h51
  2. Classe et sous-classe : Visibilité
    Par JohnNC dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2008, 13h38
  3. [Reflection] Obtenir les sous-classes d'une classe
    Par El Saigneur dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 11/06/2007, 07h14
  4. [POO] Organiser ses classes (en sous classes)
    Par alexfrere dans le forum Langage
    Réponses: 5
    Dernier message: 20/03/2007, 13h07
  5. Super classes et sous-classes/Méthodes
    Par smag dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 23h10

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