Re: [POO] Classes abstraites
Citation:
Envoyé par GLDavid
Salut
J'ai un petit souci d'implémentation. Soit une classe Symbol abstraite. De cette classe, descendent 2 autres classes : Nucleotid et AminoAcid (c'est de la bioinfo, oui, oui, mais ne fuyez pas, s'il vous plait). J'ai une autre classe abstraite qui s'appelle Sequence. Or dans cette classe, j'ai écris des méthodes telles que :
Code:
1 2 3 4 5 6 7 8 9
|
protected void setSequence(String seq){
char[]array = seq.toCharArray();
this.sequence = new java.util.ArrayList(array.length);
for(int i = 0; i<array.length; i++){
this.sequence.add(i, new Symbol(array[i]));
}
} |
Bien sûr, pour le compilo, je n'ai pas le droit d'écrire new Symbol(array[i]) car :
Code:
1 2
|
Cannot instantiate the type Symbol |
Donc, comment avoir recours à cette classe Symbol dans la classe Sequence pour rester le plus générique possible ?
Merci d'avance de vos réponses.
@++
Hello,
J'ai lu tous les posts de ce thread. Je pense avoir compris la problematique... Donc je me risque à proposer une solution.
Tu pourrais ecrire une classe factory de Symbole que tu passerais en parametre de ta methode setSequence.
Code:
1 2 3 4 5 6 7 8 9
|
protected void setSequence(String seq,SymbolFactory symbolFact){
char[]array = seq.toCharArray();
this.sequence = new java.util.ArrayList(array.length);
for(int i = 0; i<array.length; i++){
this.sequence.add(i, symbolFact.getNewSymbol(array[i]));
}
} |
En instanciant ta factory tu lui indiquerais le type de symbol qu'elle doit créer.
par exemple (ce n'est qu'un exemple à affiner peut etre) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public class SymbolFactory {
private final String typeSelect;
public SymbolFactory(String symbolType)
{
typeSelect = symbolType;
}
public Symbol getNewSymbol(char[] array){
// soit par un system switch case sur le typeSelect
// ou alors par instanciation dynamique
//tu peux generer des symboles à la demande
}
}
} |
Cela te permettrai de rester générique par rapport à ta classe Symbol et Sequence.
Maintenant pour le renseignement des différents symboles disponibles dans ta factory, tu peux gérer ca de manière externaliser dans un fichier, xml par exemple. cela te permettrai de pourvoir rajouter des types de symbole sans modifier le code de ta factory.
Voila j'espère que cela répondra à ton besoin, si tu as des questions n'hesites pas!!
:D :D