Question de philosophie "héritages"

omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 - 15 déc. 2006 à 11:49
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 - 15 déc. 2006 à 14:17
Bonjour,


Je m'amuse en ce moment sur les transferts de données...

Pour définir la tête des mes trames j'ai créé une classe statique
TrameData que encode et décode mes trame en fonction d'un tableau
d'entiers






public class TrameData{

    int[] size;

    public static String[][] decode(String _S){

         ...

    }

    public static String encode(String[][] _S){

        ...

    }

}

Je crée en suite de nouvelle classes spécifiques qui héritent de trameData.




public class MaTrameZorblub extends TrameData{

    int[] size=new int[]{5,2,17,22,4};

}

L'idée était de définir en static mes trames, mais quand j'appelle :






MaTrameZorblub.


decode("toto");



Le décodage ne se fait pas sur la base du

int[] size spécifié dans

MaTrameZorblub (comme je voudrais) mais ceux de

TrameData (null)


Evidemment je peux mettre une fonction "decode" dans

MaTrameZorblub qui pointe sur


TrameData en lui passant tous les parametres mais mon idée était de limiter au maximum les méthodes

Je pourrai surcharger les methodes mais l'heritage n'a plus d'interet je voudrais une classe


TrameData contenant toutes les méthodes et des classe



MaTrameXXXXX ne contenant que des valeurs;







Je pourrai aussi créer des objets non static mais non car je veux limiter le nombre d'objets (oui je sais je suis suant)


Savez vous comment que je peux faire  ? si une solution existe

5 réponses

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
15 déc. 2006 à 12:01
Yop yop,

pour avoir que du static il faut déjà mettre size en static,
de + si tu veux l initialiser a {5,2,17,22,4} il faudrait faire un

super.size = new int[]{5,2,17,22,4}; (et pas recréer une nouvelle variable size)

A mon avis qui plus est l héritage sert pas a grand chose dans ton cas (t as qu a passer par l ajout du param size dans ta fonction,
si t insiste j te conseillerai plutot

public abstract class TrameData{

public static abstract int[] getSize();

public static String[][] decode(String _S){
...
}
public static String encode(String[][] _S){
...
}
}

et l autre classe

public class MaTrameZorblub extends TrameData{
public static int[] getSize(){
return new int[]{5,2,17,22,4};
}
}

++ Toinou
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
15 déc. 2006 à 12:51
Salut
ne serait-il pas plus propre et plus judicieux d'utiliser un singleton. Tu n'aurais qu'une méthode statique (getInstance), et tes valeurs de tableux seront les mêmes n'importe où tu appelles ton singleton.

Voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
15 déc. 2006 à 13:53
Yop yop,

j pense qu il veut changer la valeur de size suivant le type de trame donc ca changera pas la pb. J suis d accord quand meme que vaut mieux un singleton que du tout static.

++ Toinou
0
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
15 déc. 2006 à 14:13
oui en fait mon int[] size change selon les descriptions de trame... c'est meme la seule chose qui change mains bon mon probleme est purement pratique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
15 déc. 2006 à 14:17
ben ca te va pas ce qu on t as répondu ??
j vois pas trop ce que tu peux faire d autre !! (passe par une factory a la limite !!)
0
Rejoignez-nous