
Envoyé par
Razgriz
Je ne vais quand même pas déclarer 2 fois la même méthode, une fois pour les primitifs, et uen fois pour les objets étendus de MathObject (une super classe abstraite avec notement la déclaration de la méthode add et des trucs basiques su style que partagent les objets mathéatiques comme les polynomes, les matrices, les nombre complexes, ...)
Alors la, tout à fait si !! Les nombres sont des MathObjects, non ? Donc tu ne dois pas utiliser de types primitifs, mais des classes qui implémentent MathObject et qui représentent un nombre.
Tu peux écrire une interface que n'implémentent que les classes sur lesquelles tu peux appeler cette fonction. On l'appelle Numeric :
public Resultat<E extends Numeric> computeIntermediaryValues(Polynome<E extends Numeric> p);
Tu devrais regarder et t'inspirer du Collections Framework (package java.util). Les interfaces, les classes, et les utilitaires (classe Collections).
Genre :
- Interface générale (equivalent de Collection) : MathObject qui définit addition, comparaison, etc...
- Des sous interfaces (equivalent de Set, List) : Numeric, Matrix, Polynome <E extends MathObject> définissent les méthodes supplémentaires que peuvent avoir des polynômes, des matrices ou des nombres simples (distances, etc..)
- Des implémentations (réel utilisant un BigDecimal, entier utilisant un BigInteger, ...).
- Des utilitaires (equivalent de Collections) : Classes offrant des méthodes statiques utiles.
Partager