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 :

Heritage - Surement tout bête.


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Heritage - Surement tout bête.
    J'ai une classe Parent et 2 classe qui en hérite.

    Je voudrais une fois que j'ai mis mes objets de type Enfant lorsque j'appel la méthode commune parent/enfant que ce soit celle "d'origine" qui soit appelé (à part faire un gettype et caster à la voler en direct cast)

    Merci de votre aide


    Code vb.net : 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
     
    Dim ct As New CelluleTexte
    ct.Colonne = Enums.Colonne.Col2
    ct.Value = "TOTO"
     
    Dim cd As New CelluleDecimal
    cd.Colonne = Enums.Colonne.Col4
    cd.Value = 135.5D
     
    Dim g As List(Of Cellule)
    g.Add(ct)
    g.Add(cd)
     
    For Each cel In r
           Dim z = cel.GetData 'Problème ici : je voudrais qu'il appelle automatiquement sa classe enfant...
           ListBox1.Items.Add(z)
    Next


    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public MustInherit Class Cellule
     
        Public Colonne As Enums.Colonne
     
        Public Overridable Function GetData() As String
            'nothing here : ici que faire....
            'Return Me.GetData()
        End Function
     
    End Class

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Class CelluleTexte
        Inherits Cellule
     
        Public Value As String
     
        Public Overloads Function GetData() As String
            Return Value
        End Function
     
    End Class


    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Class CelluleDecimal
        Inherits Cellule
     
        Public Value As Decimal
     
        Public Overloads Function GetData() As Decimal
            Return Value
        End Function
     
    End Class
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  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
    il va falloir revoir la POO parce que là c'est un peu raté

    déjà pour overrider un membre c'est overrides, pas overloads
    overloads c'est pour déclarer une surcharge (même nom mais signature différente)

    après quand on override il faut avoir la même signature, donc un getdata qui change de type on est plus sur de l'héritage et du polymorphisme

    et quand on ne sais pas quoi mettre dans la methode d'origine, on la marque mustoverride

    tu peux regarder les classes generiques à tout hasard ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Bonjour Pol63,

    J'avais mis dans ma classe principale MustOverride et en effet j'ai été gêné par les signatures.

    J'avais donc tenter de surcharger.

    Sinon, je ne mets pas de méthode GetData dans la classe principale,ce qui force à caster avant et de détecté le type exact avant...

    J'ai regardé les classes générique personnalisé, mais je sens que je vais me mélanger les pinceaux.

    Merci.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Il faut voir peut être voir du cote des interfaces pour faire ca !!! ...

    code .vb revu :
    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
     
     
    Public Interface ICellule
     
        Property Colonne As Colonne
     
        Property Value As String
     
        Function GetData() As Object
    End Interface
     
    Public Class CelluleTexte2
        Implements ICellule
     
        Private _colonne As Colonne = Colonne.Col1
        Public Property Colonne As Colonne Implements ICellule.Colonne
            Get
                Return _colonne
            End Get
            Set(ByVal value As Colonne)
                _colonne = value
            End Set
        End Property
        Private _value As String = "CelluleTexte"
        Public Function GetData() As Object Implements ICellule.GetData
            Return Value
     
        End Function
     
     
        Public Property Value As String Implements ICellule.Value
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property
    End Class
    Public Class CelluleDecimal2
        Implements ICellule
     
     
        Private _colonne As Colonne = Colonne.Col1
        Public Property Colonne As Colonne Implements ICellule.Colonne
            Get
                Return _colonne
            End Get
            Set(ByVal value As Colonne)
                _colonne = value
            End Set
        End Property
        Private _value As Decimal = 12.25
     
     
        Public Function GetData() As Object Implements ICellule.GetData
            Return Value
     
        End Function
     
        Public Property Value As String Implements ICellule.Value
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property
    End Class
    code .vb du form:

    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
     
     
    Public Class Form2
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ct As ICellule
            ct = New CelluleTexte2
            ct.Colonne = Colonne.CoL2
            ct.Value = "TOTO"
     
            Dim cd As ICellule = New CelluleDecimal2
            cd.Colonne = Colonne.CoL4
            cd.Value = 135.5D
     
            Dim g As New List(Of ICellule)
            g.Add(ct)
            g.Add(cd)
     
            For Each cel In g
                 Dim z = cel.GetData 'Problème ici : je voudrais qu'il appelle automatiquement sa classe enfant...
                ListBox1.Items.Add(z)
            Next
        End Sub
    End Class
    bon code...

Discussions similaires

  1. Erreur sur cout : surement tout bête
    Par akorx dans le forum Débuter
    Réponses: 2
    Dernier message: 02/08/2011, 15h02
  2. [MySQL] [Mysql]Récuperer un id à partir d'un pseudo tout bête surement..
    Par verso61 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/03/2011, 23h41
  3. [Dates] Calcul tout bête sur une date...
    Par poah dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2005, 15h02
  4. un problème tout bête de scanf !
    Par eizo dans le forum C
    Réponses: 9
    Dernier message: 31/10/2005, 12h29
  5. [FLASH MX]Un problème tout bête !
    Par Kikoah dans le forum Flash
    Réponses: 11
    Dernier message: 02/06/2004, 13h16

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