• Aucun résultat trouvé

Tout d' abord, il y a le mot clé public. C'est ce qui définit la portée de la méthode. Nous y reviendrons lorsque nous programmerons des objets.

Ensuite il y a static. Nous y reviendrons aussi.

Juste après, nous voyons double. Il s'agit du type de retour de la méthode. Pour faire simple, ici, notre méthode va renvoyer un double !

Il y a ensuite le nom de la méthode. C'est avec ce nom que nous l'appellerons.

Puis, il y a les arguments que la méthode prend. C'est en fait les paramètres dont la méthode a besoin pour travailler. Ici, nous demandons d'arrondir le double A avec B chiffres derrière la virgule !

Et vous pouvez voir, à l'intérieur de la méthode, une instruction return. C'est cette instruction qui effectue le renvoi de la valeur, ici, un double.

Dans ce chapitre, nous allons voir les différents types de renvois ainsi que les paramètres qu'une méthode peut prendre. Vous devez savoir deux choses concernant les méthodes :

elles ne sont pas limitées en nombre de paramètres il y a trois grands types de méthodes :

les méthodes qui ne renvoient rien. Elles sont de type void. Ces types de méthodes n'ont pas d'instruction

return !

les méthodes qui retournent des types primitifs (double, int...). Elles sont de type double, int, char... Celles-ci ont une instruction return.

des méthodes qui retournent des objets. Par exemple, une méthode qui retourne un objet de type String. Celles-ci aussi ont une instruction return.

Pour le moment, nous ne faisions que des programmes comportant une classe. Celle-ci ne comportant qu'une méthode : la méthode main.

Le moment est donc venu de créer vos propres méthodes. Que vous ayez utilisé la méthode arrondi dans votre TP ou non, vous avez du voir que celle-ci se place à l'extérieur de la méthode main, mais dans votre classe !

Si vous placez une de vos méthodes à l'intérieur de la méthode main ou à l'extérieur de votre classe : LE PROGRAMME NE COMPILERA PAS ! !

Bon, d'accord ! C'est enregistré. Mais concrètement... À quoi vont nous servir ces méthodes ?

Dites-vous bien qu'un développeur est de nature assez feignante... Sans déconner. Il s'est vite aperçu qu'il y avait du code redondant dans ses programmes... Des morceaux de code qui faisaient toujours la même chose et qui n'avaient, comme seule différence, la (ou les) variable(s) qu'ils traitaient.

Vu que nous venons de voir les tableaux, nous allons donc faire des méthodes concernant ces derniers ! Vous devez certainement vous rappeler de la façon de parcourir un tableau...

Et si nous faisions une méthode qui permette d'afficher le contenu d'un tableau sans que nous soyons obligés de retaper la portion de code contenant la boucle ? Je me doute que vous n'en voyez pas l'intérêt maintenant car, mis à part les plus courageux d'entre vous, vous n'avez fait qu'un ou deux tableaux de votre main lors de la partie précédente. Et si je vous demande de déclarer 22 tableaux, si je vous dis : "Allez, bande de ZérOs ! Parcourez-moi tout ça !"

Vous n'allez tout de même pas faire 22 boucles for ! De toute façon, je vous l'interdis ! Nous allons faire une méthode. Celle- ci va :

prendre notre tableau en paramètre (ben oui... c'est lui que nous voulons parcourir), parcourir notre tableau à notre place,

faire tous les System.out.println(), ne rien renvoyer.

Avec ce que nous avons défini, nous savons donc que notre méthode sera de type void, qu'elle prendra un tableau en

paramètre (pour le moment, on travaillera avec des tableaux de String) et le contenu vous vous doutez de ce que ça va être... Une boucle. Cette fameuse boucle que nous ne serons plus obligés de répéter autant de fois que de tableaux de String ! Ce qui va nous donner :

static void parcourirTableau(String[] tab)

{

for(String str : tab)

System.out.println(str);

}

Et voici un exemple de code entier : Code : Java

public class Sdz1 {

public static void main(String[] args)

{

String[] tab = {"toto", "tata", "titi", "tete"};

parcourirTableau(tab);

}

static void parcourirTableau(String[] tabBis)

{

for(String str : tabBis)

System.out.println(str);

} }

Je sais que ça vous trouble encore, mais sachez que les méthodes ajoutées dans la classe main doivent être déclarées static ! Fin du mystère lors de la programmation orientée objet !

Bon. Vous voyez que la méthode parcourt le tableau passé en paramètre. Si vous créez plusieurs tableaux et appelez la méthode avec ces derniers, vous vous apercevrez que la méthode affiche le contenu de chaque tableau !

Voici une méthode au même effet que la méthode parcourirTableau, à la différence que celle-ci retourne une valeur. Ici, une chaîne de caractères !

Code : Java

static String toString(String[] tab) {

System.out.println("Méthode toString() ! ! !\n--- ---");

String retour = "";

for(String str : tab)

retour += str + "\n";

return retour; }

Et voici un code complet : Code : Java

public static void main(String[] args)

{

String[] tab = {"toto", "tata", "titi", "tete"};

parcourirTableau(tab);

System.out.println(toString(tab)); }

static void parcourirTableau(String[] tab)

{

for(String str : tab)

System.out.println(str);

}

static String toString(String[] tab)

{

System.out.println("Méthode toString() ! ! !\n---- ---");

String retour = "";

for(String str : tab)

retour += str + "\n"; return retour; } }

Vous voyez que la deuxième méthode retourne une chaîne de caractères que nous devons afficher à l'aide de l'instruction

System.out.println(). Nous affichons la valeur renvoyée par la méthode toString(). Alors que la méthode

parcourirTableau, elle, écrit au fur et à mesure le contenu du tableau dans la console !

Notez que j'ai ajouté une ligne d'écriture dans la console dans la méthode toString() afin de vous montrer où était appelée cette dernière.

L'instruction System.out.println() est très pratique pour déboguer vos programmes ! Dans une méthodes, l'utilisation de cette instruction peut faire ressortir des erreurs de conception ou de développement !

Il nous reste un point important à aborder.

Imaginez un instant que vous ayez plusieurs types d'éléments à parcourir ! Des tableaux à une dimension, mais aussi d'autres à deux dimensions, et même des objets comme des ArrayList (nous les verrons, ne vous inquiétez pas...). Sans aller si loin. Vous n'allez pas donner un nom différent à la méthode parcourirTableau à chaque type primitif !

Vous avez dû remarquer que la méthode que nous avons créée ne prend qu'un tableau de String en paramètre ! Pas de tableau d'int ni de long.

Si seulement nous pouvions utiliser la même méthode pour différents types de tableaux ! C'est là qu'entre en jeu ce qu'on appelle : la surcharge.

La surcharge de méthode