5. Méthodes avec renvoi de valeur



Jusqu'ici, vous avez utilisé et créé des méthodes sans renvoi de valeur. Ces méthodes sont signalées par le mot-clé void (ex: void carre()). Ces méthodes correspondent à aux procédures des langages structurés. Ce sont en quelque sorte des sous-programmes : elles peuvent effectuer un certain nombre d'actions (comme nettoyer la fenêtre, dessiner un trait, ...) et/ou peuvent manipuler des variables, tout comme un programme "principal".

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().



Exemple : création d'une méthode qui dessine un triangle équilatéral et qui retourne les coordonnées du plus haut sommet. Le programme principal montre comment cette méthode peut être utilisée.

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 :

MonProg5a.java

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);
    }
}



Exercices

12/12/2000
CLMJ