Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
INF1120 – Programmation I
Mélanie Lord
Université du Québec à Montréal
lord.melanie@uqam.ca
INF1120 - Programmation I : Les méthodes en Java
Introduction
Une méthode est comme un spécialiste…
2
INF1120 - Programmation I : Les méthodes en Java
constantes locales
variables locales
instructions
3
INF1120 - Programmation I : Les méthodes en Java
Style Java :
- Nom des méthodes : lettres minuscules, sauf pour la première lettre du second
mot et des mots subséquents qui forment le nom (comme les noms de variables).
! La définition d'une méthode ne fait rien en soi. Il faut qu'une autre méthode
(la méthode appelante) appelle la méthode (méthode appelée) pour que
cette dernière s'exécute.
o Lors de l'exécution d'un programme, la méthode main est la première appelée (par la JVM).
Ensuite, la méthode main peut appeler d'autres méthodes, qui peuvent à leur tour en appeler
d'autres, et ainsi de suite.
! Pour appeler une méthode, on utilise son nom, et l'on doit lui fournir, entre
les parenthèses, des valeurs (paramètres effectifs) pour chacun des
paramètres formels indiqués dans sa définition (dans le même ordre).
4
INF1120 - Programmation I : Les méthodes en Java
! S'il n'y a aucun paramètre formel dans la définition, on laisse les parenthèses
vides.
! Chaque paramètre effectif doit être compatible par affectation avec son
paramètre formel correspondant.
Rappel conversions implicites légales pour l’affectation
byte -> short -> int -> long -> float -> double
char -> int -> long -> float -> double
! Si la méthode appelée n'est pas dans la même classe que la méthode
appelante, on doit préfixer l'appel du nom de la classe dans laquelle est
définie la méthode appelée.
! Les méthodes avec un type de retour (autre que void) peuvent être utilisées
dans des expressions, comme des valeurs de ce type.
Exemple d'appel :
//Appel de la méthode lireInt, sans paramètre, qui se
//trouve dans la classe nommée Clavier
int i = Clavier.lireInt();
Les définitions des méthodes suivantes, avec les exemples d'appels, se trouvent dans le
fichier ExemplesUtilisationMethodes.java.
5
INF1120 - Programmation I : Les méthodes en Java
/**
* Cette methode affiche un menu de 3 options.
*/
public static void afficherMenu() {
System.out.println("1. Option 1");
System.out.println("2. Option 2");
System.out.println("3. Option 3");
}
/**
* Cette methode marque une pause en demandant a l'utilisateur
* d'appuyer sur la touche [ENTREE] pour continuer.
*/
public static void pause() {
System.out.print("Appuyer sur <ENTREE> pour"
+ " continuer...\n\n" );
Clavier.lireFinLigne();
}
6
INF1120 - Programmation I : Les méthodes en Java
Exemples d'appels :
afficherMenu();
pause();
/**
* Cette methode affiche nbr lignes blanches a l'ecran.
* @param nbr le nombre de lignes blanches a afficher a
* l'ecran.
*/
public static void sautLignes (int nbr) {
for (int i = 0 ; i < nbr ; i++) {
System.out.println();
}
}
7
INF1120 - Programmation I : Les méthodes en Java
/**
* Cette methode affiche les résultats d'un nombre donne de
* lances successifs d'un de.
* Chaque lance donne un nombre entre 1 et 6.
* @param nbr le nombre de lances que l'on veut effectuer.
*/
public static void lancerDe (int nbr) {
int de;
for (int i = 1 ; i <= nbr ; i++) {
de = (int) (Math.random() * (6 - 1) + 1.5);
System.out.println ("Lance # " + i + " : " + de);
}
}
Exemples d'appels :
sautLignes(); //Ne compile pas car il manque un param. effectif
8
INF1120 - Programmation I : Les méthodes en Java
9
INF1120 - Programmation I : Les méthodes en Java
/**
* Cette methode tire un nombre entier au hasard, entre 1
* et 6.
* @return un nombre tire au hasard entre 1 et 6.
*/
public static int lancerDe () {
int de = (int) (Math.random() * (6 - 1) + 1.5);
return de;
}
10
INF1120 - Programmation I : Les méthodes en Java
Exemples d'appels :
11
INF1120 - Programmation I : Les méthodes en Java
12
INF1120 - Programmation I : Les méthodes en Java
Exemples d'appels :
boolean bissex = estBissextile(2017);
int nombre;
System.out.print("Entrez une annee: ");
nombre = Clavier.lireInt();
if (estBissextile(nombre)) {
System.out.println("bissextile");
} else {
System.out.println("non bissextile");
}
13
INF1120 - Programmation I : Les méthodes en Java
/**
* Cette methode calcule le perimetre d'un rectangle (2 *
* base + 2 * hauteur).
* @param base la base du rectangle.
* @param hauteur la hauteur du rectangle.
* @return le perimetre du rectangle (2 * base + 2 *
* hauteur).
*/
public static double perimetreRectangle (double base,
double hauteur) {
return (2 * base + 2 * hauteur);
}
Exemples d'appels :
14
INF1120 - Programmation I : Les méthodes en Java
/**
* Cette methode saisit et valide le choix de l'utilisateur
* entre borneInf et borneSup.
* @param msgSoll le msg de sollicitation du choix de l'utilisateur.
* @param msgErr le msg d'erreur lorsqu'un choix est invalide.
* @param borneInf la borne inferieure pour un choix valide.
* @param borneSup la borne superieure pour un choix valide.
* @return le choix valide de l'utilisateur, entre borneInf et
* borneSup.
*/
public static char validerChoixMenu (String msgSoll, String
msgErr, char borneInf, char borneSup) {
char choixMenu;
System.out.print ("\n" + msgSoll);
choixMenu = Clavier.lireCharLn();
15
INF1120 - Programmation I : Les méthodes en Java
Exemples d'appels :
16
INF1120 - Programmation I : Les méthodes en Java
Soit la méthode suivante qui retourne différents résultats selon différentes conditions…
Une bonne pratique de programmation consiste à utiliser une seule instruction return,
à la toute fin de la méthode, comme ceci :
17
INF1120 - Programmation I : Les méthodes en Java
Exemple d'appel :
System.out.println(salaire(56, 45.67));
18
INF1120 - Programmation I : Les méthodes en Java
Par valeur
! C'est la valeur du paramètre effectif qui est affecté au paramètre formel. On travaille
sur une copie.
19
INF1120 - Programmation I : Les méthodes en Java
Exemple :
Soit le code suivant où la méthode main appelle la méthode
testPassageParam :
20
INF1120 - Programmation I : Les méthodes en Java
21
INF1120 - Programmation I : Les méthodes en Java
22
INF1120 - Programmation I : Les méthodes en Java
//ou
//return entier - 2;
}
23
INF1120 - Programmation I : Les méthodes en Java
24
INF1120 - Programmation I : Les méthodes en Java
Éviter l’utilisation de variables globales !
26
INF1120 - Programmation I : Les méthodes en Java
if (cpt != 0) {
moyenne = somme / cpt;
}
return moyenne;
}
27
INF1120 - Programmation I : Les méthodes en Java
Exemple :
Soit les deux méthodes suivantes utilisées dans la classe
CalculerSalaireAvecMethodesV1.java
System.out.print(MSG_SOL_NBR_HEURES);
nbrHr = Clavier.lireDouble();
29
INF1120 - Programmation I : Les méthodes en Java
System.out.print(MSG_SOL_TAUX_HORAIRE);
tauxHr = Clavier.lireDouble();
Solution : faire une seule méthode qui prend en paramètres les valeurs qui
varient d’une méthode à l’autre, et réutiliser cette méthode pour valider et le
nombre d'heures, et le taux horaire.
30
INF1120 - Programmation I : Les méthodes en Java
System.out.print(msgSoll);
nbrReel = Clavier.lireDouble();
On peut alors réutiliser cette méthode pour valider tout nombre réel entre
une borne min et une borne max.
Exemples :
nbrHeures = validerReel(MSG_SOL_NBR_HEURES, MSG_ERR_NBR_HEURES,
NBR_HR_MIN, NBR_HR_MAX);
tauxHoraire = validerReel(MSG_SOL_TAUX_HORAIRE, MSG_ERR_TAUX_HORAIRE,
TAUX_MIN, TAUX_MAX);
Exercice 1
Exercice 2
32
INF1120 - Programmation I : Les méthodes en Java
Exercice 3
/**
* Cette methode affiche la presentation de ce programme.
*/
public static void presenterLogiciel() {...}
/**
* Cette methode affiche un message disant a l'utilisateur
* d'appuyer sur ENTREE pour continuer.
*/
public static void pause() {...}
/**
* Cette methode affiche un message de fin du programme.
*/
public static void finProgramme() {...}
33
INF1120 - Programmation I : Les méthodes en Java
/**
* Cette methode transforme carMin en majuscule, si carMin
* est une lettre minuscule, et affiche la majuscule
* correspondante. Sinon, la methode affiche un message
* d'erreur.
* @param carMin le caractere a transformer en majuscule
* (si possible).
*/
public static void afficherMajuscule(char carMin) {...}
/**
* Saisit et valide un caractere entre min et max inclusivement.
* @param msgSoll le message de sollicitation du caractere.
* @param msgErr le message d'erreur lorque le caractere
* n'est pas entre min et max.
* @param min la borne inferieure valide pour le caractere saisi.
* @param max la borne superieure valide pour le caractere saisi.
* @return le caractere saisi qui est entre min et max inclusivement.
*/
public static char validerCaractere(String msgSoll, String msgErr,
char min, char max) {...}
34
INF1120 - Programmation I : Les méthodes en Java
Écrivez un programme (une méthode main) qui demande à l'utilisateur d'entrer une
lettre minuscule et qui affiche ensuite son équivalent en majuscule.
35
INF1120 - Programmation I : Les méthodes en Java
Solution exercice 1
36
INF1120 - Programmation I : Les méthodes en Java
Solution exercice 2
System.out.print(msgSoll);
c = Clavier.lireCharLn();
return c;
}
37
INF1120 - Programmation I : Les méthodes en Java
Solution exercice 3
presenterLogiciel();
pause();
do {
//Saisir et valider une lettre minuscule
lettreMin = validerCaractere("Entrez une lettre minuscule : ",
"\nErreur, le caractere doit etre une lettre minuscule. "
+ "Recommencez !", 'a', 'z');
finProgramme();
}
38
INF1120 - Programmation I : Les méthodes en Java
À l’intérieur d’une même classe, les méthodes doivent toutes posséder des
signatures différentes.
39
INF1120 - Programmation I : Les méthodes en Java
Exemples
Entête Signature
1 void machin (int x) machin (int)
2 void machin (int y) machin (int)
3 void machin (String x) machin (String)
4 String machin (String x) machin (String)
5 void machin (int x, int y) machin (int, int)
6 void chose (int x, int y) chose (int, int)
41
INF1120 - Programmation I : Les méthodes en Java
Par exemple :
43
INF1120 - Programmation I : Les méthodes en Java
Exemple 1
public class SurdefinitionMethodes {
44
INF1120 - Programmation I : Les méthodes en Java
Exemple 2
45
INF1120 - Programmation I : Les méthodes en Java
Exemple 3
public class SurdefinitionMethodes3 {
46
INF1120 - Programmation I : Les méthodes en Java
Exercices
Voir le fichier MethodesJava_ExercicesEtSolutions.pdf
47