Bonjour,
Je suis occupé à créer une petite application qui joue sur l'héritage et le polymorphisme.
En fait, j'ai des classes et chacune des classes correspond à une fonctionnalité du programme.
Chaque classe hérite d'une classe Token. Chaque classe est définie par un attribut de type String.
Dans la classe Token, j'ai une fonction "getToken(String token)" qui renvoie la sous-classe correspondant au token passé en paramètre.
En code, ça donne, par exemple:
J'aimerai dynamiser la fonction "getToken(String)".Code:public abstract class Token { protected final String token; protected Token(String token) { this.token=token; } public static Token getToken(String token) { switch (token) { case "+": return new Plus(); case "-": return new Moins(); } return null; } } public class Plus extends Token { public Plus() { super(classToken()); } public static String classToken() { return "+"; } } public class Moins extends Token { public Moins() { super(classToken()); } public static String classToken() { return "-"; } }
En effet, si j'ajoute une nouvelle classe par exemple "Fois" dont le code serait "*", je devrai modifier le code de la fonction en ajoutant un nouveau case au switch.
Et je veux pousser le dynamisme à son paroxysme: en effet, je compte mettre la classe Token ainsi que les deux sous classes dans un JAR.
Si un de mes utilisateurs veut créer ses propres tokens (par exemple le token "Sur" qui a le code "/"), il n'a qu'à hériter simplement de ma classe mère Token et de définir la fonction statique "classToken()" et mon propre code aura détecté sa classe (qui est dans un autre JAR évidemment).
J'ai une idée du code que je vais écrire mais il ne me manque la fonction "Class<?>.getSubClasses()" .
J'ai déjà regardé du coté de la réflection mais je ne sais pas comment parvenir à mes fins.
Bien à vous,
Aenonis
-----