Software">
JAVA
JAVA
JAVA
Plan de cours
1
15/05/2023
Plan de cours
Le langage Java est un langage de programmation orienté objet créé par James Gosling
et Patrick Naughton, employés de Sun Microsystems, avec le soutien de Bill Joy
(cofondateur de Sun Microsystems en 1982), présenté officiellement le 23 mai 1995 au
SunWorld.
en 2009
rachetée par
2
15/05/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java est interprété
Le fichier source est compilé en pseudo code ou bytecode puis exécuté par un interpréteur Java : la
Java Virtual Machine (JVM). Ce concept est à la base du slogan de Sun pour Java : WORA (Write Once,
Run Anywhere : écrire une fois, exécuter partout). En effet, le bytecode, s'il ne contient pas de code
spécifique à une plate-forme particulière peut être exécuté et obtenir quasiment les mêmes résultats
sur toutes les machines disposant d'une JVM.
3
15/05/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
4
15/05/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
Java est sûr
la sécurité fait partie intégrante du système d'exécution et du compilateur. Un programme
Java planté ne menace pas le système d'exploitation. Il ne peut pas y avoir d'accès direct à
la mémoire. L'accès au disque dur est réglementé dans une applet.
Les applets fonctionnant sur le Web sont soumises aux restrictions suivantes dans la
version 1.0 de Java :
• aucun programme ne peut ouvrir, lire, écrire ou effacer un fichier sur le système de
l'utilisateur
• aucun programme ne peut lancer un autre programme sur le système de l'utilisateur
• toute fenêtre créée par le programme est clairement identifiée comme étant une
fenêtre Java, ce qui interdit par exemple la création d'une fausse fenêtre demandant
un mot de passe
• les programmes ne peuvent pas se connecter à d'autres sites Web que celui dont ils
proviennent.
10
5
15/05/2023
Java possède un certain nombre de caractéristiques qui ont largement contribué à son
énorme succès :
11
Il existe 2 types de programmes avec la version standard de Java : les applets et les
applications.
• Une application autonome (stand alone program) est une application qui s'exécute
sous le contrôle direct du système d'exploitation.
• Une applet est une application qui est chargée par un navigateur et qui est exécutée
sous le contrôle d'un plug in de ce dernier.
▪ les applets n'ont pas de méthode main() : la méthode main() est appelée par la
machine virtuelle pour exécuter une application.
▪ les applets ne peuvent pas être testées avec l'interpréteur. Elles doivent être testées
avec l'applet viewer ou doivent être intégrées à une page HTML, elle même visualisée
avec un navigateur disposant d'un plug in Java,
12
6
15/05/2023
12 (ou JDK 12) : Publiée en 2019, la version 12 de Java a ajouté des fonctionnalités telles que la switch expression, l'API de la JVM pour
les conteneurs, la mise à l'échelle dynamique des machines virtuelles et l'amélioration des performances du garbage collector.
13 (ou JDK 13) : Publiée en 2019, la version 13 de Java a ajouté des fonctionnalités telles que la syntaxe de texte brut pour les littéraux,
l'API de point d'ancrage pour les Garbage Collectors, le support de la mise en cache des compilateurs JIT et l'ajout de plusieurs
fonctionnalités pour les API de flux et d'E/S.
14 (ou JDK 14) : Publiée en 2020, la version 14 de Java a ajouté des fonctionnalités telles que les enregistrements, les expressions switch,
le support des chaînes de caractères au format UTF-8 et l'amélioration de la lecture des fichiers.
15 (ou JDK 15) : Publiée en 2020, la version 15 de Java a ajouté des fonctionnalités telles que les opérateurs de text blocks, l'amélioration
des performances de l'allocation de mémoire et l'ajout d'une API pour les sockets Unix.
16 (ou JDK 16) : Publiée en 2021, la version 16 de Java a ajouté des fonctionnalités telles que les enregistrements de classe locales,
l'amélioration de la gestion des erreurs, l'ajout de l'API Vector API pour les calculs à haute performance et l'ajout de fonctionnalités pour
les flux et les E/S.
17 (ou JDK 17) : Publiée en 2021, la version 17 de Java a ajouté des fonctionnalités telles que la rétrocompatibilité avec des versions
antérieures, l'amélioration des performances du garbage collector, l'ajout de l'API contextuelle et la simplification des paramètres du JDK.
14
7
15/05/2023
15
16
8
15/05/2023
▪ Java Standard Edition (J2SE / Java SE) : environnement d'exécution et ensemble complet
d'API pour des applications de type desktop. Cette plate-forme sert de base en tout ou
partie aux autres plate-formes
▪ Java Enterprise Edition (J2EE / Java EE) : environnement d'exécution reposant
intégralement sur Java SE pour le développement d'applications d'entreprises
▪ Java Micro Edition (J2ME / Java ME) : environnement d'exécution et API pour le
développement d'applications sur appareils mobiles et embarqués dont les capacités ne
permettent pas la mise en oeuvre de Java SE
17
▪ Applications desktop
▪ Applications web : servlets/JSP, portlets, applets
▪ Jeux : Les jeux peuvent être développés en Java à l'aide de bibliothèques telles que
LWJGL (Lightweight Java Game Library) et jMonkeyEngine.
▪ Applications pour appareil mobile (MIDP) : midlets
▪ Applications scientifiques : Les applications scientifiques telles que la modélisation
numérique et la simulation peuvent être développées en Java à l'aide de bibliothèques
telles que JAMA (Java Matrix Package) et JFreeChart.
▪ Applications pour appareil embarqué (CDC) : Xlets
▪ Applications pour carte à puce (Javacard) : applets Javacard
▪ Applications temps réel
18
9
15/05/2023
LA SYNTAXE DE JAVA
Java est un langage objet qui s’appuie sur la syntaxe du langage C et du C++. Java est un
langage objet : on doit utiliser les classes et les objets ; C++ est un langage orienté objet,
sorte de langage hybride permettant à la fois la programmation classique sans objets et la
programmation avec objets.
La figure ci-dessous présente un programme réalisant la somme des nb
éléments d’un tableau tabEnt d’entiers.
19
LA SYNTAXE DE JAVA
• Java est sensible à la casse.
• Les blocs de code sont encadrés par des accolades. Chaque instruction se termine par un
caractère ';' (point virgule).
• Une instruction peut tenir sur plusieurs lignes :
Les commentaires
Il existe trois types de commentaire en Java :
20
10
15/05/2023
LA SYNTAXE DE JAVA
La déclaration de variables
Une variable possède un nom, un type et une valeur.
La déclaration d'une variable permet de réserver la mémoire pour en stocker la valeur.
Le type d'une variable peut être :
• soit un type élémentaire dit aussi type primitif déclaré sous la forme
type_élémentaire variable;
• soit une classe déclarée sous la forme classe variable ;
Rappel : les noms de variables en Java peuvent commencer par une lettre, par le caractère de
soulignement ou par le signe dollar. Le reste du nom peut comporter des lettres ou des nombres
mais jamais d'espaces.
21
LA SYNTAXE DE JAVA
Les types élémentaires
Les types élémentaires ont une taille identique quelque soit la plate-forme d'exécution :
c'est un des éléments qui permet à Java d'être indépendant de la plate-forme sur laquelle
le code s'exécute
22
11
15/05/2023
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
23
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
24
12
15/05/2023
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
Java vérifie qu’une variable locale (à la fonction main() dans cet exemple) est initialisée
avant son utilisation. Si la variable n’est pas initialisée, le compilateur signale un message
d’erreur comme sur les exemples ci-dessous.
Lorsque vous essayez de compiler ce code, le compilateur Java signalera une erreur
25
LA SYNTAXE DE JAVA
Exemples de déclaration de variables avec ou sans valeur initiale
L’instruction suivante écrit en début de ligne (indiquée par \n), pour chaque variable, son
nom suivi de sa valeur convertie en caractères. L’opérateur + est ici un opérateur de
concaténation de chaînes de caractères.
26
13
15/05/2023
LA SYNTAXE DE JAVA
Exemple de résultats d’exécution de la classe TypesPrimitifs :
Remarque : pour chaque type, des constantes indiquant les maximums et les minimums sont définies
: Byte.MIN_VALUE, Byte.MAX_VALUE, Short.MIN_VALUE, etc.
27
LA SYNTAXE DE JAVA
28
14
15/05/2023
LA SYNTAXE DE JAVA
Les constantes symboliques
Les constantes symboliques sont déclarées comme des variables précédées de final . Leur
contenu ne peut pas être modifié par la suite. L’identificateur de la constante est souvent
écrit en majuscules. Exemples de déclaration de constantes symboliques :
29
LA SYNTAXE DE JAVA
Les opérateurs arithmétiques, relationnels, logiques
Les opérateurs arithmétiques réalisent des opérations sur des variables entières ou
réelles. Les opérations possibles sont listées ci-après.
30
15
15/05/2023
LA SYNTAXE DE JAVA
Les opérateurs (relationnels) de comparaison
31
LA SYNTAXE DE JAVA
Le transtypage (cast)
Le transtypage est nécessaire quand il risque d’y avoir perte d’information, comme lors de
l’affectation d’un entier long (64 bits) à un entier int (32 bits), ou d’un réel double vers un
réel float. On force alors le type, indiquant ainsi au compilateur qu’on est conscient du
problème de risque de perte d’information.
Remarque : dans les expressions arithmétiques, les entiers de type byte ou short sont considérés
comme des int (convertis d’office en int). Si b1 est un byte, b1 + 1 est considéré être un int.
L’affectation b1 = b1 + 1 est illégale sans cast (de type int -> byte)
32
16
15/05/2023
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’éléments de type primitif
Plusieurs éléments de même type peuvent être regroupés (sous un même nom) en tableau.
On peut accéder à chaque élément à l’aide d’un d’indice. Le premier élément porte l’indice
0. Les tableaux sont alloués dynamiquement en Java. Ils sont initialisés par défaut à 0 pour
les nombres et à faux pour les tableaux de booléens.
(1) et (2) sont identiques et corrects en Java. La forme (2) indique mieux un tableau d’entiers nommé tabEnt, et
initialisé avec les valeurs 1, 2 et 3.
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’éléments de type primitif
Exemples de déclarations avec allocation dynamique du tableau :
déclare et définit la variable tabEnt comme une référence sur un tableau d’entiers, mais ne
réserve pas de place mémoire pour ce tableau. L’allocation doit se faire avec new en
indiquant le nombre d’éléments. Ci-après, on réserve 10 éléments de type int, numérotés
de 0 à 9.
34
17
15/05/2023
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’éléments de type primitif
35
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux d’objets
On déclare de la même façon un tableau d’objets. tabBalle est un tableau d’éléments de
type Balle pouvant référencer six objets de type Balle numérotés de 0 à 5.
Les chaînes de caractères étant gérées en Java sous forme de classes, on peut de même
déclarer des tableaux d’objets de type String (chaînes de caractères).
36
18
15/05/2023
LA SYNTAXE DE JAVA
Les tableaux à une dimension : Les tableaux à plusieurs dimensions
On peut généraliser la notion de tableau à une dimension pour créer des tableaux
multidimensionnels. Un tableau à deux dimensions est un tableau de tableaux.
37
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
Les instructions de contrôle du déroulement lors de l’exécution des instructions ont la
même syntaxe que pour le langage C. Leur syntaxe est présentée succinctement ci-
dessous. L’espace n’étant pas significatif en Java, les instructions peuvent être présentées
(indentées) de différentes façons.
38
19
15/05/2023
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
39
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
40
20
15/05/2023
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
Les boucles for, while et do ... while
41
LA SYNTAXE DE JAVA
Les instructions de contrôle (alternatives, boucles)
42
21
15/05/2023
Plan de cours
43
La notion de classe
Une classe en langage orienté objet est une structure de programmation qui définit un
ensemble d'attributs et de méthodes qui représentent un concept ou un objet du monde réel.
Elle permet de créer des objets qui peuvent interagir les uns avec les autres en utilisant ces
attributs et méthodes.
44
22
15/05/2023
La notion de classe
45
Cette classe s'appelle Person, elle contient deux propriétés (name et age), un constructeur et trois méthodes (sayHello(), getAge()
Chapitre 2 : Classes JAVA
La notion de classe
Cette classe s'appelle Person, elle contient deux propriétés (name et age), un
constructeur et trois méthodes (sayHello(), getAge() et setAge()).
46
23
15/05/2023
• Une instance d'une classe, créée à partir du modèle fourni par la classe.
• Une entité autonome qui peut avoir des états et des comportements.
• Une structure de données complexe qui contient des données (variables
d'instance) et des méthodes (comportements) pour manipuler ces données.
• Une abstraction de données qui permet de regrouper les données et les
comportements associés en une seule entité.
• Une instance de classe qui peut interagir avec d'autres objets pour réaliser une
tâche ou résoudre un problème.
• Un élément fondamental de la programmation orientée objet, qui permet une
modélisation efficace et flexible des concepts du monde réel.
47
- Un objet a :
• une adresse en mémoire (identifie l’objet)
• un comportement (ou interface)
• un état interne
- Le comportement est donné par des fonctions ou procédures, appelées
méthodes
- L’état interne est donné par des valeurs de variables d’instances
48
24
15/05/2023
49
50
25
15/05/2023
51
2) Une classe peut ne disposer d’aucun constructeur. On peut alors instancier des objets
comme s’il existait un constructeur par défaut sans arguments.
3) Un constructeur ne peut pas être appelé directement depuis une autre méthode. :
52
26
15/05/2023
53
5) Un constructeur peut être déclaré privé (private ). Dans ce cas, il ne pourra plus être
appelé de l’extérieur, c’est-à-dire qu’il ne pourra pas être utilisé pour instancier des objets :
54
27
15/05/2023
55
Note : Dans cet exemple, on crée un objet MyClass puis on ne le référence plus en mettant sa référence à null. Ensuite, on
appelle la méthode System.gc() pour demander explicitement au GC de récupérer les objets non référencés. Lorsque le GC
va récupérer l'objet obj, la méthode finalize de la classe MyClass sera automatiquement invoquée.
56
28
15/05/2023
57
58
29
15/05/2023
Notez bien qu’il n’existe ici que deux objets de type Point et trois variables de type
Point (trois références, dont deux de même valeur).
59
Écrire une classe "Personne" avec les attributs "nom" et "age". Créez ensuite
deux objets "p1" et "p2" de type "Personne" avec les valeurs suivantes :
1. Affectez l'objet "p1" à l'objet "p3", puis comparez les objets "p1", "p2" et "p3"
pour vérifier s'ils sont égaux ou non.
2. Modifiez la valeur de l'attribut "nom" de l'objet "p3" en "Reda" et comparez
de nouveau les objets "p1", "p2" et "p3".
60
30
15/05/2023
p1 equals p2 : false
p1 equals p3 : true
p1 equals p3 : true
61
Considérez cet exemple utilisant une classe Point disposant d’une méthode affiche :
62
31
15/05/2023
La notion de clone
L’affectation de variables de type objet se limite à la recopie de références. Elle ne provoque
pas la recopie de la valeur des objets.
Si on le souhaite, on peut bien entendu effectuer explicitement la recopie de tous les
champs d’un objet dans un autre objet de même type.
Cette démarche est utilisable tant que la classe concernée ne comporte pas de champs de
type classe.
63
La notion de clone
la copie profonde d’un objet : on se contente de recopier la valeur de tous ses champs, y
compris ceux de type classe,
64
32
15/05/2023
Comparaison d’objet
Les opérateurs == et != s’appliquent théoriquement à des objets. Mais comme ils portent sur
les références elles-mêmes, leur intérêt est très limité.
Ainsi, avec :
Point a, b ;
65
Mais une méthode peut aussi fournir un résultat. Nous parlerons alors de méthode
fonction. Voici par exemple une méthode distance qu’on pourrait ajouter à une classe
Point pour obtenir la distance d’un point à l’origine :
66
33
15/05/2023
67
Il est possible de déclarer un argument muet avec l’attribut final . Dans ce cas, le compilateur
s’assure que sa valeur n’est pas modifiée par la méthode :
Les arguments fournis lors de l’appel de la méthode portent quant à eux le nom d’arguments
effectifs (ou encore paramètres effectifs).
68
34
15/05/2023
Il faut simplement que la conversion dans le type attendu soit une conversion implicite
légale
69
35
15/05/2023
71
72
36
15/05/2023
Ce code affichera 3.
73
37
15/05/2023
75
Vous pouvez sans avoir instancié la classe accéder à la méthode statique en tapant ceci :
Test.MaMethodeStatique();
38
15/05/2023
77
La surcharge de méthodes :
La surcharge survient lorsque l'on a deux méthodes du même nom mais qui ne prennent pas
les mêmes paramètres. :
Exemple de surcharge de méthode
78
39
15/05/2023
79
80
40
15/05/2023
Dans cette opération nous venons d'assigner toutes les classes du fichier Exemple.java au
paquetage nomtest.
81
Par cette instruction vous avez demandé d'importer toutes les classes se trouvant dans le
paquetage nomtest
Remarques :
1) Le paquetage java.lang est importé automatiquement par le compilateur.
2) import nomtest.*;
• Cette instruction ne va pas importer de manière récursive les classes se
trouvant dans nomtest et dans ses sous paquetages.
• Elle va uniquement se contenter de faire un balayage d'un seul niveau.
• Elle va importer donc que les classes du paquetage nomtest.
import java.awt.*;
import java.awt.event.*; 82
41
15/05/2023
Par exemple
• la classe List des paquetages java.awt et java.util ou bien la classe Date des paquetages
java.util et java.sql etc.
83
Classe String
En Java, les chaînes de caractères sont gérées à l’aide de la classe String fournie en standard
dans le paquetage java.lang. Cette gestion diffère du langage C où les chaînes de caractères
sont mémorisées comme une suite de caractères terminée par 0.
• Le principe d’encapsulation et l’accès direct aux données d’un objet de la classe String
n’est pas possible et les structures de données utilisées sont inconnues.
• La classe String met à la disposition de l’utilisateur un large éventail de méthodes gérant
les chaînes de caractères.
Remarque :
• la chaîne de caractères d’un objet de type String ne peut pas être modifié .
• En cas de modification, les méthodes fournissent un nouvel objet à partir de la chaîne de
l’objet courant et répondant aux caractéristiques de la méthode. Une même chaîne de
caractères (String) peut être référencée plusieurs fois puisqu’on est sûr qu’elle ne peut
pas être modifiée.
• La classe StringBuffer par contre permet la création et la modification d’une chaîne de
caractères. 84
42
15/05/2023
Classe String
Les premières méthodes sont des constructeurs d’un objet de type String.
• String () : crée une chaîne vide
• String (String) : crée une chaîne à partir d’une autre chaîne
• String (StringBuffer) : crée une chaîne à partir d’une autre chaîne de type String-Buffer
Remarque :
String s = "Monsieur" ; est accepté par le compilateur et est équivalent à
String s = new String ("Monsieur") ;
85
Classe String
86
43
15/05/2023
Classe String
• int indexOf (char c) : indice du caractère c dans la chaîne ; -1 s’il n’existe pas.
• int indexOf (int, char) : indice d’un caractère de la chaîne en partant d’un indice donné.
• int indexOf (String s) : indice de la sous-chaîne s.
• int indexOf (String, int) : indice de la sous-chaîne en partant d’un indice.
• int lastIndexOf (char c) : indice du dernier caractère c.
• int lastIndexOf (int, char) : indice du dernier caractère en partant de la fin et d’un
indice.
• int lastIndexOf (String) : indice de la dernière sous-chaîne.
• int lastIndexOf (String, int) : indice de la dernière sous-chaîne en partant d’un indice.
• String replace (char c1, char c2) : crée une nouvelle chaîne en remplaçant le caractère
c1 par c2.
• boolean startsWith (String s) : teste si la chaîne de l’objet commence par s.
• boolean startsWith (String s, int n) : teste si la chaîne de l’objet commence par s en
partant de l’indice n.
87
Classe String
• boolean endsWith (String s) : teste si la chaîne de l’objet se termine par s.
• String substring (int d) : fournit la sous-chaîne de l’objet commençant à l’indice d.
• String substring (int d, int f) : fournit la sous-chaîne de l’objet entre les indices d
(inclus) et f (exclu).
• String trim () : enlève les espaces en début et fin de chaîne.
• L’opérateur + est un opérateur de concaténation de chaînes de caractères souvent utilisé
pour la présentation des résultats à écrire.
• Il peut aussi s’utiliser pour former une chaîne de caractères.
• Les objets de type String ne sont pas modifiables ; il faut donc créer un nouvel objet de
type String si on concatène deux objets de type String.`
• Si les deux opérandes de l’opérateur + sont de type String, le résultat est de type String.
• Si un des deux opérandes est de type String et l’autre de type primitif (entier, réel,
caractère, booléen), le type primitif est converti en un String.
• Si un des deux opérandes est de type String et l’autre est un objet, l’objet est remplacé
par une chaîne de caractères fournie par la méthode toString() de l’objet (ou celle de la
classe Object, ancêtre de toutes les classes)
88
44
15/05/2023
Classe String
class TestString1 {
public static void main (String[] args) {
String ch1 = "Louis"; int i1 = 13;
String ch2 = ch1 + i1; System.out.println ("ch2 : " + ch2);
// …….
String ch3 = i1 + ch1; System.out.println ("ch3 : " + ch3);
// ………
String ch4 = ch1 + i1 + 2; System.out.println ("ch4 : " + ch4);
//…….
String ch5 = ch1 + (i1 + 2); System.out.println ("ch5 : " + ch5);
// ……….
//String ch6 = i1 + 2;
// ……
String ch7 = "" + i1 + 2;
// …….
System.out.println ("ch7 : " + ch7); String ch8 = i1 + 2 + "";
// …….
System.out.println ("ch8 : " + ch8); String ch9 = Integer.toString (i1 + 2);
89
// ……} }
Classe String
class TestString1 {
public static void main (String[] args) {
String ch1 = "Louis"; int i1 = 13;
String ch2 = ch1 + i1; System.out.println ("ch2 : " + ch2);
// Louis13
String ch3 = i1 + ch1; System.out.println ("ch3 : " + ch3);
// 13Louis
String ch4 = ch1 + i1 + 2; System.out.println ("ch4 : " + ch4);
// Louis132
String ch5 = ch1 + (i1 + 2); System.out.println ("ch5 : " + ch5);
// Louis15
//String ch6 = i1 + 2;
// impossible de convertir int en String
String ch7 = "" + i1 + 2;
// 132
System.out.println ("ch7 : " + ch7); String ch8 = i1 + 2 + "";
// 15
System.out.println ("ch8 : " + ch8); String ch9 = Integer.toString (i1 + 2);
90
// 15 } }
45
15/05/2023
Classe String
Résultats d’exécution
91
Classe String
Exemple de la méthode charAt
92
46
15/05/2023
Classe String
Exemple de la méthode compareTo
0
-1
2
93
Classe String
Exemple de la méthode trim
94
47
15/05/2023
Classe String
Exemple de la méthode toString
Student@70dea4e
Student@5c647e05
95
Classe String
Exemple de la méthode toString
48
15/05/2023
Classe StringBuffer
Un objet de type StringBuffer représente une chaîne de caractères modifiable. On peut
changer un caractère, ajouter des caractères au tampon interne de l’objet défini avec une
capacité qui peut être changée.
97
Classe StringBuffer
Les méthodes de type StringBuffer append () concatènent au tampon de l’objet courant la
représentation sous forme de caractères de leur argument (boolean, int, etc.).
• StringBuffer append (boolean);
• StringBuffer append (char);
• StringBuffer append (char[]);
• StringBuffer append (char[], int, int);
• StringBuffer append (double);
• StringBuffer append (floa );
• StringBuffer append (int);
• StringBuffer append (long);
• StringBuffer append (Object) : ajoute toString() de l’objet.
• StringBuffer append (String).
• StringBuffer insert (int, boolean) ;
• StringBuffer insert (int, char) ;
• StringBuffer insert (int, char[]) ;
• StringBuffer insert (int, double) ;
• StringBuffer insert (int, floa ) ;
• StringBuffer insert (int, int) ; 98
49
15/05/2023
Classe Vector
Lorsque l'on crée un tableau, il faut spécifier sa taille qui est fixe. Java fourni un objet très
utilisé: le vecteur ( classe java.util.Vector ). L'utilisation d'un vecteur plutôt qu'un tableau
est souvent avantageux lorsque la taille finale du tableau n'est pas connue à l'avance. Un
vecteur est un tableau dynamique. La première cellule d'un vecteur est à l'index zéro.
Principales méthodes de la classe Vector
constructeurs :
99
Classe Vector
Voici quelques-unes des méthodes disponibles dans la classe Vector en Java :
add(E element) : Ajoute un élément à la fin du vecteur.
add(int index, E element) : Insère un élément à l'index spécifié dans le vecteur.
addAll(Collection<? extends E> c) : Ajoute tous les éléments de la collection spécifiée à la fin du vecteur.
addAll(int index, Collection<? extends E> c) : Insère tous les éléments de la collection spécifiée à l'index
spécifié dans le vecteur.
clear() : Supprime tous les éléments du vecteur.
contains(Object o) : Vérifie si le vecteur contient l'élément spécifié.
elementAt(int index) : Retourne l'élément à l'index spécifié dans le vecteur.
isEmpty() : Vérifie si le vecteur est vide.
remove(int index) : Supprime l'élément à l'index spécifié dans le vecteur.
remove(Object o) : Supprime la première occurrence de l'élément spécifié dans le vecteur.
removeAll(Collection<?> c) : Supprime tous les éléments de la collection spécifiée du vecteur.
retainAll(Collection<?> c) : Supprime tous les éléments du vecteur qui ne sont pas présents dans la
collection spécifiée.
size() : Retourne le nombre d'éléments dans le vecteur.
toArray() : Retourne un tableau contenant tous les éléments du vecteur dans l'ordre. 100
50
15/05/2023
Classe Vector
Exercice
Supposons que vous ayez une liste de noms de villes, et que vous souhaitiez stocker ces
noms dans un vecteur (Vector<String>). Écrivez un programme Java qui réalise les tâches
suivantes :
1. Ajoutez les noms de villes suivants au vecteur : "Paris", "Londres", "New York",
"Tokyo", "Dubai".
2. Affichez la taille du vecteur.
3. Affichez tous les éléments du vecteur à l'aide d'une boucle for.
4. Supprimez l'élément "Tokyo" du vecteur.
5. Vérifiez si le vecteur contient l'élément "New York" à l'aide de la méthode contains.
6. Supprimez tous les éléments du vecteur.
7. Vérifiez si le vecteur est vide à l'aide de la méthode isEmpty.
8. Ajoutez le nom de ville "Barcelone" au vecteur.
9. Affichez la taille du vecteur.
10. Affichez tous les éléments du vecteur à l'aide d'une boucle for each.
101
Classe Vector
Exercice
102
51
15/05/2023
Classe Stack
En Java, la classe Stack hérite de la classe Vector et sert à créer une pile, également
appelée "stack" en anglais. Cette structure de données suit le principe Last-In-First-Out
(LIFO), ce qui implique que le dernier élément ajouté à la pile sera le premier à être
retiré.
• push(element) : ajoute l'élément au sommet de la pile
• pop() : retire et retourne l'élément se trouvant au sommet de la pile
• peek() : retourne l'élément se trouvant au sommet de la pile sans le retirer
• empty() : vérifie si la pile est vide
• search(element) : recherche l'élément dans la pile et retourne sa position (en
comptant à partir du sommet de la pile), ou -1 si l'élément n'est pas présent
103
Classe Stack
Écrivez une méthode qui prend en entrée une chaîne de caractères et utilise une
pile (classe stack) pour inverser l'ordre des caractères. La méthode doit
renvoyer la chaîne de caractères inversée.
104
52
15/05/2023
Classe ArrayList
La classe ArrayList est une implémentation de liste dynamique en Java qui permet de
stocker des éléments de manière ordonnée et de modifier sa taille dynamiquement. Elle
peut stocker des éléments de n'importe quel type et offre des méthodes pour ajouter,
supprimer, accéder et modifier les éléments de la liste.
105
53
15/05/2023
Tableau : [1, 2, 3, 4, 5, 6]
Liste : [1, 2, 3, 4, 5, 6]
Somme des éléments du tableau : 15
Somme des éléments de la liste : 21
Tableau trié : [1, 2, 3, 4, 5]
Liste triée : [1, 2, 3, 4, 5, 6]
107
Classe Hashtable
La classe Hashtable est une implémentation de la structure de données de table de hachage en
Java. Elle est utilisée pour stocker des paires clé-valeur, où chaque clé est associée à une
valeur. Cette classe est similaire à la classe HashMap en termes de fonctionnalités, mais elle
est synchronisée, ce qui la rend appropriée pour les environnements multithread.
• put(key, value) : cette méthode permet d'ajouter une paire clé-valeur à la table de hachage. Si la clé
existe déjà, la valeur associée est remplacée par la nouvelle valeur.
• get(key) : cette méthode permet de récupérer la valeur associée à une clé donnée. Si la clé n'existe
pas, cette méthode renvoie la valeur null.
• remove(key) : cette méthode permet de supprimer une paire clé-valeur de la table de hachage.
• containsKey(key) : cette méthode renvoie true si la clé donnée est présente dans la table de hachage,
false sinon.
• containsValue(value) : cette méthode renvoie true si la valeur donnée est associée à au moins une clé
dans la table de hachage, false sinon.
• keySet() : cette méthode renvoie un ensemble (Set) contenant toutes les clés présentes dans la table
de hachage.
• values() : cette méthode renvoie une collection (Collection) contenant toutes les valeurs associées aux
clés présentes dans la table de hachage.
• entrySet() : cette méthode renvoie un ensemble (Set) contenant toutes les paires clé-valeur présentes
dans la table de hachage, sous forme d'objets de type Map.Entry.
108
54
15/05/2023
Classe Hashtable
Écrire un programme Java qui permet de compter le nombre d'occurrences de chaque
caractère dans une chaîne de caractères donnée, en utilisant une Hashtable.
109
Classe Hashtable
110
55
15/05/2023
Classe Set
Cette interface étend également l'interface Collection et définit une collection d'objets qui ne
contient aucun doublon. La plateforme Java comporte 3 implémentations de Set. Vous
pouvez choisir l'une des Collections d'objets suivante:
1. java.util.HashSet
2. java.util.TreeSet
3. java.util.LinkedHashSet
Voici quelques exemples de la création de l'interface Set:
Set hset = new HashSet();
Set tset = new TreeSet();
Set lset = new LinkedHashSet();
• add(Object o): ajoute un élément à l'ensemble s'il n'existe pas déjà dans l'ensemble.
• remove(Object o): supprime l'élément spécifié de l'ensemble s'il est présent.
• contains(Object o): renvoie true si l'ensemble contient l'élément spécifié, sinon false.
• size(): renvoie le nombre d'éléments dans l'ensemble.
• isEmpty(): renvoie true si l'ensemble ne contient aucun élément, sinon false.
• clear(): supprime tous les éléments de l'ensemble. 111
Classe Set
Écrire un programme Java qui utilise la classe Set pour effectuer les opérations
suivantes:
1.Créer un ensemble de chaînes de caractères (Set<String>).
2.Ajouter les éléments suivants à l'ensemble : "Java", "Python", "C++", "JavaScript",
"Ruby", "PHP".
3.Afficher le contenu de l'ensemble.
4.Supprimer l'élément "PHP" de l'ensemble.
5.Vérifier si l'ensemble contient l'élément "Java".
6.Afficher la taille de l'ensemble.
7.Vider l'ensemble.
8.Vérifier si l'ensemble est vide.
9.Afficher à nouveau le contenu de l'ensemble.
112
56
15/05/2023
Classe Set
113
Classe Set
114
57
15/05/2023
Iterator
La classe Iterator en Java est une interface qui permet de parcourir et d'accéder aux éléments
d'une collection, telle qu'une liste, un ensemble ou une carte.
115
Iterator : exemple
Dans cet exemple, nous créons une liste de chaînes de caractères, puis nous créons un objet
Iterator à l'aide de la méthode iterator() de la liste. Nous utilisons ensuite une boucle
while pour parcourir la liste en utilisant l'interface Iterator. À chaque itération de la
boucle, nous utilisons la méthode next() pour récupérer l'élément suivant de la liste, et
nous l'affichons à l'aide de la méthode println().
116
58
15/05/2023
Plan de cours
117
Héritage
Une classe Java dérive toujours d’un autre classe, Object quand rien n’est spécifié. Pour
spécifier de quelle classe hérite une classe on utilise le mot-clé extends :
118
59
15/05/2023
Héritage : exemple
119
Héritage
Une référence à une classe de base peut être affectée d’une référence à une classe dérivée,
l’inverse doit faire l’objet d’une opération de conversion de type ou cast :
• B b = new B();
• D d = new D();
• b = d; // OK
• d = b; // interdit
• d = (D) b ; // OK avec cast
Remarque : Cette dernière instruction peut lever une exception si le cast est impossible.
120
60
15/05/2023
Constructeurs et héritage
class X{ class Y extends X{
int x;
public X (int x){ this.x = x; } }
}
la classe Y étend la classe X qui possède un constructeur paramétré. Comme il n'y a pas de
constructeur par défaut (sans paramètres) défini dans la classe X, cela provoque une erreur
de compilation.
121
Opérateur instanceof
L’opérateur instanceof permet de savoir à quelle classe appartient une instance :
class B{ …}
class D extends B{…}
class C {…}
B b = new B();
D d = new D();
C c = new C();
b instanceof B
// true
b instanceof D
// false
d instanceof B
// true
d instanceof D
// true
c instanceof B
122
// erreur de compilation Erreur No. 365 : // impossible de comparer C avec B
61
15/05/2023
Opérateur instanceof
la méthode equals(Object o), pour une classe X, est définie, en général, de la façon suivante :
123
Pour redéfinir une méthode, il suffit de déclarer une méthode avec la même signature (nom et
paramètres) que la méthode à redéfinir dans la classe enfant, avec la nouvelle implémentation
souhaitée.
L'annotation @Override est facultative mais recommandée, elle permet de signaler au compilateur qu'il s'agit bien
d'une redéfinition de méthode, ce qui permet de détecter des erreurs éventuelles si la signature de la méthode est
incorrecte.
124
62
15/05/2023
125
Les deux méthodes ont le même nom mais des signatures différentes, ce qui permet d'utiliser la
méthode appropriée en fonction des types de paramètres utilisés.
126
63
15/05/2023
127
Héritage : Exemple
Supposons que nous définissions la classe suivante :
128
64
15/05/2023
Héritage : Exemple
Un chef «est un» employé qui a une prime en plus du salaire :
129
Héritage : Exemple
Une entreprise est un tableau d’employés :
L’affichage des noms et salaires des différents employés se fera de la façon suivante :
130
65
15/05/2023
Héritage : Exemple
Le calcul de la somme des salaires des employés qui ne sont pas des chefs ?
131
Héritage multiple
Un diagramme d'héritage en diamant. En informatique, le problème du
diamant (ou problème du losange dans certains articles scientifiques) arrive principalement
en programmation orientée objet, lorsque le langage permet l'héritage multiple
132
66
15/05/2023
Si la classe Object définit la fonction equals (gérant la comparaison entre objets), que les
deux sous-classes Rectangle et Clickable étendent cette fonction pour l'adapter à leurs
particularités, laquelle des fonctions equals de Rectangle ou de Clickable la
classe Button doit-elle utiliser ?
133
Héritage : Interface
Java n’autorise que l’héritage simple. Une classe ne peut avoir qu’une seule superclasse. Une
certaine forme d’héritage multiple est obtenue grâce à la notion d’interface.
134
67
15/05/2023
vous venez d'apprendre à déclarer une interface. Vu qu'une interface est une classe 100 % abstraite, il
ne vous reste qu'à y ajouter des méthodes abstraites, mais sans le mot clé abstract
135
Et pour faire en sorte qu'une classe utilise une interface, il suffit d'utiliser le mot clé implements. Ce
qui nous donnerait :
136
68
15/05/2023
137
138
69
15/05/2023
Héritage : Interface
139
Héritage : Interface
La syntaxe est simple et sans surprises : il suffit de fournir un corps à la méthode, et de la
qualifier avec le mot-clé default .
Les classes filles sont alors libérées de l'obligation de fournir elles-mêmes une
implémentation à cette méthode - en cas d'absence d'implémentation spécifique, c'est celle
par défaut qui est utilisée.
140
70
15/05/2023
Héritage : Interface
Exercice
Certain animaux peuvent crier, d’autres sont muets. On représentera le fait de crier au
moyen d’une méthode affichant à l’écran le cri de l’animal.
▪ écrire une interface contenant la méthode permettant de crier.
▪ écrire les classes des chats, des chiens et des lapins (qui sont muets)
▪ écrire un programme avec un tableau pour les animaux qui savent crier, le remplir
avec des chiens et des chats, puis faire crier tous ces animaux. Décrire ce qui s’affiche
à l’écran à l’exécution de ce programme.
141
Héritage : Interface
142
71
15/05/2023
Plan de cours
143
Exceptions
▪ Mécanisme permettant de traiter les comportements exceptionnels.
▪ Constituent un moyen fiable et pratique d’effectuer un contrôle des erreurs rigoureux sans
alourdir le code.
▪ La notion d’erreur fait partie intégrante de la fonction
144
72
15/05/2023
145
146
73
15/05/2023
147
148
74
15/05/2023
149
150
75
15/05/2023
151
Par exemple, si vous souhaitez lancer une exception de type NullPointerException, vous
pouvez créer une instance de cette exception comme ceci :
152
76
15/05/2023
Par exemple, pour lancer une exception NullPointerException avec un message d'erreur
personnalisé :
153
La clause throws est utilisée dans la signature de la méthode pour indiquer que la méthode
peut potentiellement lancer une exception et la propager à l'appelant. Par exemple :
Dans cet exemple, la méthode maMethode peut potentiellement lancer une exception
de type IOException
154
77
15/05/2023
155
En Java, il est possible de personnaliser les exceptions en créant une nouvelle classe
d'exception personnalisée.
Pour créer une nouvelle classe d'exception personnalisée, vous pouvez étendre la classe
Exception ou l'une de ses sous-classes (par exemple, RuntimeException ou IOException) et
définir les propriétés et les méthodes spécifiques à votre exception. c un exemple de création
d'une exception personnalisée :
156
78
15/05/2023
157
158
79
15/05/2023
159
160
80
15/05/2023
161
Plan de cours
162
81
15/05/2023
• Composants graphiques : ce sont les éléments de base d'une interface utilisateur tels
que des boutons, des boîtes de dialogue, des barres de défilement, des menus, des
tableaux, des arbres, des onglets et bien d'autres. Ils sont utilisés pour créer
l'apparence de l'interface utilisateur.
• Gestionnaire de mise en page : c'est un mécanisme utilisé pour organiser les
composants graphiques dans une fenêtre ou un panneau. Il permet de définir la
position et la taille de chaque composant, ainsi que leur alignement et leur
espacement.
• Événements : ce sont des actions déclenchées par l'utilisateur, telles que cliquer sur
un bouton ou saisir du texte dans une zone de texte. Les événements sont gérés par le
code pour déclencher des réactions spécifiques dans l'interface utilisateur.
163
164
82
15/05/2023
165
166
83
15/05/2023
167
L’API Swing
168
84
15/05/2023
Architecture MVC
La conception des classes Swing s’appuie assez librement sur l’architecture MVC
(Modèle/Vue/Contrôleur).
Le patron modèle-vue-contrôleur (en abrégé MVC, de l'anglais model-view-controller), tout
comme les patrons modèle-vue-présentation ou Présentation, abstraction, contrôle, est un
modèle destiné à répondre aux besoins des applications interactives en séparant les
problématiques liées aux différents composants au sein de leur architecture respective.
169
Modèle
❑ Le modèle représente le cœur (algorithmique) de l'application : traitements des données,
interactions avec la base de données, etc.
❑ La base de données sera l'un de ses composants. Le modèle comporte des méthodes
standards pour mettre à jour ces données (insertion, suppression, changement de valeur). Il
offre aussi des méthodes pour récupérer ces données.
❑ Le modèle peut autoriser plusieurs vues partielles des données. Si par exemple le
programme manipule une base de données pour les emplois du temps, le modèle peut
avoir des méthodes pour avoir tous les cours d'une salle, tous les cours d'une personne ou
tous les cours d'un groupe de TD.
170
85
15/05/2023
Vue
Ce avec quoi l'utilisateur interagit se nomme précisément la vue.
❑ Sa première tâche est de présenter les résultats renvoyés par le modèle.
❑ Sa seconde tâche est de recevoir toute action de l'utilisateur (clic de souris, sélection
d'un bouton radio, entrée de texte, de mouvements, de voix, etc.). Ces différents
événements sont envoyés au contrôleur.
❑ La vue n'effectue pas de traitement, elle se contente d'afficher les résultats des
traitements effectués par le modèle et d'interagir avec l'utilisateur.
171
Contrôleur
172
86
15/05/2023
Swing : composants
Les composants Swing sont des éléments graphiques de l'interface utilisateur qui sont
fournis par le package "javax.swing".
❑ JButton : un bouton que l'utilisateur peut cliquer pour effectuer une action.
❑ JLabel : un composant qui affiche du texte ou une image.
❑ JTextField : un champ de saisie de texte qui permet à l'utilisateur de saisir une ou
plusieurs lignes de texte.
173
Swing : composants
❑ JPasswordField : un champ de
saisie de texte pour les mots de
passe qui masque les caractères
saisis.
❑ JCheckBox : une case à cocher
qui permet à l'utilisateur de
sélectionner une ou plusieurs
options.
❑ JRadioButton : un bouton radio
qui permet à l'utilisateur de
sélectionner une option parmi
plusieurs.
❑ JComboBox : une liste déroulante
qui permet à l'utilisateur de
sélectionner une option à partir
d'une liste.
❑ JList : une liste qui affiche un
ensemble d'éléments, où
l'utilisateur peut sélectionner un
ou plusieurs éléments. 174
87
15/05/2023
Swing : composants
❑ JTable : un tableau qui affiche des données dans une grille avec des lignes et des
colonnes.
❑ JToolBar : une barre d'outils qui contient des boutons et d'autres composants pour
exécuter des actions fréquentes.
175
❑ Les conteneurs sont des composants qui sont utilisés pour organiser d'autres
composants, tels que des boutons, des champs de texte, des images, etc., dans une
hiérarchie de conteneurs imbriqués.
❑ Les conteneurs sont eux-mêmes des composants et peuvent être ajoutés à d'autres
conteneurs pour créer des interfaces utilisateur plus complexes.
176
88
15/05/2023
Swing : JComponent
JComponent est une classe de base pour tous les composants Swing, fournissant des
fonctionnalités essentielles pour la gestion de l'apparence, du comportement et des
événements des composants Swing.
177
178
89
15/05/2023
179
❑ JPanel : un conteneur qui peut être utilisé pour organiser des composants dans une zone
spécifique de la fenêtre.
180
90
15/05/2023
❑ JDialog : un conteneur qui représente une fenêtre de dialogue ou une boîte de dialogue.
181
182
91
15/05/2023
❑ JScrollPane : un conteneur qui peut être utilisé pour afficher du contenu qui ne rentre
pas dans la zone d'affichage.
183
184
92
15/05/2023
Swing : événements
Les composants Swing créent des événements, soit directement, soit par une action de
l'utilisateur sur le composant. Ces événements peuvent déclencher une action exécutée par
d'autre(s) composant(s).
▪ Un composant qui crée des événements est appelé source. Le composant source délègue le
traitement de l'événement au composant auditeur.
▪ Un composant qui traite un événement est appelé auditeur (listener)
Un composant auditeur doit s'inscrire auprès du composant source des événements qu'il veut
traiter.
185
Swing : événements
Hiérarchie : Schéma de la hiérarchie simplifiée des événements java
186
93
15/05/2023
187
188
94
15/05/2023
Swing : événements
MouseEvent
189
Swing : événements
KeyEvent
190
95
15/05/2023
Swing : événements
Adaptateur
Un adaptateur XxxAdapter est une classe abstraite qui fourni une implémentation de la classe
XxxListener. Les méthodes implémentées sont toutes vides, et ainsi permettent à un
utilisateur de l'adaptateur de ne redéfinir que le traitement qui l'intéresse.
191
Plan de cours
192
96
15/05/2023
Chapitre 6 : JDBC
Plan
1. Introduction à JDBC
2. Connexion à une base de données
3. Requêtes SQL
4. Mises à jour de la base de données
5. Transactions
193
Chapitre 6 : JDBC
Introduction à JDBC
• JDBC (Java Database Connectivity) est une API standard de Java qui facilite l'accès et la
manipulation des bases de données relationnelles.
• Son objectif principal est de fournir aux développeurs un moyen uniforme et cohérent
d'interagir avec différentes bases de données en utilisant le langage Java.
• JDBC permet l'exécution de requêtes SQL pour récupérer, insérer, mettre à jour ou supprimer
des données dans une base de données.
• Il offre une architecture modulaire, comprenant des classes et des interfaces pour établir une
connexion à la base de données, créer des déclarations (statements), traiter les résultats et
gérer les transactions.
• JDBC est compatible avec une large gamme de bases de données relationnelles, ce qui permet
aux développeurs de créer des applications indépendantes de la base de données utilisée.
• Différents types de pilotes JDBC sont disponibles pour assurer la connectivité avec différents
systèmes de gestion de bases de données (SGBD), tels que les pilotes de type 1, 2, 3 et 4.
• L'utilisation de JDBC simplifie la gestion des connexions à la base de données, offre une
meilleure performance et facilite le développement d'applications robustes et évolutives.
194
97
15/05/2023
Chapitre 6 : JDBC
• Accès aux bases de données : JDBC fournit aux développeurs Java les outils
nécessaires pour accéder et interagir avec les bases de données relationnelles. Il
offre une interface standardisée pour établir des connexions, exécuter des requêtes
SQL et effectuer des opérations de manipulation des données.
• Portabilité : JDBC offre une portabilité élevée, ce qui signifie que les applications
développées avec JDBC peuvent fonctionner avec différentes bases de données sans
nécessiter de modifications majeures du code. Cela permet aux développeurs de
créer des applications indépendantes du SGBD utilisé.
• Performance : En utilisant JDBC de manière appropriée, les développeurs peuvent
optimiser les performances des opérations sur les bases de données. L'utilisation de
requêtes préparées, de mises à jour en bloc et d'autres fonctionnalités de JDBC peut
améliorer l'efficacité et la vitesse des opérations de base de données.
195
Chapitre 6 : JDBC
• Intégration avec d'autres technologies : JDBC peut être utilisé en conjonction avec
d'autres frameworks et technologies Java, tels que JSP (JavaServer Pages) et Servlets,
pour créer des applications Web dynamiques qui récupèrent et manipulent les
données de la base de données.
• Flexibilité : Grâce à JDBC, les développeurs ont le contrôle total sur les opérations de
base de données effectuées par leurs applications. Ils peuvent personnaliser et
optimiser les requêtes, gérer les transactions et manipuler les données selon leurs
besoins spécifiques.
• Évolutivité : JDBC offre la possibilité de développer des applications Java évolutives
en permettant l'accès à des fonctionnalités avancées telles que la gestion des
transactions, les requêtes préparées, la récupération des métadonnées de la base de
données, etc.
196
98
15/05/2023
Chapitre 6 : JDBC
3) Chargement du pilote JDBC : Avant d'établir une connexion, vous devez charger le pilote
JDBC approprié pour le SGBD spécifique que vous utilisez. Cela se fait généralement en
utilisant la méthode
Class.forName("nom_du_pilote")
Class.forName("com.mysql.cj.jdbc.Driver");
197
Chapitre 6 : JDBC
4) Établissement de la connexion : Une fois que vous avez les informations nécessaires,
vous pouvez établir une connexion à la base de données en utilisant la classe Connection
de JDBC. L'appel à la méthode DriverManager.getConnection(url, username, password)
retourne un objet Connection représentant la connexion établie.
connection.close();
198
99
15/05/2023
Chapitre 6 : JDBC
Requêtes SQL
Utilisation des objets Connection, Statement et ResultSet
L'objet Statement en JDBC est utilisé pour exécuter des requêtes SQL avec la méthode
executeQuery() et d'exécuter des instructions de mise à jour avec la méthode
executeUpdate().
L'objet ResultSet en JDBC est utilisé pour représenter les résultats d'une requête SQL
exécutée sur une base de données. Il permet de parcourir les lignes de résultats et d'accéder
aux données de chaque ligne. L'objet ResultSet est obtenu à partir d'un objet Statement ou
d'un objet PreparedStatement après l'exécution d'une requête SELECT à l'aide de la
méthode executeQuery().
199
Chapitre 6 : JDBC
Requêtes SQL
Utilisation des objets Connection, Statement et ResultSet
200
100
15/05/2023
Chapitre 6 : JDBC
Requêtes SQL
Utilisation des objets Connection, Statement et ResultSet
executeUpdate
201
Chapitre 6 : JDBC
Requêtes SQL
Utilisation de l’objets PreparedStatement
L'objet PreparedStatement en JDBC est utilisé pour exécuter des requêtes SQL paramétrées
de manière sécurisée. Il permet de préparer une requête SQL avec des paramètres marqués
à la place des valeurs réelles, ce qui facilite l'exécution répétée de la requête avec
différentes valeurs de paramètres sans avoir à recompiler la requête à chaque fois.
202
101
15/05/2023
Chapitre 6 : JDBC
Requêtes SQL
Utilisation de l’objets PreparedStatement
203
Chapitre 6 : JDBC
Transactions JDBC
Les transactions JDBC (Java Database Connectivity) sont une série d'actions qui sont
réalisées ensemble comme une seule unité de travail. Si toutes les actions réussissent, les
modifications sont validées dans la base de données. Si une action échoue, toutes les
modifications sont annulées et la base de données reste inchangée.
204
102
15/05/2023
Chapitre 6 : JDBC
Transactions JDBC
La gestion des transactions JDBC implique les étapes clés suivantes :
• Démarrer une Transaction : Vous démarrez une transaction en désactivant le mode
de validation automatique pour une connexion. En JDBC, une transaction est
automatiquement démarrée après que le mode de validation automatique a été
désactivé.
• Exécuter les Requêtes SQL : Une fois la transaction démarrée, vous pouvez exécuter
une ou plusieurs requêtes SQL. Ces requêtes peuvent être des opérations d'insertion,
de mise à jour, de suppression ou de sélection.
• Valider ou Annuler la Transaction : Après l'exécution des requêtes SQL, vous pouvez
décider de valider ou d'annuler la transaction. Si vous validez la transaction, toutes les
modifications effectuées pendant la transaction sont enregistrées de manière
permanente dans la base de données. Si vous annulez la transaction, toutes les
modifications effectuées pendant la transaction sont annulées.
• Réactiver le Mode de Validation Automatique : Une fois la transaction terminée
(validée ou annulée), vous pouvez réactiver le mode de validation automatique.
205
Chapitre 6 : JDBC
Transactions JDBC
Il est important de noter que la gestion des transactions est essentielle pour assurer
l'intégrité des données dans une base de données. Si plusieurs actions doivent être
exécutées ensemble comme une seule unité de travail, vous devez utiliser la gestion des
transactions pour vous assurer que toutes les actions sont effectuées avec succès ou que
toutes les actions sont annulées en cas d'échec de l'une d'entre elles.
206
103
15/05/2023
Chapitre 6 : JDBC
Transactions JDBC
Systèmes bancaires : Supposons qu'une transaction bancaire implique le transfert d'argent
d'un compte à un autre. Il s'agit de deux opérations distinctes : débiter un compte et
créditer un autre. Ces deux opérations doivent être effectuées ensemble. Si l'une d'elles
échoue, l'autre doit également être annulée pour maintenir l'intégrité des données.
207
Chapitre 6 : JDBC
Transactions JDBC
Systèmes de réservation : Dans un système de réservation de billets de cinéma ou de vol,
une transaction pourrait impliquer la sélection d'un siège, la mise à jour de la disponibilité
du siège et le paiement du billet. Ces opérations doivent être effectuées ensemble comme
une seule transaction.
208
104
15/05/2023
Chapitre 6 : JDBC
Transactions JDBC
209
Chapitre 6 : JDBC
Transactions JDBC
Le terme "rollback" dans le contexte des transactions de base de données fait référence à
l'opération qui annule toutes les modifications qui ont été effectuées pendant une
transaction.
210
105