|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| POO - Héritage sur 3 niveau qui n'abouti pas |
| Iniciado por Gurdarr, 18,mar. 2019 18:22 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 237 mensajes |
|
| Publicado el 18,marzo 2019 - 18:22 |
Bonjour,
J'ai 3 classes qui hérite l'une de l'autre (jusqu'à la tous va bien ) que l'on nommera GrandMere / Mere / fille
J’instancie volontairement l'objet Fille qui ne surcharge que deux méthodes de la classe Mere qui elle même surcharge le traitement principale de la classe GRandMère
Ce qui donne le shéma suivant
GRandMère est un classe Traitementprincipal() est une propriété { :TraitementSecondaire() }
TraitementSecondaire() est une propriété protégé
Mere est une classe hérite de GRandMère TraitementSecondaire() est une propriété { //pour faire simple ancetre:TraitementSecondaire() :TraitementSuplémentaire() } TraitementSuplémentaire() est une propriété protégé
Fille est une classe hérite de Mère TraitementSuplémentaire() est une propriété protégé
Du coup mon erreur est quand j'exécute le code suivant c'est TraitementSuplémentaire() de la Mére qui est joué 
MonTest est un Fille MonTest:Traitementprincipal()
MonTest est un GRandMère dynamique MonTest = new Fille MonTest:Traitementprincipal()
En fait je sais pas si c'est normal mais j'aimerai bien comprendre pourquoi si vous vous savez.
Amicalement |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
| | |
|
| | |
| |
Miembro registrado 237 mensajes |
|
| Publicado el 20,marzo 2019 - 11:22 |
Merci François C.
Mais je ne surcharge pas traitementPrincipal dans cFille
J'ai deux propriétés traitementPrincipal et traitementSecondaire seul traitementSecondaire est surchargée
Cfille.traitementPrincipal() passe par cMere.traitementPrincipal ce qui est parfaitement logique car je n'ai pas changer cette partie
Cependant cMere.traitementPrincipal exécute la propriété traitementSecondaire qui elle est surchargée
Hors je ne redescend pas dans cfille.traitementSecondaire() mais je reste bien dans cMere.traitementSecondaire()
JE devrais avoir
Cfille.traitementPrincipal() ==> cMere.traitementPrincipal ==> cfille.traitementSecondaire() et j'ai Cfille.traitementPrincipal() ==> cMere.traitementPrincipal ==> cMere.traitementSecondaire()
Ma surcharge de traitementSecondaire n'est plus pris en compte
Je pense que je peux solutionner mon problème en faisant une surcharge de traitementPrincipal dans cfille mais sa va doubler mon code pour rien... |
| |
| |
| | | |
|
| | |
| |
| Publicado el 20,marzo 2019 - 15:47 |
De mon expérience de POO en Windev, une bonne recompilation du projet règle parfois les comportements bizarres 
eric l.
> Le 20/03/2019 à 10:22, Gurdarr a écrit :
Merci François C.
Mais je ne surcharge pas traitementPrincipal dans cFille J'ai deux propriétés traitementPrincipal et traitementSecondaire seul traitementSecondaire est surchargée
Cfille.traitementPrincipal() passe par cMere.traitementPrincipal ce qui est parfaitement logique car je n'ai pas changer cette partie Cependant cMere.traitementPrincipal exécute la propriété traitementSecondaire qui elle est surchargée
Hors je ne redescend pas dans cfille.traitementSecondaire() mais je reste bien dans cMere.traitementSecondaire()
JE devrais avoir
Cfille.traitementPrincipal() ==> cMere.traitementPrincipal ==> cfille.traitementSecondaire() et j'ai Cfille.traitementPrincipal() ==> cMere.traitementPrincipal ==> cMere.traitementSecondaire()
Ma surcharge de traitementSecondaire n'est plus pris en compte
Je pense que je peux solutionner mon problème en faisant une surcharge de traitementPrincipal dans cfille mais sa va doubler mon code pour rien... |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|