Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1794 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Héritage d'attributs statiques

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Héritage d'attributs statiques

n°727493
raytaller
Posté le 16-05-2004 à 18:27:22  profilanswer
 

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 ?

mood
Publicité
Posté le 16-05-2004 à 18:27:22  profilanswer
 

n°727494
nraynaud
lol
Posté le 16-05-2004 à 18:27:52  profilanswer
 

oui


---------------
trainoo.com, c'est fini
n°727496
nraynaud
lol
Posté le 16-05-2004 à 18:28:36  profilanswer
 

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


---------------
trainoo.com, c'est fini
n°727500
raytaller
Posté le 16-05-2004 à 18:35:44  profilanswer
 

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

n°727517
nraynaud
lol
Posté le 16-05-2004 à 19:07:41  profilanswer
 

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
n°727519
raytaller
Posté le 16-05-2004 à 19:14:30  profilanswer
 

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
n°727523
benou
Posté le 16-05-2004 à 19:17:49  profilanswer
 

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 ?

n°727526
nraynaud
lol
Posté le 16-05-2004 à 19:20:05  profilanswer
 

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


---------------
trainoo.com, c'est fini
n°727530
raytaller
Posté le 16-05-2004 à 19:22:31  profilanswer
 

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 ?

n°727534
raytaller
Posté le 16-05-2004 à 19:23:37  profilanswer
 

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

mood
Publicité
Posté le 16-05-2004 à 19:23:37  profilanswer
 

n°727543
nraynaud
lol
Posté le 16-05-2004 à 19:37:29  profilanswer
 

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
n°727558
raytaller
Posté le 16-05-2004 à 19:53:43  profilanswer
 

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 ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Héritage d'attributs statiques

 

Sujets relatifs
méthode qui renvoie tout les attributs d'une classe???Lire les attributs d'archivage d'un fichier
Partage de classes statiques entre web-apps[JAVA] Variables statiques et tomcat
héritage et css(cgi) verifier les attributs provenenant de form = cgi.FieldStorage()
[C++] Pb d'heritage...[C++] Utilisation de librairies statiques VC++ sous Builder C++
Probleme heritage/surcharge d'operateur[LDAP] classe standard avec plusieurs attributs multi valués
Plus de sujets relatifs à : Héritage d'attributs statiques


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR