Je travaille actuellement sur un manuel qui définit une méthode pure comme suit :
"a statique une méthode qui ne dépend que de ses paramètres et d'aucune autre donnée".
Ne serait-il pas possible qu'une méthode d'instance soit une méthode pure sans être statique (tant qu'elle ne modifie pas les paramètres et n'a pas d'effets secondaires comme l'impression) ?
Je sais que pour qu'une méthode soit pure, la valeur de retour ne dépend que des paramètres et d'aucun autre état, alors peut-être que la façon dont les méthodes d'instance sont appelées signifie que les variables prises dans l'objet qui appelle la méthode ne comptent pas comme des paramètres mais comme un autre "état" ?
En dehors de cela, je ne vois pas pourquoi une méthode non statique ne pourrait pas être une méthode pure.
Voici un exemple :
public class Rational {
private int numer;
private int denom;
public Rational() {
this.numer = 0;
this.denom = 1;
}
public Rational(int numer, int denom) {
this.numer = numer;
this.denom = denom;
}
}
Ce qui précède définit un Rational
classe
Vous pourriez alors écrire une méthode dans le Rational
qui renvoie un Rational
en tant qu'objet double
par la "méthode 1" ou la "méthode 2" ci-dessous.
Première méthode :
public double toDouble() {
double x = this.numer;
double y = this.denom;
double fprat = x / y;
return fprat;
}
Deuxième méthode :
public static double toDouble(Rational rational)
{
double x = rational.numer;
double y = rational.denom;
double fprat = x / y;
return fprat;
}
Elles font essentiellement la même chose, mais l'une est une méthode statique et l'autre une méthode d'instance, de sorte que leurs appels seraient dans un format différent. La méthode deux est certainement une méthode pure mais la méthode une, qui est non statique, serait-elle également définie comme une méthode pure dans ces circonstances ?