Locace Posted November 25, 2010 Share Posted November 25, 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. Link to comment Share on other sites More sharing options...
SStephane Posted November 25, 2010 Share Posted November 25, 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) Link to comment Share on other sites More sharing options...
Locace Posted November 26, 2010 Author Share Posted November 26, 2010 (edited) 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 Edited November 26, 2010 by Locace Link to comment Share on other sites More sharing options...
Popular Post SStephane Posted November 26, 2010 Popular Post Share Posted November 26, 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 Link to comment Share on other sites More sharing options...
Locace Posted November 26, 2010 Author Share Posted November 26, 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now