Accueil > Programmer avec Java >
Méthodes recevant des arguments
Survol et attentes
Définitions
- Argument
- valeur passé à une méthode lors de l’appel. Cette valeur initialise le paramètre correspondant dans la déclaration de la méthode.
- Paramètre
- variable déclarée dans la signature d’une méthode qui reçoit une valeur lors de l’appel de la méthode. Cette variable est utilisée dans le bloc de code de la méthode et est détruite quand la méthode se termine.
Objectifs d’apprentissage
À la fin de cette leçon vous devrez être en mesure de :
- Distinguer les méthodes qui n’ont pas de paramètres de celles qui en ont.
- Décrire ce qui se passe quand on appelle une méthode en lui passant des arguments.
- Lire et tracer un diagramme de séquence d’exécution pour un programme qui inclut des méthodes avec des paramètres.
Critères de succès
- Je peux implémenter des méthodes avec des paramètres dans mes programmes et reconnaître celles que j’utilise déjà.
Rôle des paramètres
Les paramètres rendent les méthodes plus flexibles. Leur code peut fonctionner avec différentes informations comme entrées, alors au lieu d’écrire une méthode pour chaque entrée possible, on a la possibilité de fournir cette information durant l’appel.
C’est un concept très puissant.
En mathématiques, vous avez quelque chose de similaire avec les fonctions, p. ex. : f(x) = x^2. Cette fonction nous donne le carré de x. x est donc un paramètre de f. En passant différentes valeur de x à la fonction f(x) on obtient différents résultats.
Exemples connus de méthodes avec paramètres
Vous connaissez déjà quelques méthodes avec des paramètres :
- toutes les formes de print“ :
System.out.print("Votre réponse > ")System.out.println("Bonjour " + name + "!")System.out.printf("%S\n", "david")
- créer un nouveau
Scanneravec :new Scanner(System.in) - spécifier le format de nombres sur un objet
Scanner:.useLocale(Locale.CANADA_FRENCH) - faire des calculs avec la classe
Math:Math.pow(2, 3),Math.sqrt(9),Math.abs(-5) - certaines opérations sur des objets
String: comme.charAt(0)
Qu'est-ce que ces exemples ont tous en commun?
Réponse
Il y a quelques indices que ces méthodes prennent des paramètres :
- Il y a toujours quelque chose entre les parenthèses quand on les appelle.
- Les info-bulles de notre éditeur nous montrent la liste des paramètres et les décrivent quand on passe la souris sur le nom de la méthode.

Exemples connus de méthodes sans paramètres
Les méthodes sans paramètres sont appelées avec des parenthèses vides.
Ceux que vous connaissez le mieux sont les méthodes de Scanner :
.next(),.nextLine(),.close()
On a aussi vu quelques méthodes de traitement des String :
.length(),.toUpperCase()
Notez que ces méthodes commencent avec un point . car ils s’appelent suite au nom d’un objet. Elles utilisent l’information qui est déjà dans l’objet (le Scanner, le String) pour faire ce qu’ils ont à faire et n’ont donc pas besoin de paramètres.
Écrire nos propres méthodes avec paramètres
On a déjà vus la structure générale de la déclaration d’une méthode. Ici on ajoute un dernier détail : la liste de paramètres.
Signature de méthode
Voici le gabarit complet pour la déclaration d’une méthode, incluant maintenant les paramètres :
[type de retour] [nom de la méthode] ( [liste de paramètres] ) {
// bloc de code,
// avec instruction `return` au besoin
}
La liste de paramètres a le format suivant, soit une liste de déclarations de variables :
type1 nom1, type2 nom2, type3 nom3, ...
où les types sont ceux qu’on connaît (int, double, String, Scanner, etc.) et les noms sont un nom de variable selon les règles et les conventions qu’on utilise déjà.
Corps de méthode
Le but de déclarer des paramètres est d’avoir des informations qu’on peut manipuler dans le code de la méthode. On ne connaît pas encore la valeur de ces informations, mais on connaît leur type (à cause de la signature). On peut alors travailler librement avec ces variables dans le code comme on le ferait avec n’importe quel autre variable du même type.
Appeller des méthodes avec paramètres
Quand on appelle une méthode qui a déclaré des paramètres dans sa signature, nous devons fournir des informations du type approprié entre les parenthèses. Sinon le programme nous signale une erreur de syntaxe.
Les informations passées durant l’appel s’appellent des arguments.
Par exemple, si nous avons déclaré cette méthode en déclarant un paramètre String name :
void greetWithName(String name) {
System.out.println("Bonjour " + name + "!");
}
Il faut absolument placer une valeur de type String entre les parenthèses durant l’appel, p. ex. :
void main(){
greetWithName("Jean");
greetWithName("Lucie");
greetWithName(); // erreur de syntaxe à cette ligne
}
Différences entre paramètres et arguments
Paramètres
- Une déclaration fixe
- Déclarés dans la signature de la méthode
- Le nom du paramètre est exclusif à la méthode et prend priorité à l’intérieur de la méthode si d’autres variables utilisent le même nom à l’extérieur de la méthode1
Arguments
- Les valeurs peuvent être différentes à chaque appel
- Spécifiées durant l’appel de la méthode
- Si on utilise une variable comme argument, la méthode copie sa valeur pour son exécution et ne change pas la valeur de notre variable
Comment ça marche? Le diagramme de flux
Comme le mécanisme appel-retour était plus explicite dans le diagramme de flux que dans le code, le mécanisme argument-appel l’est aussi.
Regardons donc le diagramme de flux pour l’exemple greetWithName ci-dessus.

Le diagramme de flux nous aide à mieux voir la mécanique argument-paramètre. On voit quelque chose là qui n’est pas aussi apparent dans le code.
Dans l’algorithme pour la méthode :
- la première instruction assigne la valeur reçue à une variable (dans cette exemple,
name), ce qui correspond au paramètre de la méthode - le reste du code est définie selon ce nom de variable
Dans l’algorithme principal du diagramme :
- l’instruction d’appel inclut une information à passer à la méthode, ce qui correspond à l’argument
Dans le code Java pour la méthode greetWithName, l’assignation de la valeur reçue est masquée / implicite.
Dans le diagramme de flux, on doit le mentionner explicitement.
Structure générale pour l’utilisation d’une méthode avec paramètre
Deux exemples
Le programme ci-dessous montre un exemple simple (et banal) de deux méthodes avec des paramètres.
Fichier :
BasicParam.java
void greetWithName(String name) {
System.out.println("Bonjour " + name + "!");
}
int product(int a, int b) {
return a * b;
}
void main() {
String david = "David";
int x = 3;
int b = 5;
greetWithName(david);
System.out.println(product(x, b));
}
Remarquez qu’on a encore placé la méthode main à la fin du fichier.
void greetWithName(String name)
int product(int a, int b)
- Paramètres
int a, int b- s’attend à recevoir deux nombres entiers nommés a et b- Corps
- utilise les variables
aetbdans un calcul - Retour
- retourne le résultat du calcul, un type
int - Appel
- dans
mainavec les variablesx(contient3) etb(contient5); le paramètreaprend la valeur3et le paramètrebprend la valeur5; la valeur de retour est utilisée directement dans une instruction d’affichage
void main()
Ne prend aucun paramètre
Tracer la séquence d’exécution
On commence toujours le programme à main. Le diagramme de séquence d’appel pour le programme dans BasicParam.java serait :
9
10
11
12
13 -> 1
2
13 <- 3
14 -> 5
14 <- 6
15
Pour greetWithName
13 -> 1
est l’appel.
Parce qu’il y a des paramètres, c’est ici qu’on assigne au paramètre name la valeur de l’argument.
13 <- 3
est le retour à l’accolade fermante (retour implicite)
Pour product
14 -> 5
est l’appel.
Parce qu’il y a des paramètres, c’est ici qu’on assigne à a et b les valeurs des arguments.
14 <- 6
affichage dans main de la valeur de retour (retour explicite avec return)
Diagramme de dépendances
On commence à main et regarde quelles méthodes il appelle.
La nouveauté est qu’avec les paramètres, on inclut le type des chaque paramètre dans le bloc de la méthode entre des parenthèses. On peut trouvez cette information dans la signature de chaque méthode mais aussi dans la structure du document.
-
[nom de la méthode]( [liste des types de paramètres] ) : [type de retour]
Voici donc une version possible de ce diagramme. L’ajout des types des paramètres nous indique que chaque méthode dépend sur main pour leur fournir les valeurs String et int pour leurs paramètres. On voit aussi que main devra géré la valeur int retournée par la méthode product.

Exercices
🛠️ Pratique
Travaillez dans le répertoire GitHub partagé par votre enseignant pour la pratique et les exercices
- Ajouter le fichier
BasicParam.javaà votre dossier de pratique. - Changer le nom de la variable
davidà un nom de votre choix. - Modifier le programme afin d’utiliser un Scanner dans
mainafin d’ajouter de l’interaction pour obtenir les valeurs d’un nom et des deux nombres. - Changer le type de nombre dans la méthode
productà desdouble. - Créer une nouvelle méthode
double add(double, doubl)en complétant sa signature. Il devrait ajouter la valeurs des deux paramètres et retourner le résultat au programme. - Mettre à jour de diagramme de dépendance (vous pouvez télécharger l’exemple dans les notes avec un clic droit > enregistrer sous) et l’ajouter à votre dossier
diagrammes. - Enrichissement : créer une nouvelle méthode
double linear(double, double, double)qui utilisera les méthodesaddetproductpour calculer le résultat dey = mx + b. Les trois paramètres sont utilisés pourm,xetbrepectivement. La méthode retourne la valeur dey. Tester cette méthode dansmainMettre à jour le diagramme de dépendances.
-
On étudie ce type de priorité en plus de détails dans la prochaine leçon ↩

