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

WinDev Discussion :

Héritage et classe fille [WD18]


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut Héritage et classe fille
    Bonjour,

    je vais prendre un exemple simplifier de mon problème ici.

    Si j'ai 3 classes tels que :
    Code Windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Classe Vehicule
       PROCEDURE VIRTUELLE nbRoue()
    FIN
     
    Classe Moto Herite de Vehicule
       PROCEDURE VIRTUELLE nbRoue()
           RENVOYER 2
       FIN
    FIN
    Classe Voiture Herite de Vehicule
       PROCEDURE VIRTUELLE nbRoue()
           RENVOYER 4
       FIN
    FIN


    En gros maintenant je voudrais faire cela (le code suivant NE MARCHE PAS) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    test est un véhicule
    test est une moto
    Info(test.nbRoue())
    Pour vous situez dans le contexte, j'ai un modèle de fenêtre, qui utilise une classe mère pour plusieurs traitement. J'aimerai que les fenêtres qui utilise ce modèle de fenêtre puisse redeclarer la variable globale de type Vehicule en quelque chose de plus spécialisé.

    Je sais pas trop si je me suis fait comprendre :s

    Je vous remercie d'avance,
    Cordialement,
    Sanna

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par Sannazzarotiti Voir le message
    En gros maintenant je voudrais faire cela (le code suivant NE MARCHE PAS) :
    a
    Aurais-tu un message d'erreur ou une autre information à nous communiquer plutôt que "NE MARCHE PAS" ?
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Le comportement me semble normal.
    La première ligne indique que test est de type véhicule. Comme la méthode nbRoue est virtuelle, et ne fait rien dans cette classe, l'appel échoue.

    Pour bien utiliser l'héritage je ferai ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    test est un véhicule dynamique
    test = allouer une moto
    Info(test.nbRoue())
    Tatayo.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    C'est vrai que j'aurai pu spécifier l'erreur (ça me sembler tomber sous le sens mais en effet quand on est pas dessus ça ne l'est pas forcement). Il me disait que la variable test était déja initialisé du type "Vehicule" et que je ne pouvais donc pas l'initialisé d'un autre type.

    Tatayo, c'est en effet la syntaxe que je rechercher en WinDev (j'aurai pu le faire dans d'autre langage de programmation) !

    Par contre si jamais la classe moto était la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Classe Moto Herite de Vehicule
       PROCEDURE VIRTUELLE nbRoue()
           RENVOYER 2
       FIN
       PROCEDURE seTaperUnWheeling()
     
       FIN
    FIN
    Si jamais je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    test est un véhicule dynamique
    test = allouer une moto
    test.seTaperUnWheeling()
    il me dit que l'élément "SeTaperUnWheeling" n'existe pas dans la classe "Véhicule".

    J'ai bêtement pensé qu'on pourrai utiliser les autres méthodes d'une classe une fois la variable alloué à cette dernière.

    S'agit t'il d'une erreur de conception de ma part ou il y a t'il une solution ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Perso je déclarerais directement la variable en tant que moto
    donc directement
    mais peut être que je capte pas ce que tu veux faire....
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Ah ah, michel.souris, bien essayé ! Cependant il s'agit ici d'un exemple simplifié.

    Je dois déclarer la classe mère dans un modèle de fenêtre et utiliser pas mal de ses fonctionnalités.

    Ensuite je dois "redéfinir" une classe fille dans les fenêtre qui utilise ce modéle car leurs comportement est différents, mais avec beaucoup de points commun. Pour évité la redondance de recopier tous les traitements de la mère, je dois en gros redéfinir dynamiquement le "Véhicule" en Moto ou Voiture (même si il ne s'agit pas du tout de véhicules dans mon projet xD).

    Bref, savoir comment résoudre le problème simplifié ci dessus m'aiderai à corriger mon problème complexe comme un grand.


    Si tu trouve la solution tu aura ton poney

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par Sannazzarotiti Voir le message
    Par contre si jamais la classe moto était la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Classe Moto Herite de Vehicule
       PROCEDURE VIRTUELLE nbRoue()
           RENVOYER 2
       FIN
       PROCEDURE seTaperUnWheeling()
     
       FIN
    FIN
    Si jamais je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    test est un véhicule dynamique
    test = allouer une moto
    test.seTaperUnWheeling()
    il me dit que l'élément "SeTaperUnWheeling" n'existe pas dans la classe "Véhicule".

    J'ai bêtement pensé qu'on pourrai utiliser les autres méthodes d'une classe une fois la variable alloué à cette dernière.

    S'agit t'il d'une erreur de conception de ma part ou il y a t'il une solution ?
    C'est normal.
    La variable est de type vehicule, quand bien même l'instance est une moto.
    Donc seules les méthodes, propriétés déclarées dans la classe véhicule sont utilisables.

    Tatayo.

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pclClTest est un objet dynamique
    pclClTest = allouer un Vehicule
    pclClTest = allouer un Moto
    Trace(pclClTest.nbroue())
    Maintenant mon poney
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Hé bah ! On te promet un poney et tu serait capable de réglé les probléme du monde entier

    En effet ça marche, j'ai eu une petite erreur de syntaxe mais ça marche.

    Pour appeler le constructeur parent de moto par exemple il faut ecrire cela (si jamais quelqu'un venait à tomber sur ce post dans le futur):
    Code Windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Constructeur Vehicule()
    // ET NON PAS : Ancetre:Constructeur() comme pour les autres procédure
    .


    Concernant ton poney, je vais devoir être fourbe et tu dire que je n'en t'ai jamais promis un vivant et réel, ce sera donc une peluche que je t'enverrai par la poste si tu me file ton adresse par mp xD Je n'ai qu'une parole malgré tout :p

    Sur cela, je vous remercie pour votre aide à vous deux et passe le sujet en résolue !

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    ... te prends pas la tête, je me contenterais d'un GIF animé !
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    En exclusivité mondiale pour toi et ton aide :

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

Discussions similaires

  1. [2.x] Doctrine héritage count classe fille
    Par Echyzen dans le forum Symfony
    Réponses: 2
    Dernier message: 13/08/2014, 17h27
  2. Lien d'héritage non visible dans la classe fille
    Par trotters213 dans le forum C++
    Réponses: 2
    Dernier message: 15/12/2007, 12h47
  3. Réponses: 10
    Dernier message: 20/09/2006, 17h04
  4. [héritage] requête sur classe fille
    Par Galak extra dans le forum Hibernate
    Réponses: 3
    Dernier message: 25/08/2006, 10h30
  5. Héritage d'un événement pour une classe fille
    Par korntex5 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 16h48

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