Autre [RESOLU]Interrogation à propos de l'héritage en ActionScript

Inscrit
15 Avril 2011
Messages
457
Reactions
1
#1
Bonjour,

Je m'interroge depuis un moment sur un problème de déserialisation de paquet au moment du changement de map (ou d'entrée en jeu). Ce n'est pas vraiment un problème étant donné que je ne suis pas bloqué mais plutôt une incompréhension.

Dans le message MapComplementaryInformationsDataMessage, on lit tout un tas d'informations à propos de la map et des entités qui s'y trouvent. Parmi elles, se trouve un vecteur de GameRolePlayActorInformations. Lorsque je déserialize la classe GameRolePlayActorInformations, je tombe sur sa classe mère, GameContextActorInformations, et c'est tout. Or, d'après le sniffeur d'Alex, il y a davantage d'informations à lire dans cette partie. Je cherche un peu, et je trouve une arborescence plus profonde que celle déduite.

GameContextActorInformations <-- GameRolePlayActorInformations <-- GameRolePlayNamedActorInformations <-- GameRolePlayHumanoidInformations <-- GameRolePlayCharacterInformations

Ma question est, comment savoir que GameRolePlayActorInformations a une classe fille (et ainsi de suite) ? Sachant qu'on doit lire un vecteur de GameRolePlayActorInformations dans MapComplementaryInformationsDataMessage, comment se fait-il que l'on doive descendre dans les filles ?!

La logique de la POO voudrait qu'on connaisse ses "parents" mais jamais ses "enfants".

Merci de m'éclairer :D
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#2
Re: Interrogation à propos de l'héritage en ActionScript

Hum, en fait je pense avoir trouvé. Les méthodes deserialize() et serialize() sont surchargées par les classes filles, ainsi c'est la méthode la plus basse dans la hiérarchie qui est appelée, si quelqu'un pouvait confirmer car je ne suis pas sûr. Normalement, cela dépend du type déclaré et dans mon cas, c'est GameRolePlayActorInformations le type déclaré (or ce n'est absolument pas le plus bas).
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#3
Re: Interrogation à propos de l'héritage en ActionScript

Salut, Oui, si tu regarde le code source de dofus tu vois : "super.serializeAs" ça permet juste d'appelé le Serialize (Ou Deserialize) De la classe fille :)
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#4
Re: Interrogation à propos de l'héritage en ActionScript

Tu pourrais me montrer un exemple ? Parce que je vois pas dans les sources, et je suis pas d'accord. Le mot-clé "super" désigne le parent donc ça serait contradictoire.
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#5
Re: Interrogation à propos de l'héritage en ActionScript

C'est une règle du polymorphisme, Si tu as instancié la classe fille, en appelant des méthodes depuis sa classe parente, tu exécute ce que la classe fille a implémentée.

En gros, chaque classe fille réécrit l’implémentation de son parent jusqu'à sa racine.
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#6
Re: Interrogation à propos de l'héritage en ActionScript

Oups, C'est bien parent désolé. Mais sinon :

Code:
public function serializeAs_MapComplementaryInformationsDataInHouseMessage(param1:ICustomDataOutput) : void
      {
         super.serializeAs_MapComplementaryInformationsDataMessage(param1);
         this.currentHouse.serializeAs_HouseInformationsInside(param1);
      }
Pour ce qui est des enfants inconnu : "ProtocolTypeManager.GetInstance(_loc14_);"
 
Dernière édition par un modérateur:
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#7
Re: Interrogation à propos de l'héritage en ActionScript

Désolé de pas avoir répondu plus tôt, j'étais occupé.
La réponse était dans le dernier message de Nico, ça n'avait rien à avoir avec mon histoire de fonctions surchargées, c'est juste que j'avais pas fait attention à l'importance de la classe ProtocolTypeManager. Elle contient une fonction getInstance() qui prend en paramètre un protocolId et une classe et qui retourne la bonne classe fille.

Merci pour votre aide.
 
Haut Bas