POO en java
Pr. AIT MAIT Hind
2025/2026
C h api tre 1
Introduction au Java
Introduction
Caractéristiques du langage java
• Orienté objet: Java repose sur le paradigme de la programmation orientée objet (POO).
• Portable: Grâce à la machine virtuelle Java (JVM), le code Java peut s’exécuter sur différentes plateformes
("Write Once, Run Anywhere").
• Sécurisé: Java propose des fonctionnalités avancées pour la gestion de la sécurité et la protection des applications.
• Multithreading: Java permet l’exécution simultanée de plusieurs threads, optimisant ainsi la performance.
POO en java 1
Introduction
Mode d’exécution
POO en java 2
Introduction
Pourquoi Java?
L’API de Java
• Java fournit de nombreuses librairies de classes remplissant des fonctionnalités très diverses: c’est l’API Java.
• API (Application and Programming Interface /Interface pour la programmation d’applications): Ensemble de
bibliothèques permettant une programmation plus aisée.
• Ces classes sont regroupées par catégories en paquetages (ou "packages").
POO en java 3
Introduction
Pourquoi Java?
L’API de Java
Les principaux paquetages:
• [Link] : structures de données classiques.
• [Link]: entrées / sorties.
• [Link] : chaînes de caractères, interaction avec l’OS, threads.
• [Link] : les applets sur le web.
• [Link] : interfaces graphiques, images et dessins...
• [Link] : package récent proposant des composants « légers» pour la création d’interfaces graphiques.
• [Link] : sockets, URL ...
• [Link] : Remote Method Invocation.
• [Link] : fournit le package JDBC.
POO en java 4
Introduction
Outil de développement: le JDK
• JDK signifie Java Development Kit (Kit de développement Java).
• Il contient:
◦ les classes de base de l’API java,
◦ le compilateur: javac,
◦ la JVM (machine virtuelle): java,
◦ le générateur de documentation au format HTML : javadoc.
POO en java 5
C h api tre 2
Structures fondamentales
Syntaxe du langage Java
Les commentaires (1)
• /* commentaire sur une ou plusieurs lignes */
• // commentaire de fin de ligne
• /** commentaire d’explication */
• Les commentaires d’explication se placent généralement juste avant une déclaration (d’attribut ou de
méthode).
• Ils sont récupérés par l’utilitaire javadoc et inclus dans la documentation ainsi générée.
POO en java 6
Syntaxe du langage Java
Les commentaires (2)
/** Classe Calculatrice
* Classe simple pour effectuer une addition de deux nombres. Description :
* @author Hind Classe simple pour effectuer une addition de
* @version 1.0 deux nombres.
*/ Author : Hind
public class Calculatrice { Version : 1.0
javadoc [Link]
/** Méthode Description
* Calcule la somme de deux entiers. Calcule la somme
* @param a premier entier de deux entiers.
* @param b second entier Paramètres : a –
* @return la somme de a et b int addition(int a, premier entier
*/ int b) b – second
public int addition(int a, int b) { Entier
return a + b; Retourne : la
} somme de a et b
}
POO en java 7
Syntaxe du langage Java
Instructions, blocs et blancs
• Les instructions Java se terminent par un ;
• Les blocs sont délimités par :
◦ {pour le début de bloc.
◦ } pour la fin du bloc.
• Un bloc permet de définir un regroupement d’instructions. La définition d’une classe ou d’une méthode se fait
dans un bloc.
• Les espaces, tabulations, sauts de ligne sont autorisés. Cela permet de présenter un code plus lisible.
POO en java 8
Syntaxe du langage Java
Point d’entrée d’un programme Java
• Pour pouvoir faire un programme exécutable il faut toujours une classe qui contienne la méthode "main"
• C’est le point d’entrée dans le programme: le microprocesseur sait qu’il va commencer à exécuter les instructions à
partir de cet endroit.
public static void main(String[] args) {
...
}
POO en java 9
Syntaxe du langage Java
Identificateurs
• On a besoin de nommer les classes, les variables, les constantes, etc. ;
on parle d’identificateur. (Attention: Java distingue les majuscules des minuscules.)
Type d'identificateur Exemple valide Remarques
Commence par une lettre
Nom de classe MaClasse
majuscule (convention).
Commence par une lettre
Nom de méthode calculerValeur
minuscule (convention).
Nom de variable compteur Commence par une lettre.
Commence par le caractère
Nom de variable _temperature
de soulignement (_).
Commence par le signe
Nom de variable $montantFinal
dollar ($).
Peut contenir des chiffres
Nom de variable i18n
(sauf en première position).
Nom de constante MAXI En majuscules(convention).
POO en java 10
Syntaxe du langage Java
Affectation
L'affectation est l'opération qui consiste à donner une valeur à un identificateur (variable ou constante)
que l'on a préalablement déclaré.
• Elle utilise le symbole de l'égalité simple (=).
• La variable (ou l'identificateur) est toujours placée à gauche du signe =.
• La valeur ou l'expression est toujours placée à droite du signe =.
int compteur = 0;
compteur = 5; // C'est permis
Exemple:
final int NOMBRE_JOURS = 7; // NOMBRE_JOURS = 8; // <-- C'est interdit, cause une erreur de
compilation!
POO en java 11
Syntaxe du langage Java
Écriture en Java
L’écriture sur l’écran se fait à l’aide de l’objet [Link] et de ses méthodes principales:
• [Link](): Affiche le texte sans retour à la ligne.
Exemple: [Link]("Bonjour ");
[Link]("tout le monde !");
• [Link](): Affiche le texte suivi d’un saut de ligne.
[Link]("Bonjour");
Exemple:
[Link]("tout le monde !");
• [Link](): Permet d’afficher du texte formaté, similaire à printf en langage C.
int age = 20;
Exemple:
[Link]("J'ai %d ans.", age);
POO en java 12
Syntaxe du langage Java
Lecture en Java
Pour lire des données saisies par l’utilisateur, on utilise la classe Scanner, appartenant au paquetage
[Link].
Avant d’utiliser Scanner, il faut l’importer: import [Link];
Création d’un objet Scanner: Scanner sc = new Scanner([Link]);
import [Link];
public class Lecture {
public static void main(String[] args) {
Exemple: Scanner scanner = new Scanner([Link]);
[Link]("Entrez votre nom : ");
String nom = [Link]();
[Link]("Bonjour, " + nom + " !");
[Link]();
}
}
POO en java 13
Syntaxe du langage Java
Les types de bases
• En Java, tout est objet sauf les types de base.
• Il y a 8 types de base :
◦ un type booléen pour représenter les variables ne pouvant prendre que 2 valeurs (vrai et faux, 0 ou 1, etc.) : boolean
avec les valeurs associées true et false.
◦ un type pour représenter les caractères: char.
◦ quatre types pour représenter les entiers de divers taille : byte, short, int et long.
◦ deux types pour représenter les réelles : float et double.
POO en java 14
Syntaxe du langage Java
Les opérateurs
Les opérateurs Java sont des symboles spéciaux qui effectuent des opérations sur les variables et les
valeurs. Ils sont utilisés pour manipuler les données et les variables dans les expressions. Java propose un
large éventail d'opérateurs classés en plusieurs types en fonction de leur fonctionnalité.
Opérateurs arithmétiques
+ (Ajout)
int a = 10;
- (Soustraction)
int b = 5;
* (Multiplication) [Link]("Addition: " + (a + b)); // Output: 15
/ (Division) [Link]("Subtraction: " + (a - b)); // Output: 5
[Link]("Multiplication: " + (a * b));// Output: 50
% (module)
[Link]("Division: " + (a / b)); // Output: 2
[Link]("Modulus: " + (a % b)); // Output: 0
POO en java 15
Syntaxe du langage Java
Les opérateurs
Opérateurs relationnels
== (égal à)
!= (non égal à) int a = 10;
int b = 5;
> (Supérieur à) [Link](a == b); // Output: false
< (moins de) [Link](a > b); // Output: true
[Link](a < b); // Output: false
>= (supérieur ou égal)
<= (Inférieur ou égal à)
Opérateurs logiques
boolean x = true;
&& (ET logique)
boolean y = false;
|| (OU logique) [Link](x && y); // Output: false
! (logique NOT) [Link](x || y); // Output: true
[Link](!x); // Output: false
POO en java 16
Syntaxe du langage Java
Les opérateurs
Opérateurs d’assignation
+= (Ajouter et attribuer)
-= (Soustraire et céder)
*= (Multiplier et attribuer) int a = 10;
a += 5; // Equivalent to a = a + 5
/= (Diviser pour mieux régner)
[Link](a); // Output: 15
%= (Modulus et assign)
Opérateurs d’incrémentation
++ (Incrément)
-- (Diminution) int a = 10;
[Link](++a); // Output: 11
[Link](--a); // Output: 10
POO en java 17
Les structures conditionnelles
Instructions conditionnelles
• Effectuer une ou plusieurs instructions seulement si une certaine condition est vérifiée.
if (condition){
//bloc d'instructions
}
• Effectuer une ou plusieurs instructions si une certaine condition est vérifiée sinon effectuer d’autres instructions.
if (condition) {
//1er bloc d'instructions
}
else {
//2ème bloc d'instructions
}
POO en java 18
Les structures conditionnelles
Instructions conditionnelles
import [Link];
public class Comparaison {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]); // Création de l’objet Scanner
[Link]("Entrez le premier entier (a) : ");
Exemple int a = [Link](); // Lecture du premier entier
[Link]("Entrez le deuxième entier (b) : ");
int b = [Link](); // Lecture du deuxième entier
if (a > b)
[Link]("Le plus grand est : " + a);
else
[Link]("Le plus grand est : " + b);
[Link](); // Fermeture du Scanner
}
}
POO en java 19
Les structures conditionnelles
Instructions conditionnelles
switch
• L’utilisation de if / else peut s’avérer lourde quand on doit
traiter plusieurs sélections et de multiples alternatives. switch (nb)
{
• pour cela existe en Java le switch / case assez identique à case 1:
celui de C/C++ . [Link]("Un");
break;
• La valeur sur laquelle on teste doit être un char ou un case 2:
entier. [Link]("Deux");
break;
• L’exécution des instructions correspondant à une default:
alternative commence au niveau du case correspondant et se [Link]("Autre nombre");
break;
termine à la rencontre d’une instruction break ou arrivée à la }
fin du switch.
POO en java 20
Les structures répétitives
Les structures répétitives
• On veut répéter une ou plusieurs instructions un nombre indéterminés de fois: on répète l’instruction ou le bloc
d’instruction tant que une certaine condition reste vraie.
• nous avons en Java une première boucle while:
import [Link];
• while (condition) public class Factorielle {
public static void main(String[] args) {
{ Scanner sc = new Scanner([Link]);
//bloc d'instructions [Link]("Entrer n: ");
int n = [Link]();
} int result = 1, i = n;
while (i > 1) {
result = result * i;
i--; }
[Link]("La factorielle de " + n + " vaut " + result);
[Link]();}}
POO en java 21
Les structures répétitives
Les structures répétitives
• Un autre type de boucle:
• do (condition) { int i = 0;
//bloc d'instructions do {
}while (condition); [Link](i);
i++;
}while (i < 5);
POO en java 22
Les structures répétitives
Les structures répétitives
Boucle déterminée : "for"
• On veut répéter une ou plusieurs instructions un nombre déterminés de fois : on répète l’instruction ou le
bloc d’instructions pour un certain nombre de pas.
for (int i = 1; i <= 10; i++)
{
[Link](i);
}
POO en java 23
Les structures répétitives
Les structures répétitives
Boucle déterminée : "for each"
• for-each (aussi appelé enhanced for loop) est une version simplifiée de la boucle for qui permet d’itérer directement
sur les éléments d’un tableau ou d’une collection (par exemple, ArrayList, HashSet, etc.) sans avoir à gérer un
compteur ou un index.
• Syntaxe générale:
for (Type element : collectionOuTableau) {
// Instructions utilisant 'element'
}
Type : le type des éléments contenus dans la collection ou le tableau.
Elément : variable temporaire qui prend successivement la valeur de chaque élément.
collection Ou Tableau : tableau ou objet qui implémente l’interface Iterable (par ex. ArrayList, HashSet, etc.).
POO en java 24
Les structures répétitives
Les structures répétitives
Boucle déterminée : “for each”
Exemple:
public static void main(String[] args){
int collection[] = {10, 20, 30, 40, 50}
for (int value : collection){
[Link](value);
}
}
POO en java 25
Les structures répétitives
Exercice d’application:
Écrire un programme Java qui permet à l’utilisateur de saisir une suite de nombres entiers.
•La saisie se poursuit tant que l’utilisateur n’entre pas -1.
•Lorsque l’utilisateur tape -1, le programme s’arrête.
•À la fin, le programme affiche :
• le plus petit nombre saisi,
• le plus grand nombre saisi.
POO en java 26
Les structures répétitives
Exercice d’application: Solution
import [Link];
if (nombre != -1) {
public class MinMaxSimple {
if (nombre < min) min = nombre;
public static void main(String[] args) {
else if (nombre > max) max = nombre;
Scanner sc = new Scanner([Link]);
}
[Link]("Entrez un nombre (ou -1 pour arrêter) : ");
}
int nombre = [Link]();
[Link]("Le plus petit nombre est : " +
if (nombre == -1) {
min);
[Link]("Aucune valeur saisie !");
[Link]("Le plus grand nombre est : " +
} else {
max);
int min = nombre;
}
int max = nombre;
[Link](); }}
while (nombre != 1)
{ [Link]("Entrez un nombre (ou -1 pour arrêter) :");
nombre = [Link]();
POO en java 27
C h api tre 3
Tableaux
Les tableaux
Les tableaux
Les tableaux permettent de stocker plusieurs valeurs de même type.
◦ Les valeurs contenues dans la variable sont repérées par un indice.
◦ Les tableaux sont des objets
Déclaration : (Type [] nomTableau ;).
Exemple: int notes[];
int[] notes; // forme recommandée en Java
Création du tableau
notes = new int[5]; // crée un tableau de 5 entiers initialisés à 0
Déclaration + création en une seule ligne
int[] notes = new int[5];
ou bien, avec initialisation directe: int[] notes = {12, 15, 18, 10, 14};
POO en java 28
Les tableaux
Les tableaux: Opérations de Base
Parcourir un tableau
• Pour parcourir un tableau, on utilise l’instruction "for"
Méthode 1:
public class Demo {
public static void main( String [] args ) {
// Déclaration et initialisation du tableau
int array [] = { 10, 20, 30, 40, 50 };
// Parcours du tableau
for ( int i=0; i<[Link]; i++ ) {
[Link]( array[ i ] );
}
}
}
POO en java 29
Les tableaux
Les tableaux: Opérations de Base
Parcours avec un for each
Méthode 2:
public class Demo {
public static void main( String [] args ) {
// Declaration et initialisation du tableau
int array[] = { 10, 20, 30, 40, 50 };
[Link]( "Parcours du tableau avec un for each" );
for ( int value : array ) {
[Link]( value );
}
}
}
POO en java 30
Les tableaux
Les tableaux: Opérations de Base
Accéder à un élément
int[] notes = {12, 15, 18, 10, 14};
// Afficher le premier élément
Exemple:
[Link](notes[0]); // Résultat : 12
// Afficher le troisième élément
[Link](notes[2]); // Résultat : 18
Modifie un élément notes[1] = 20; // Remplace 15 par 20
notes[3] = 11; // Remplace 10 par 11
Obtenir la Longueur
int longueur = [Link];
POO en java 31
Les tableaux
Arrays en java
Les tableaux offrent les opérations essentielles:
• accès à un élément,
• modification,
• calcul de la longueur.
Si l’on veut par exemple :
• trier un tableau,
• le copier,
• le comparer,
Il serait fastidieux de tout réécrire à chaque fois.
Pour simplifier ces manipulations, Java fournit une classe utilitaire appelée Arrays, qui contient de
nombreuses méthodes prêtes à l’emploi pour travailler efficacement avec les tableaux.
POO en java 32
Les tableaux
Arrays en java
[Link]() → Afficher le contenu d’un tableau
import [Link];
int[] notes = {12, 8, 15, 10, 18}; [12, 8, 15, 10, 18]
[Link]([Link](notes));
[Link]() → Remplir un tableau avec une même valeur
import [Link];
int[] tab = new int[5]; [7, 7, 7, 7, 7]
[Link](tab, 7); // Remplit tout le tableau avec 7
[Link]([Link](tab));
POO en java 33
Les tableaux
Arrays en java
[Link]() → Trier un tableau en ordre croissant
import [Link];
int[] valeurs = {5, 2, 8, 1, 3}; [1, 2, 3, 5, 8]
[Link](valeurs);
[Link]([Link](valeurs));
[Link]() → Comparer deux tableaux
import [Link];
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
int[] c = {3, 2, 1};
[Link]([Link](a, b)); // true
[Link]([Link](a, c)); // false
POO en java 34
Les tableaux
Exercice d’application:
Écrire un programme Java qui:
• Demande à l’utilisateur de saisir les 5 valeurs du tableau A.
• Demande à l’utilisateur de saisir les 4 valeurs du tableau B.
• Fusionne les deux tableaux dans un troisième tableau C, de manière à ce que C contienne
tous les éléments de A suivis de ceux de B.
Affiche à la fin:
• le contenu du tableau A,
• le contenu du tableau B,
• et le contenu du tableau C après la fusion.
POO en java 35
Les tableaux
Exercice d’application: Solution // Étape 2 : Déclaration et saisie du tableau B
int[] B = new int[4];
import [Link];
[Link]("\n--- Saisie du tableau B ---");
import [Link];
for (int i = 0; i < [Link]; i++) {
public class FusionTableauxSaisie {
[Link]("Entrez la valeur " + (i + 1) + " : ");
public static void main(String[] args) {
B[i] = [Link]();
Scanner sc = new Scanner([Link]);
}
// Étape 1 : Déclaration et saisie du tableau A
// Étape 3 : Création du tableau C pour la fusion
int[] A = new int[5];
int[] C = new int[[Link] + [Link]];
[Link]("--- Saisie du tableau A ---");
// Copier les éléments du tableau A dans C
for (int i = 0; i < [Link]; i++) {
for (int i = 0; i < [Link]; i++) {
[Link]("Entrez la valeur " + (i + 1) + " : ");
C[i] = A[i];}
A[i] = [Link]();
}
POO en java 36
Les tableaux
Exercice d’application: Solution (suite)
// Copier les éléments du tableau B dans C à la suite de A
for (int i = 0; i < [Link]; i++) {
C[[Link] + i] = B[i];
}
// Étape 4 : Affichage des trois tableaux
[Link]("Tableau A : " + [Link](A));
[Link]("Tableau B : " + [Link](B));
[Link]("Tableau C (fusionné) : " + [Link](C));
[Link]();
}
}
POO en java 37