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 :

Polymorphisme en VB


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Par défaut Polymorphisme en VB
    Bonsoir tout le monde. j'ai besoin de votre aide.

    Pour comprendre la notion de Polyorphsme dans VB, j'ai essayé ce petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Module Module1
     
        Sub Main()
            Dim damien As humain
            damien = New espagnol
            damien.parle()
            Console.ReadKey()
        End Sub
     
    End Module
    Classe mère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Class humain
        Public Overridable Sub parle()
            Console.WriteLine("tout humain parle")
        End Sub
    End Class
    Classe fille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class espagnol
        Inherits humain
     
        Public Overloads Sub parle()
            Console.WriteLine("Il parle espagnol")
        End Sub
     
    End Class
    Je m'attends à ce que (parle()) de espagnol qui s'exécute. Mais mon code affiche "tout humain parle"

    Est ce que quelqu'un peut me donner une explication?

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Il faut utiliser le mot clé Overrides (ce qui signifie qu'une procédure substitue une procédure du même nom héritée d'une classe de base.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class espagnol
        Inherits humain
     
        Public Overrides Sub parle()
            Console.WriteLine("Il parle espagnol")
        End Sub
     
    End Class
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    overloads est à utiliser quand on a plusieurs méthodes de même nom mais de signature différente (signature = paramètres en nombre et en type)
    le plus généralement au sein d'une même classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    overloads sub a()
     
     
    overloads sub a(nb as integer)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Moi j'ai jamais compris à quoi servait overloads, puisque ça marche sans.

    Voir, si on utilise overloads sur une méthode, il faut le faire sur toute les autres (même en héritage)...

    Pourquoi rendre ce système de surcharge contraignant ?

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Pareil, je ne me sers que de overrides. Overloads, ça ne fait que surcharger le code je trouve...

    Enfin, si les méthodes sont éparpillées un peu partout, l'ajout de overloads peut être pertinent pour attirer l'attention.

    Personnellement, je regroupe les méthodes de même nom et de signatures différentes les unes en dessous des autres.

  6. #6
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    l'ajout de overloads peut être pertinent pour attirer l'attention
    -> Effectivement, dans ce cas ça pourrait servir. Mais comme toi j'organise le code, notamment par région, je me vois mal avoir les mêmes procédures surchargées éparpillées de partout.

    Par contre quand j'utilise le polymorphisme en héritage, j'utilise MustOveriddes dans la classe mère, pour forcer les classes enfants à suivre un même schéma. Mais là pour le coup, ce n'est pas un simple indicateur.

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

Discussions similaires

  1. polymorphisme et autre
    Par jbeauport dans le forum C++
    Réponses: 15
    Dernier message: 29/06/2005, 13h43
  2. [Language] polymorphisme, interface ...
    Par Ikit dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2005, 11h39
  3. Réponses: 15
    Dernier message: 25/01/2005, 16h51
  4. Surcharge et Polymorphisme
    Par Hell dans le forum C++
    Réponses: 6
    Dernier message: 12/01/2005, 20h50
  5. Réponses: 2
    Dernier message: 25/07/2004, 23h24

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