Locace Posté 25 Novembre 2010 Posté 25 Novembre 2010 Bonjour, Petite question que je me pose : J'aimerais étendre une de mes "classes" (pas bien sur qu'on puisse parler de classe en JS). Pour ça pas de souci, j'utilise ça : function Personnage(){// du code, du code, du code}function Magicien(){// recode, recode, recode}Magicien.prototype = new Personnage(); Là où ça se corse c'est qu'en plus d'étendre la classe Personne en attribuant un métier, j'aimerais aussi lui attribuer une nationalité. Vous voyez le souci ? En fait j'aimerais que la classe Personnes hérite de deux autres classes : une classe de métier et une de nationalité. Le souci étant qu'il n'y a aucun lien entre les classes de nationalité et les classes de métier. Comment feriez vous ? Est-ce possible ? Suis-je assez clair ? Bonne journée et merci.
SStephane Posté 25 Novembre 2010 Posté 25 Novembre 2010 Si j'ai bien compris, tu es dans l'erreur : lorsqu'un objet personne dispose de propriétés "metier" et "nationalite", on parle d'attribut (ou de propriété) et non d'héritage. A mon avis, si tu étends la classe personnage pour chaque métier/nationalité, tu fais une erreur de conception Juste pour la forme : l'héritage multiple est disponible dans certains langages comme C++ (mais rarement utile et surtout pour pour ton utilisation, l'exemple de base est le véhicule amphibie)
Locace Posté 26 Novembre 2010 Auteur Posté 26 Novembre 2010 (modifié) Merci pour ta réponse. Le véhicule amphibie correspond tout à fait à ce que je veux faire. Les métiers et les nationalités ne sont pas des propriété. Enfin je ne crois pas. Chaque métier dispose de méthodes et d'attributs propre. Par exemple, le magicien a une variable reserve_magie et a une méthode lancer_boulerdefeu. D'autres métiers ont d'autre méthodes et d'autres variables. De même pour les nationalités. Un corse dispose de la méthode chant corse. Méthode, qu'un breton n'a pas. Mon but est d'arriver à avoir des instance de magicien breton, de forgeron normand, de magicien savoyard, ... Il me semble donc bien être dans le sujet de l'héritage multiple. Savez-vous comment faire en javascript ? Merci Modifié 26 Novembre 2010 par Locace
Message populaire. SStephane Posté 26 Novembre 2010 Message populaire. Posté 26 Novembre 2010 Merci pour ta réponse. Le véhicule amphibie correspond tout à fait à ce que je veux faire.Les métiers et les nationalités ne sont pas des propriété. Enfin je ne crois pas. Très franchement, ça ne saurait être autre chose, le véhicule amphibie n'a rien à voir : bateau et voiture sont intrinsèquement des véhicules (magicien et francais ne sont pas des personnes...mais des propriétés de personne.) Chaque métier dispose de méthodes et d'attributs propre. Par exemple, le magicien a une variable reserve_magie et a une méthode lancer_boulerdefeu. D'autres métiers ont d'autre méthodes et d'autres variables. Je te fais un exemple d'implémentation en speed, c'est peut être pas le meilleur, mais c'est le premier qui me vient : //class magicienfunction Magicien(){ this.reserve_magie = 100; this.lancer_boulerdefeu = function() { alert('kaboom'); this.reserve_magie--; }}function Garagiste(){ //blabla}function Personnage(_job){ this.metier = {}; switch(_job){ case 'magicien': this.metier = new Magicien(); break; case 'garagiste' this.metier = new Garagiste(); break; } this.metierDo = function(_delegateStr) { if(null!=this.metier[_delegateStr]) this.metier[_delegateStr].call(); else alert('je ne sais pas faire ça'); }}var bobby = new Personnage('magicien');bobby.metierDo('lancer_boulerdefeu'); //-> kaboomvar jeanLouis = new Personnage('garagiste');jeanLouis.metierDo('lancer_boulerdefeu'); // -> je ne sais pas faire ça Voilà comment faire par l'exemple (corrige les erreurs, j'ai codé dans le textarea du forum). TU peux implémenter n'importe quel nationalité/métier de cette manière. De même pour les nationalités. Un corse dispose de la méthode chant corse. Méthode, qu'un breton n'a pas. Mon but est d'arriver à avoir des instance de magicien breton, de forgeron normand, de magicien savoyard, ... Implémente ensuite les nationalités de la même manière Il me semble donc bien être dans le sujet de l'héritage multiple. Toujours pas, pose la question dans un forum de conception si tu veux en avoir le coeur net ! Pour argumenter ce point de vue, je peux ajouter ça : ajoute à tes personnages une race, un sexe, ou n'importe quel autre 'attribut' qui peut générer des fonctionnalités différentes; tu imagines le micmac pour faire hériter ta classe Personnage d'autant de ces 'attributs' ? (car j'espère que tu conviendras qu'il s'agit définitivement d'attributs ! ) 1
Locace Posté 26 Novembre 2010 Auteur Posté 26 Novembre 2010 Merci mille fois pour tout ce code. Je vais me baser là dessus. Il semblerait que je me sois compliqué la vie. Merci encore.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant