Webmaster Hub: Hériter de deux "class" soeurs - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Hériter de deux "class" soeurs

#1 L'utilisateur est hors-ligne   Locace 

  • Groupe : Webmaster Régulier
  • Messages : 80
  • Inscrit(e) : 09-décembre 06
  • Genre:Homme
  • Localisation:Hong Kong
  • Société:Indépendant - Création de sites web

Posté 25 novembre 2010 - 13:09

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.
Ce que je fais : Créations de bons sites Internet
Je peux vous aider avec : CSS, Html, eZ Publish, Wordpress ...
Intéressé par CSS3, HTML5, les interfaces, le futur, ...
0

#2 L'utilisateur est hors-ligne   SStephane 

  • Groupe : Fondateur
  • Messages : 460
  • Inscrit(e) : 06-février 09
  • Genre:Homme
  • Localisation:Grabels

Posté 25 novembre 2010 - 18:16

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)
_AT_Montpellier
L'héroïsme, c'est la seule manière de devenir célèbre quand on a pas de talent (l'homme aux initiales douteuses)
Venez tester votre niveau de compétence en PHP :-)
0

#3 L'utilisateur est hors-ligne   Locace 

  • Groupe : Webmaster Régulier
  • Messages : 80
  • Inscrit(e) : 09-décembre 06
  • Genre:Homme
  • Localisation:Hong Kong
  • Société:Indépendant - Création de sites web

Posté 26 novembre 2010 - 02:35

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

Ce message a été modifié par Locace - 26 novembre 2010 - 02:38.

Ce que je fais : Créations de bons sites Internet
Je peux vous aider avec : CSS, Html, eZ Publish, Wordpress ...
Intéressé par CSS3, HTML5, les interfaces, le futur, ...
0

#4 L'utilisateur est hors-ligne   SStephane 

  • Groupe : Fondateur
  • Messages : 460
  • Inscrit(e) : 06-février 09
  • Genre:Homme
  • Localisation:Grabels

Posté 26 novembre 2010 - 09:22

Voir le messageLocace, le 26 novembre 2010 - 02:35, dit :

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.)

Citation

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 magicien
function 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'); //-> kaboom

var 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.

Citation

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

Citation

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 !;) )
_AT_Montpellier
L'héroïsme, c'est la seule manière de devenir célèbre quand on a pas de talent (l'homme aux initiales douteuses)
Venez tester votre niveau de compétence en PHP :-)
1

#5 L'utilisateur est hors-ligne   Locace 

  • Groupe : Webmaster Régulier
  • Messages : 80
  • Inscrit(e) : 09-décembre 06
  • Genre:Homme
  • Localisation:Hong Kong
  • Société:Indépendant - Création de sites web

Posté 26 novembre 2010 - 12:12

Merci mille fois pour tout ce code. Je vais me baser là dessus.
Il semblerait que je me sois compliqué la vie.

Merci encore.
Ce que je fais : Créations de bons sites Internet
Je peux vous aider avec : CSS, Html, eZ Publish, Wordpress ...
Intéressé par CSS3, HTML5, les interfaces, le futur, ...
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)