Héritage d'attributs statiques

Héritage d'attributs statiques - Java - Programmation

Marsh Posté le 16-05-2004 à 18:27:22    

Bonjour,
 
Dans ma classe mère, j'ai une variable statique qui est un objet de ma conception. Dans ma classe fille, j'aimerais que cette variable statique soit indépendante de la classe mère.
 
Suis-je obligé de la cloner ?

Reply

Marsh Posté le 16-05-2004 à 18:27:22   

Reply

Marsh Posté le 16-05-2004 à 18:27:52    

oui


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-05-2004 à 18:28:36    

ceci dit elle est pas vraiment statique si conceptuellement tu peux en avoir plusieurs dans le système.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-05-2004 à 18:35:44    

ok, merci.
et donc, dans le bloc d'instruction static{} je suppose ?
 
(réponse en 30 secondes, c'est assez agréable :) )

Reply

Marsh Posté le 16-05-2004 à 19:07:41    

fépéter le code des classes, sans contexte, je peux pas répondre, mais j'ai peur de la fausse-bonne idée.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-05-2004 à 19:14:30    

ouaip, alors :
 


public class Character {
    /** les caractéristiques par défaut de toutes les instances
      * de Character, d'où staticité
      */
    public static Characteristics DEFAULT_CHARACTERISTICS=
        new Characteristics(0.3,
                    100.0,
                    1.0,    
                    1.0,
                    0.5);
}
 
 
 
public class Ennemy extends Character {
    static{
        // ici le clone ?
    }
}
 
 
public class Characteristics {
    public double speed;
    public double health;
    public double endurance;
    public double strength;
    public double range;
     
    public Characteristics(double sp, double l, double e, double s, double r){
        speed=sp;
        health=l;
        endurance=e;
        strength=s;
        range=r;
    }
}


 
voilà, un truc comme ça, avec plein de membres en moins


Message édité par raytaller le 16-05-2004 à 19:24:34
Reply

Marsh Posté le 16-05-2004 à 19:17:49    

je vois pas bien l'intérêt de l'attribut static dans ce cas ...
 
si tu y tiens quand même, pkoi ne pas créer une classe Constants (ou un truc dans le genre) qui contiendra tes attributs static ?

Reply

Marsh Posté le 16-05-2004 à 19:20:05    

pourquoi les caractéristiques ne sont pas directement dans les personnages ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-05-2004 à 19:22:31    

alors, l'atribut statique c'est parce que ces caractéristiques sont les caractéristiques par défaut des instances de Character. Après, je comptais affecter à chaque instance un clone de ces caractéristiques. comme ça j'aurais pu avoir des caracs de base dans ma classe, mais ça n'empeichait pas de les modifier pour chaque instance.
 
et donc, l'idée c'était que les classes filles de Character puissent redéfinir elles mêmes leurs caractéristiques.
Parce que j'ai aussi des héritages de Enemy et donc, chaque classe d'ennemi a forcément des caractéristiques propres.
 
por l'histoire des contantes, j'y ai pensé mais bon, je trouvais ça plus propre qu'une classe ait elle même ses caractéristiques.  
d'ailleurs static ça sert bien à ça nan ?

Reply

Marsh Posté le 16-05-2004 à 19:23:37    

pardon !  
j'avais oublié un static devant Characteristics..
oui là ma question perdait tout son sens..

Reply

Marsh Posté le 16-05-2004 à 19:23:37   

Reply

Marsh Posté le 16-05-2004 à 19:37:29    

oui, tu avais oublié un "static" et même un "final", mais j'ai compris quand même.
 
 
pourquoi ne pas faire un truc style (je le fais que pour speed) :

Code :
  1. public class Character {
  2.   public double getSpeed() {
  3.     return 0.3;
  4.   }
  5. }
  6. public class Ennemy extends Character {
  7. // ici, on écrase getSpeed ou pas, suivant ce qu'on veut.
  8. // si la vitesse dépend la vitesse des parents, on peut l'avoir avec super()
  9. }


évidement, c'est centralisable comme le dit benou :

Code :
  1. public static class GameConstants {
  2.   public static final double DEFAULTSPEED = 0.3;
  3. }
  4. public class Character {
  5.   public double getSpeed() {
  6.     return GameConstants.DEFAULTSPEED;
  7.   }
  8. }


 
l'avantage, c'est qu'on ne préjuge pas du stockage éventuel d'une vitesse dans les instances des sous-classes de Character :

Code :
  1. class CharacterQuiVaMoinsViteDesFois extends Character {
  2.   private double speed = ...;
  3.   public double getSpeed() {
  4.     return speed;
  5.   }
  6. }


Message édité par nraynaud le 16-05-2004 à 19:37:58

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 16-05-2004 à 19:53:43    

merci !
 
bon, je peux encore faire ça c'est vrai, même si j'aimais bien l'idée que les caractéristiques soient un objet. en fait, c'est pratque parce qu'après, c'est plus propre quand j'applique des bonus sur les caracs etc..
 
sinon, tu penses donc que les autres solutions sont meilleures que le clonage ?
et c'est indispensable le final ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed