Académique Documents
Professionnel Documents
Culture Documents
2
INTRODUCTION AUX MÉTHODES
3
NOTES
4
TYPES DES METHODES
Methods
Predefined User-defined
Methods Methods
5
EXEMPLE 1
6
APPEL DES MÉTHODES
pass i
pass j
public static void main(String[] args) { public static int max(int num1, int num2) {
int i = 5; int result;
int j = 2;
int k = max(i, j); if (num1 > num2)
result = num1;
System.out.println( else
"The maximum between " + i + result = num2;
" and " + j + " is " + k);
} return result;
}
7
APPEL DES METHODES
i: 5 num1: 5
pass 2
parameters
j: 2 num2: 2
k: 5 result: 5
8
ATTENTION
9
PASSAGE PAR VALEUR/ PASSAGE PAR RÉFÉRENCE
D'OBJET
Il existe deux façons de passer des valeurs ou des données à
une méthode en Java : le passage par valeur et le passage
par objet.
La valeur d'origine n'est pas modifiée dans le passage par
valeur, mais elle est modifiée dans le passage par référence.
Dans ce chapitre, nous ne traiterons que le passage par
valeur.
Pour modifier la valeur d'origine, nous devons utiliser :
IntClass à la place de int
DoubleClass à la place de double
StringBuffer à la place de String
10
PASSAGE PAR VLEUR pass num1
Pass num2
public static void main(String[] args) { public static void swap(int n1, int n2) {
int num1 = 1;
int num2 = 2; int temp;
swap(num1, num2);
temp = n1;
System.out.println( n1 = n2;
"num1= " + num1 + n2 = temp;
"\n num2= " + num2); }
}
num1= 1
num2 = 2
11
PASSAGE PAR VALEUR
Invoke swap
num1 1 Les valeurs de num1 et
swap(num1, num2) num2 sont passées à n1 et
num2 2 n2. L'exécution de l'échange
ne modifie pas num1 et
num2..
Pass by value
n2 2 n2 1
temp 1
12
SURCHARGE DES MÉTHODES
Surcharge de méthode : Création de plusieurs méthodes, au
sein d'une classe, portant le même nom mais ayant des profils
de paramètres différents.
14
INVOCATION AMBIGUË
15
INVOCATION AMBIGUË
16
MÉTHODES AVEC UN NOMBRE VARIABLE DE
PARAMÈTRES (VARARGS)
Syntaxe:
MethodName(data_type … VarName)
Les varargs sont des tableaux, donc nous travaillons avec eux comme
nous le ferions avec un tableau normal.
Vous pouvez les appeler avec 0 ou plusieurs arguments.
Règles :
Chaque méthode ne peut avoir qu'un seul paramètre varargs.
L'argument varargs doit être le dernier paramètre.
17
VARARGS EXEMPLE
18
PORTÉE (IDENTIFIANT LOCAL/GLOBAL)
20
QUELQUES MÉTHODES PRÉDÉFINIES
21
LA CLASSE MATH
LA CLASSE MATH
Constantes de la classe :
PI
E
Méthodes de la classe :
Méthodes trigonométriques
Méthodes exponentielles
Méthodes d'arrondi
Méthodes min, max, abs et random
23
LA CLASSE MATH
Méthodes trigonométriques
sin(double a)
cos(double a)
tan(double a)
acos(double a)
asin(double a)
atan(double a)
24
LA CLASSE MATH
Méthodes exponentielles
exp(double a)
Renvoie e élevé à la puissance de a.
log(double a)
Renvoie le logarithme naturel de a.
pow(double a, double b)
Renvoie a élevé à la puissance de b.
sqrt(double a)
Renvoie la racine carrée de a.
25
LA CLASSE MATH
Méthodes d'Arrondi:
double ceil(double x)
x arrondi vers le haut à son entier le plus proche. Cet entier est retourné en tant
que valeur double.
double floor(double x)
x est arrondi vers le bas à son entier le plus proche. Cet entier est retourné en tant
que valeur double.
int round(float x)
long round(double x)
round(23.56) retourne la valeur 24
round(23.35) retourne la valeur 23
Si x est de type float, la valeur retournée est de type int
Si x est de type double, la valeur retournée est de type long 26
LA CLASSE MATH
max(a, b) et min(a, b)
Retourne le maximum ou le minimum de deux paramètres.
abs(a)
Retourne la valeur absolue du paramètre.
random()
Retourne une valeur double aléatoire dans l'intervalle [0.0, 1.0].
27
EXERCICE 1
CALCUL DE LA MOYENNE ET DE L'ÉCART-TYPE
Écrivez un programme qui génère 10 nombres aléatoires et calcule
la moyenne et l'écart-type.
𝑥 est la moyenne
S est l’écart type
𝑛
𝑖=1 𝑥𝑖
𝑥=
𝑛
28
LA CLASSE CHARACTER
LA CLASSE CHARACTER
30
LA CLASSE CHARACTER
31
LA CLASSE CHARACTER
32
EXERCICE 2 :
COMPTER LE NOMBRE DE LETTRES ET DE
CHIFFRES DANS UNE CHAÎNE DE CARACTÈRES
Écrivez un programme qui lira une chaîne de caractères de
l'utilisateur, comptera le nombre de lettres et de chiffres, puis
l'affichera à l'écran.
33
LA CLASSE STRING
LA CLASSE STRING
CONSTRUCTION DE CHAÎNES DE CARACTÈRES
String newString = new String(stringLiteral);
35
LA CLASSE STRING
Indices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
message W e l c o m e t o J a v a
String s3 = s1 + s2;
s1 = “Hello“
s2 = “ World!“
S3 = “Hello World!”
37
LA CLASSE STRING
EXTRAIRE UNE SOUS CHAINE
String s1 = "Welcome to Java";
String s2 = s1.substring(0, 11) + "HTML";
Indices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
s1 W e l c o m e t o J a v a
Indices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
S2 W e l c o m e t o H T M L
s1.substring(0, 11)
38
LA CLASS STRING - COMPARAISONS
Egalité:
String s1 = "welcome";
String s2 = "welcome";
if (s1.equals(s2)){
// s1 and s2 have the same contents
}
if (s1 == s2) {
// it compares addresses (thus it will always give false)
}
39
LA CLASSE STRING
COMPARAISONS
compareTo(String str)
Comparer deux chaînes de caractères lexicographiquement. Chaque caractère des deux chaînes est
converti en une valeur Unicode pour la comparaison
String s1 = "Welcome";
String s2 = "welcome";
if (s1.compareTo(s2) > 0) {
// s1 is greater than s2
}
else if (s1.compareTo(s2) == 0) {
// s1 and s2 are equal
}
else
// s1 is less than s2
40
CLASSE STRING
CONVERSION
toLowerCase ()
Convertit l'alphabet de la chaîne en minuscules
toUpperCase ()
Convertit l'alphabet de la chaîne en majuscules
trim ()
Élimine les espaces en début et en fin de chaîne
str W e l c o m e t o J a v a
43
CLASSE STRING
CONVERTIR DIFFÉRENTS TYPES EN CHAÎNE DE
CARACTÈRES
public static String valueOf(Object o)
La méthode convertit différents types de valeurs (booléen, char, char[], int, long, float, double) en
chaîne de caractères.
int value=30;
String s1=String.valueOf(value);
System.out.println(s1+10);//concatenating string with 10
boolean bol = true;
boolean bol2 = false;
String s1 = String.valueOf(bol); 3010
String s2 = String.valueOf(bol2); true
false
System.out.println(s1);
44
System.out.println(s2);
LA CLASSE STRING
ANALYSE DES CHAÎNES NUMÉRIQUES
Une chaîne ne contenant qu'un entier ou un nombre décimal est
appelée une chaîne numérique. Exemple :
Integer.parseInt(strExp)
int x = Integer.parseInt(“6723”) x = 6723
Float.parseFloat(strExp)
float f = Float.parseFloat(“-4.2”) f = -4.2
Double.parseDouble(strExp)
double d = Double.parseDouble(“345.28”) d = 345.28
Notez que Integer, Float et Double sont des classes qui
contiennent des méthodes pour convertir une chaîne numérique
en un nombre.
45
EXERCISE 3:
CHAÎNE PALINDROME
Écrivez une méthode qui retournera true si un nombre donné est un
palindrome, sinon false : un nombre palindrome se lit de la même
manière de gauche à droite et de droite à gauche.
46
REMARQUES IMPORTANTES
Pour utiliser l'une des méthodes prédéfinies mentionnées précédemment, vous n'avez
pas besoin d'inclure de package ! Puisque leurs classes (Math, Character, String,
Integer, Double, Float) sont incluses dans le package (java.lang) qui est implicitement
inclus dans n'importe quelle classe Java.
La syntaxe pour utiliser les méthodes statiques :
Nom_De_Classe.nom_de_la_méthode()
Math.abs(-5)
•Toutes les méthodes de Math sont statiques.
Pour utiliser les méthodes non statiques : vous devez définir un objet du type de
classe donné, puis vous pouvez accéder aux méthodes en utilisant le nom de l'objet.
•String str = "Java is Fun!";
•str.substring(0, 7)
Le point (.) en Java est l'opérateur d'accès aux membres. 47
LES METHODS STATIQUES
QU'EST-CE QUE "STATIC" ?
49
VARIABLE STATIQUE
50
EXEMPLE 1 : STATIQUE VS NON-STATIQUE
51
class Student{
int rollno;//instance variable
String name;
static String college ="IT";//static variable
//constructor
Student(int r, String n){
rollno = r;
name = n;
}
//method to display the values
void display (){System.out.println(rollno+" "+name+" "+college);}
}
//Test class to show the values of objects
public class TestStaticVariable1{
public static void main(String args[]){
Student s1 = new Student(111,“Ahmed");
Student s2 = new Student(222,“Khouloud");
//we can change the college of all objects by the single line of code
//Student.college="BBDIT";
s1.display();
52
s2.display(); } }
College = “IT”
Class Area
id= 222
name= “Ahmed”
id= 333
S2
name= “Khouloud”
S1
Heap Memory
53
Stack Memory
53
EXEMPLE 2
class Counter{
int count=0;
//will get memory each time when the instance is create
d
Counter(){
count++; //incrementing value
System.out.println(count);
}
Counter(){
count++;//incrementing the value of static variable
System.out.println(count);
}
55
MÉTHODE STATIQUE
Cela est dû au fait qu'un objet n'est pas nécessaire pour appeler
une méthode statique. Si c'était une méthode non statique, le JVM
créerait d'abord un objet puis appellerait la méthode main(), ce
qui entraînerait le problème d'une allocation de mémoire
supplémentaire !
58
LES FICHIERS
LECTURE/ÉCRITURE DEPUIS/DANS UN FICHIER
1. Importez les packages nécessaires pour la lecture/écriture.
Import java.io.*;
Import java.util.*;
2. Créez et associez les objets appropriés avec les sources d'entrée/sortie.
Scanner inFile = new Scanner(new FileReader(“FileName.txt”));
PrintWriter outFile = new PrintWriter (“outputFile.txt”);
3. Utilisez les méthodes appropriées associées aux objets créés à l'étape 2 pour l'entrée/sortie
de données.
Vous utiliserez les mêmes méthodes prédéfinies associées à Scanner que nous avons étudiées
dans le Chapitre 1 :
inFile.next()
inFile.nextLine()
inFile.nextInt()
inFile.nextDouble()
60
etc
LECTURE/ÉCRITURE DEPUIS/DANS UN FICHIER
Pour parcourir votre fichier jusqu'à la fin de fichier (EOF), vous utiliserez la
méthode prédéfinie suivante à l'intérieur d'une boucle :
inFile.hasNext()
et les mêmes méthodes prédéfinies pour la sortie :
outFile.print()
outFile.println()
outFile.printf()
Votre méthode principale (main) devrait (throws FileNotFoundException)
public static void main(String[] args) throws FileNotFoundException {}
Fermer les fichiers:
inFile.close();
outFile.close(); 61
EXEMPLE
62
REMARQUES
Si le fichier d'entrée/sortie est situé dans le même dossier de projet, vous
n'avez pas besoin de spécifier le chemin complet du fichier.
Scanner inFile = new Scanner(new
FileReader("C:/Users/Documents/NetBeansProjects/lab3/students.txt"));
Le fichier de sortie n'a pas besoin d'exister avant d'être ouvert.
S'il n'existe pas, l'ordinateur préparera un fichier vide pour votre sortie
avec le nom que vous avez spécifié.
Si le fichier de sortie désigné existe déjà, par défaut, le contenu
précédent est effacé lorsque le fichier est ouvert.
Notez que si le programme N'EST PAS en mesure d'accéder/créer le
fichier d'entrée/sortie, il lance une FileNotFoundException.
Cela se produit généralement en raison d'un mauvais chemin d'accès ou
d'un mauvais nom de fichier. 63