Introduction à la POO en Java
Introduction à la POO en Java
POO : Java
JAVA
Sofiane HACHICHA
[Link]@[Link]
Sofiane HACHICHA
CPI2
ISIMG 2025 - 2026 2025/2026 1
Chapitre
POO : Java
3
Syntaxe et éléments de base
de Java
Sofiane HACHICHA
ISIMG 2025 - 2026
64
3- Les bases du langage
3.1 Les commentaires (1/5)
Sofiane HACHICHA
Les commentaires pour documentation.
ISIMG 2025 - 2026
65
3- Les bases du langage
3.1 Les commentaires (2/5)
Commentaires mono-ligne :
POO : Java
Sofiane HACHICHA
ISIMG 2025 - 2026
66
3- Les bases du langage
3.1 Les commentaires (3/5)
Commentaires multi-lignes :
POO : Java
Sofiane HACHICHA
ISIMG 2025 - 2026
67
3- Les bases du langage
3.1 Les commentaires (4/5)
/**
* Classe test
/// Classe test
* <p>
///
* Un premier exemple :
/// Un premier exemple :
* <ul>
/// - simple
* <li>simple
/// - complet
* <li>complet
* </ul>
*/
Sofiane HACHICHA
ISIMG 2025 - 2026
69
3- Les bases du langage
3.2 Variables
Exemple :
var x = 1;
Sofiane HACHICHA
ISIMG 2025 - 2026 x = "test"; // Ceci génère une erreur à la compilation
71
3- Les bases du langage
3.4 Typage statique des variables
type nomVariable;
POO : Java
Sofiane HACHICHA
ISIMG 2025 - 2026
72
3- Les bases du langage
3.4.1 Les types primitifs numériques (1/4)
Taille en bits 8 16 32 64
Etendue -128 -32768
… … -231 … 231-1 -263 … 263-1
127 32767
Sofiane HACHICHA
ISIMG 2025 - 2026
73
3- Les bases du langage
3.4.1 Les types primitifs numériques (2/4)
float double
Taille en bits 32 64
Exemple de 3.25f 3.25
valeur
Sofiane HACHICHA
ISIMG 2025 - 2026
74
3- Les bases du langage
3.4.1 Les types primitifs numériques (3/4)
Sofiane HACHICHA
char x =97; // 97 est le code caractère de la lettre a en UTF-16
ISIMG 2025 - 2026
78
3- Les bases du langage
3.4.4 Les types objets (1/2)
mémoire.
arithmétique
d'incrémentation et de décrémentation
de comparaison
de bits
logique
sur les chaînes de caractères
de manipulations binaires
le nombre d’opérandes :
unaire
Sofiane HACHICHA binaire
ISIMG 2025 - 2026
ternaire 82
3- Les bases du langage
3.5.1 Opérateurs unaires
- négation i=-j
++ incrémentation de 1 i=j++ ou i=++j
POO : Java
- soustraction i = j - k;
-= i -= j; i= i - j
* multiplication x=2*y;
*= x *=x; x= x * x
/ division i =j/k;
/= (tronque si les x /= 10; x= x /10
arguments sont entiers)
% modulo i = j %k;
%= i %=2; i= i %2
<< décalage à gauche i<<k; i*2k
>> décalage à droite i>>k; i/2k (si i≥0)
Sofiane HACHICHA
ISIMG 2025 - 2026
84
3- Les bases du langage
3.5.3 Opérateurs relationnels
Exemples :
int res = (v==2) ? 1 : 0;
On affecte à res la valeur 1 si v vaut 2, sinon on
affecte à res la valeur 0.
Les conditions des if, for, while doivent être des booleans.
Sofiane HACHICHA
ISIMG 2025 - 2026
88
3- Les bases du langage
3.6.1 structures de contrôle : if
Syntaxe :
if (expression booléenne ) {instruction ;}
POO : Java
Syntaxe Exemple
if (expression booléene ) public class if_elseApplication {
{
instruction 1 ; public static void main(String[ ] args)
POO : Java
…… {
instruction i ; int i = 4 ;
} boolean test = (i % 2 == 0) ? true : false;
else
{ if ( test )
instruction j ; {
[Link] (" i est pair " );
…… }
instruction n ; else
} {
[Link] (" i est impair " );
Résultat d’affichage }
}
}
Sofiane HACHICHA
ISIMG 2025 - 2026
90
3- Les bases du langage
3.6.1 structures de contrôle : if – else if
Syntaxe Exemple
if (expression booléene 1) public class if_else_ifApplication {
{
instruction 1 ; public static void main(String[ ] args)
POO : Java
…… {
instruction i ; var x = -3;
} if ( x > 0 )
else if (expression booléene 2 ) {
{ [Link] (x + " est strictement positif");
instruction j; }
…… else if ( x < 0 )
instruction m ; {
} [Link] (x + " est strictement négatif");
else }
{ else
instruction m+1 ; {
…… [Link] (x + " est nul");
}
}
}
Résultat d’affichage }
Sofiane HACHICHA
ISIMG 2025 - 2026
91
3- Les bases du langage
3.6.2 structures de contrôle : switch (1/8)
Syntaxe Exemple
switch (nomVariable) public class switchApplication1 {
{ public static void main(String[ ] args)
POO : Java
case valeur_1 : {
int i = 1;
instr1_1; instr1_2; …
switch ( i )
break; { case 0 :
... [Link] (" 0 " );
case valeur_N : case 1 :
break;
instrN_1; instrN_2; [Link] (" 1 " );
break; break;
case 2 :
default: /* optionnel */ [Link] (" 2 " );
instrD_1; instrD_2; ... break;
break; default :
[Link] (i);
} }
break;
Résultat d’affichage
}
}
Sofiane HACHICHA
ISIMG 2025 - 2026
93
3- Les bases du langage
3.6.2 structures de contrôle : switch (3/8)
accepter {
plusieurs valeurs String x = "2";
séparées par des switch ( x )
virgules. { case "1" :
[Link] (" un " );
break;
case "2" :
[Link] (" deux " );
case "3", "4" :
[Link] (" trois " );
break;
default :
[Link] (" autre " );
break;
}
Résultat d’affichage
}
}
Sofiane HACHICHA
ISIMG 2025 - 2026
94
3- Les bases du langage
3.6.2 structures de contrôle : switch (4/8)
Résultat d’affichage }
}
Sofiane HACHICHA
ISIMG 2025 - 2026
95
3- Les bases du langage
3.6.2 structures de contrôle : switch (5/8)
Switch Expression).
{ int seats = 5;
La valeur retournée
var type = switch ( seats )
sera fournie à droite { case 1, 2 -> "small";
de "->".
case 3, 4, 5 -> {
En présence d’un [Link] (" test " );
bloc de code, utiliser yield "medium";
}
yield pour préciser la default -> "big";
valeur à retourner. //bloc default obligatoire sinon erreur
La clause default est }; // faut pas oublier le point virgule ( ; )
obligatoire sauf pour [Link](type);
les types énumérés
Résultat d’affichage }
}
Sofiane HACHICHA
ISIMG 2025 - 2026
96
3- Les bases du langage
3.6.2 structures de contrôle : switch (6/8)
Exemple
enum Jours {LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE}
POO : Java
Sofiane HACHICHA
ISIMG 2025 - 2026
97
3- Les bases du langage
3.6.2 structures de contrôle : switch (7/8)
Sofiane HACHICHA
ISIMG 2025 - 2026
98
3- Les bases du langage
3.6.2 structures de contrôle : switch (8/8)
Exemple
public class TestSwitch{
static void validObject(Object obj){
switch (obj) {
POO : Java
Exemple :
public class forApplication {
{
int somme = 0;
for ( int compteur = 1, max = 4 ; compteur < max ; compteur++)
{
somme = somme + compteur;
}
[Link] (somme );
} Résultat d’affichage
}
Fonctionnement :
initialisation du compteur,
comparaison avec max (expression booléenne),
réalisation des instructions,
Sofiane HACHICHA
ISIMG 2025 - 2026 Incrémentation du compteur et on recommence.
100
3- Les bases du langage
3.6.3 structures de contrôle : for (2/3)
int i = 0;
for (; i < 10; ++i) {
// instructions
}
Du coup, il est simple de réaliser une boucle infinie :
for (int j=1; j < 5;) {
// instructions
}
for (; ;) {
Sofiane HACHICHA // instructions
ISIMG 2025 - 2026
} 101
3- Les bases du langage
3.6.3 structures de contrôle : for (3/3)
Sofiane HACHICHA
ISIMG 2025 - 2026
102
3- Les bases du langage
3.6.4 structures de contrôle : while
Exemple :
[Link] (somme );
} Résultat d’affichage
}
Sofiane HACHICHA
ISIMG 2025 - 2026
103
3- Les bases du langage
3.6.5 structures de contrôle : do - while
Exemple :
public class do_WhileApplication {
{
int compteur =1; int max = 4 ; int somme = 0;
do
{
somme = somme + compteur ;
compteur++;
}
while (compteur < max ) ;
[Link] (somme );
}
Résultat d’affichage
}
Sofiane HACHICHA
ISIMG 2025 - 2026
104
3- Les bases du langage
3.6.6 structures de contrôle : break
Utilisation :
Pour sortir d’une structure de contrôle (for ou while
ou do-while) avant que la condition du test soit
POO : Java
remplie.
Quand la boucle rencontre une instruction break, elle se
termine immédiatement sans exécuter le code restant.
public class breakApplication { Résultat d’affichage
public static void main(String[ ] args)
{
int compteur =0;
while (compteur < 10 )
{
[Link] (compteur );
compteur++;
if (compteur == 5) break;
Sofiane HACHICHA }
}
ISIMG 2025 - 2026
} 105
3- Les bases du langage
3.6.7 structures de contrôle : continue
Utilisation :
Pour arrêter l’exécution de l’itération actuelle d’une
structure de contrôle (for ou while ou do-while) et
POO : Java
Sofiane HACHICHA
ISIMG 2025 - 2026
106
3- Les bases du langage
3.6.8 structures de contrôle : return
return 1500.7; }
Quand une méthode est déclarée void, il faut utiliser la
forme de retour qui ne retourne pas de valeur : return;
public void doSomething(){
return; }
Écrire des instructions immédiatement après une
instruction return génère une erreur de compilation
puisque ces instructions ne seront jamais exécutées.
if (i % 2 == 0) {
return 0;
Sofiane HACHICHA i++; // Erreur à la compilation
ISIMG 2025 - 2026
107
}
3- Les bases du langage
3.7 Les conversions des types (1/12)
Conversions explicites :
POO : Java
Conversions implicites :
celles faites automatiquement par le compilateur :
lors d'une affectation,
lors d'une promotion arithmétique,
lors d'un passage de paramètres (lors de l'invocation d'une
méthode),
Sofiane HACHICHA
ISIMG 2025 - 2026
Lors d’une conversion du type primitif vers son Wrapper
(ou inversement) 108
3- Les bases du langage
3.7 Les conversions des types (2/12)
Conversion explicite :
Objectif :
POO : Java
Comment ? :
Préfixer l’opérande par le type choisi.
Encadrer le type choisi par des parenthèses.
Exemple :
Résultat d’affichage
double d = 2.5 ;
long l = (long) d ;
Sofiane HACHICHA [Link]("d = "+d+" ; l="+l);
ISIMG 2025 - 2026
109
3- Les bases du langage
3.7 Les conversions des types (3/12)
Comment ? :
Exemple 1 :
Contrairement à ce qui se passe dans C, les conversions
pouvant provoquer une perte de valeur ne sont pas
autorisées de manière implicite comme dans C : cela doit
être explicitement demandé.
Exemple 2 :
Un type char peut être utilisé partout où une valeur de
type int est permis.
Sofiane HACHICHA
ISIMG 2025 - 2026
110
3- Les bases du langage
3.7 Les conversions des types (4/12)
float k= 1.2f ;
i = k; Erreur de compilation
}
}
Solution :
Sofiane HACHICHA
ISIMG 2025 - 2026
111
3- Les bases du langage
3.7 Les conversions des types (5/12)
[Link]( i ) ;
}
}
Résultat d’affichage
Sofiane HACHICHA
ISIMG 2025 - 2026
112
3- Les bases du langage
3.7 Les conversions des types (6/12)
[Link]( i ) ;
}
}
Résultat d’affichage
Sofiane HACHICHA
ISIMG 2025 - 2026
113
3- Les bases du langage
3.7 Les conversions des types (7/12)
Integer j = 2;
UnBoxing
int k = j; Conversion implicite
[Link](k); Résultat d’affichage
int l = 3; AutoBoxing
Integer m = l; Conversion implicite
[Link](m); Résultat d’affichage
Integer z = m + j;
UnBoxing
if(z<10){
[Link](z); Résultat d’affichage
Sofiane HACHICHA }
ISIMG 2025 - 2026
115
3- Les bases du langage
3.7 Les conversions des types (9/12)
Attention :
Il n'y a pas de conversion possible (implicite ou
explicite) entre un type entier et le type booléen :
POO : Java
int i = 0;
If ( i ) // Erreur à la compilation
{
………..
}
If ( i != 0 ) // Ok
{
………..
}
Sofiane HACHICHA
ISIMG 2025 - 2026
119
3- Les bases du langage
3.8 Les tableaux (1/4)
Déclaration
monodimensionnel
int[ ] tableau_Entier;
POO : Java