Les méthodes avec renvoi de valeur correspondent aux fonctions
des langages structurés : elles effectuent un certain nombre d'actions
et produisent un résultat. Par exemple, si on imagine qu'on a un
objet de type compte, on pourrait par exemple avoir une méthode
int
calculerSolde() qui nous donnerait le solde du compte. Ce solde pourrait
alors être utilisé tout de suite ou être stocké
dans une variable pour utilisation ultérieure. int
calculerSolde() signifie que le résultat produit par cette méthode
est un nombre entier.
Exemple:
Compte c;
int soldeFrancsSuisses;
int soldeFrancsFrancais;
soldeFrancsSuisses = c.calculerSolde();
/* on stocke le résultat de la méthode
dans une variable pour l'utiliser plus tard */
soldeFrancsFrancais = soldeFrancsSuisses * 4;
on pourrait aussi utiliser directement utiliser le résultat de la méthode calculerSolde() sans passer par une variable :
Compte c;
int soldeFrancsSuisses;
int soldeFrancsFrancais;
soldeFrancsFrancais = c.calculerSolde() * 4;
Dans le cas de la tortue, on peut imaginer une méthode carre qui renvoit un entier représentant la longueur de la diagonale une méthode triangle qui revoit l'aire du triangle, etc.
Une méthode peut retourner un objet de n'importe quel type. Dans l'exemple ci-dessus, il s'agissait d'un nombre entier, mais ou pourrait avoir aussi une chaîne de caractères, un compte, un tableau, une fenêtre, etc. On peut en voir un exemple avec la méthode Coordonnee position().
class Tortue extends SuperTortue{
Coordonnee triangle(int longueurCote){
tourneDroite(30);
avance(longueurCote);
Coordonnee coord = position();
tourneDroite(120);
avance(longueurCote);
tourneDroite(120);
avance(longueurCote);
tourneDroite(90);
return(coord);
/* l'instruction return sert à rendre le résultat */
}
}
public class MonProg5a{
public static void main(String[] args){
Tortue rosalie = new
Tortue();
Coordonnee c;
c = rosalie.triangle(50);
rosalie.saute(c);
c = rosalie.triangle(50);
rosalie.saute(c);
rosalie.triangle(50);
}
}
Résultat :
Remarque : il aurait aussi été possible d'écrire le programme principal de cette manière :
public class MonProg5a{
public static void main(String[] args){
Tortue rosalie = new Tortue();
rosalie.saute(rosalie.triangle(50));
rosalie.saute(rosalie.triangle(50));
rosalie.triangle(50);
}
}