Développement Orienté Objet :
Programmation objet/Java
Pr. Mariame Nassit
2025/2026 [Link] 1
Plan
1. Introduction à Java
2. Classes et Objets
3. Constructeurs
4. Héritage
5. Polymorphisme
6. Tableaux et collection
7. Classes abstraites, interfaces et packages
8. Gestion des exceptions
9. Flux d’entrées/ sorties en JAVA
2025/2026 [Link] 2
Chapitre 1
Introduction à Java
2025/2026 [Link] 3
Introduction à Java
Introduction et historique
Programmation traditionnelle:
• Dans la programmation classique, les données sont séparées des traitements. Une application est
généralement structurée en deux étapes principales :
1. Définition des structures de données :
Cette étape consiste à créer des structures capables de stocker les informations nécessaires
pour gérer le système.
2. Conception des fonctions et procédures :
Cela implique de définir les opérations ou traitements qui vont agir sur les structures de
données établies lors de la première étape
2025/2026 [Link] 4
Introduction à Java
Introduction et historique
Programmation traditionnelle:
Exemple
• Dans une application de gestion de bibliothèque, on peut distinguer deux types de modèles
conceptuels :
Modèle Conceptuel des Données (MCD) :
Il représente les informations relatives aux données, telles qu’une personne avec ses différentes
caractéristiques : nom, prénom, adresse, et CNE.
Modèle Conceptuel de Traitement (MCT) :
Il décrit les opérations réalisées sur ces données. Par exemple, le traitement d’une demande
d’emprunt de livre, avec des conditions spécifiques comme la disponibilité ou non du livre.
• Ce modèle illustre clairement la séparation entre les données et les traitements, un principe essentiel
de la programmation traditionnelle.
•
2025/2026 [Link] 5
Introduction à Java
Introduction et historique
Programmation orientée objet
• La programmation orientée objet a été introduite pour répondre aux limites des approches précédentes.
Ses principes fondamentaux sont :
Encapsulation : rassembler au sein d'une même unité (appelée classe) les données et les traitements.
Contrôle d’accès : déclarer les données comme privées pour forcer l’utilisateur à employer les
traitements encadrés par la classe.
• En général, les langages orientés objet reposent sur quatre caractéristiques essentielles : Encapsulation,
Abstraction, Héritage et Polymorphisme.
• En conception et analyse orientées objet, UML est le langage de modélisation le plus utilisé.
• Concernant la programmation orientée objet, Java est l’un des langages les plus populaires.
2025/2026 [Link] 6
Introduction à Java
Introduction et historique
Historique
• Le projet Java, lancé en 1991 par Sun Microsystems et racheté par
Oracle en 2010, avait pour objectif de développer des logiciels capables
de fonctionner indépendamment de la plateforme matérielle utilisée.
Évolution des versions du JDK (Java Development Kit) :
JDK 1.0 : publié en 1996, première version officielle de Java.
JDK 8 : lancé en 2014
JDK 21 : publié en septembre 2024
2025/2026 [Link] 7
Introduction à Java
La plate forme Java
• La plateforme Java repose sur trois éléments principaux :
Le langage Java.
La machine virtuelle Java (JVM).
Les bibliothèques Java.
• La compilation en Java se déroule ainsi :
Le code source (avec l’extension .java) est traduit en bytecode (avec l’extension .class).
Ce bytecode est stocké dans un fichier exécutable par la JVM, permettant une portabilité
totale du code.
2025/2026 [Link] 8
Introduction à Java
Premier programme en Java
• Le code source en Java qui affiche le message "Premier programme en Java" :
public class PremierExemple {
public static void main(String[] args) {
[Link]("Premier programme en Java");
}
}
Remarque:
• Le programme doit impérativement être enregistré dans un fichier dont le nom correspond à celui de
la classe, soit [Link].
• Pour compiler le programme précédent, il est nécessaire d'abord d'installer l'environnement de
développement JDK (Java Development Kit).
2025/2026 [Link] 9
Introduction à Java
Installation de JDK
Installation sous Windows
• Télécharger la version de jdk (jdk-17.0.12_windows-x64_bin.exe ) correspondant à votre architecture (64
bits) de:
[Link]
• Exécuter le fichier téléchargé et ajouter
C:\Program Files\Java\jdk1.7.0\_xy\bin au chemin, en modifiant la variable path.
• Pour modifier la valeur de path:
cliquer sur démarrer puis Panneau de configuration puis Système et sécurité puis Paramètres système
avancés
cliquer sur Variables d'environnement puis chercher dans variables système Path et modifier son
contenu.
2025/2026 [Link] 10
Introduction à Java
Installation de JDK
Compilaion
• Dans une console, naviguez vers le répertoire contenant votre fichier en utilisant la commande cd, puis
tapez la commande suivante :
javac [Link]
• Après la compilation, si votre programme ne contient aucune erreur, le fichier [Link]
sera généré.
Exécution
• Pour exécuter le fichier .class, tapez la commande suivante (sans l'extension) :
java PremierExemple
• Après l'exécution, le message suivant sera affiché : Premier Programme Java.
2025/2026 [Link] 11
Introduction à Java
Installation de JDK
Description du programme
• Première classe
• En Java, toutes les déclarations et instructions doivent être faites à l'intérieur d'une classe.
• public class PremierExemple signifie que vous avez déclaré une classe nommée PremierExemple.
• Méthode main
Pour qu'un programme Java puisse être exécuté, il doit contenir la méthode spéciale main(), qui est l'équivalent de
main dans le langage C.
String[] args dans la méthode main permet de récupérer les arguments transmis au programme lors de son exécution.
String est une classe, et les crochets [] indiquent que args est un tableau (nous aborderons l'utilisation des tableaux plus en
détail plus tard).
Le mot-clé void désigne le type de retour de la méthode main(), indiquant qu'elle ne retourne aucune valeur lors de son
appel.
2025/2026 [Link] 12
Introduction à Java
Installation de JDK
Description du programme
Méthode main
• Le mot-clé static indique que la méthode est accessible et utilisable même sans qu'aucun objet de la classe ne soit créé.
Le mot-clé public définit les droits d'accès. Il est obligatoire dans l'instruction public static void main(String[] args), mais peut être
omis dans la ligne public class PremierExemple.
Méthode println
• La méthode println sert à afficher un message. Par exemple, dans l'instruction [Link](« Premier Programme Java") :
System est une classe.
out est un objet dans la classe System.
println() est une méthode (fonction) de l'objet out. Les méthodes sont toujours suivies de ()
• Les points . séparent les classes, les objets et les méthodes.
• Chaque instruction doit se terminer par un point-virgule (;).
• "Premier Programme Java" est une chaîne de caractères.
2025/2026 [Link] 13
Introduction à Java
Commentaire en Java
• Les commentaires en Java peuvent être écrits sur une seule ligne ou sur plusieurs lignes. Voici un
exemple :
/* Ceci est un commentaire
sur plusieurs lignes */
public class PremierExemple {
// Ceci est un commentaire sur une seule ligne
public static void main(String[] args) {
[Link]("Premier Programme Java ");
}
}
2025/2026 [Link] 14
Introduction à Java
Données primitives
• Voici un tableau regroupant les types primitifs en Java :
Type Description Taille Valeurs possibles
byte Entier 8 bits -128 à 127
short Entier 16 bits -32,768 à 32,767
int Entier 32 bits -2³¹ à 2³¹-1
long Entier 64 bits -2⁶³ à 2⁶³-1
float Nombre à virgule flottante 32 bits ±3.40282347E+38 (précision simple)
±1.7976931348623157E+308 (haute
double Nombre à virgule flottante 64 bits
précision)
char Caractère Unicode 16 bits 0 à 65,535
boolean Valeur booléenne 1 bit true ou false
2025/2026 [Link] 15
Introduction à Java
Données primitives
Constante
• En Java, une constante est une variable dont la valeur est fixe et ne peut pas être modifiée après
son initialisation. Pour déclarer une constante, on utilise le mot-clé final.
final type nomConstante = valeur;
Exemple
• final int AGE_MAX = 100;
• final double PI = 3.14159;
2025/2026 [Link] 16
Introduction à Java
Opérateurs et expressions
• Comme en C, Java possède les opérateurs arithmétiques et de comparaison habituels.
• On retrouve également les expressions arithmétiques, les comparaisons et les boucles classiques du langage
C.
• Des fonctionnalités spécifiques à Java seront abordées dans les chapitres suivants.
2025/2026 [Link] 17
Introduction à Java
Opérateurs et expressions
Exemple
public class ExempleSimple {
public static void main(String[] args) { // Déclaration de variables
int a = 10, b = 5; int resultat;
// Opérateurs arithmétiques
resultat = a - b; // Soustraction
// Expression conditionnelle
if (resultat > 0) {
[Link]("La différence est positive.");
} // Boucle for pour afficher les nombres de 1 à 3
for (int i = 1; i <= 3; i++) {
[Link]("i = " + i);
}
2025/2026 [Link] 18
Introduction à Java
Exercices
• Exercice 1:
Déclarer deux variables avec des valeurs définies et afficher leur somme.
• Exercice 2:
Déclarer un nombre et afficher s'il est pair ou impair.
• Exercice 3:
Calculer et afficher la factorielle d'un nombre fixe, par exemple, 5.
• Exercice 4:
Afficher la table de multiplication d'un nombre fixe (par exemple, 3).
2025/2026 [Link] 19
Chapitre 2
Classes et objets
2025/2026
[Link] 20
Classes et objets
Introduction
• Java est un langage orienté objet. Tout élément doit se trouver à l'intérieur d'une classe.
• Le nom d'une classe (appelé identifiant) doit respecter les règles suivantes :
L'identifiant doit commencer par une lettre, un tiret bas (_) ou un signe dollar ($). Il ne peut
pas commencer par un chiffre.
L'identifiant ne doit contenir que des lettres, des chiffres, le caractère _, et le signe $.
Un identifiant ne peut pas correspondre à un mot réservé (voir tableau ci-dessous).
Un identifiant ne peut pas correspondre aux mots suivants : true, false, ou null. Bien que ces
termes ne soient pas des mots réservés, ils représentent des types primitifs et ne peuvent
donc pas être utilisés comme noms de classe.
2025/2026
[Link] 21
Classes et objets
Introduction
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
Table 1 : Table mots clés
2025/2026 [Link] 22
Classes et objets
Introduction
• En Java, il est recommandé, par convention, de commencer les noms des classes par une lettre majuscule.
• De plus, il est conseillé d'utiliser des majuscules pour le début des autres noms afin d'améliorer la lisibilité
du code.
• La table ci-dessous présente des mots qui peuvent être utilisés comme noms de classes.
Nom de la classe Description
Etudiant Commence par une majuscule
Commence par une majuscule et le deuxième mot commence
NotesEtudiant
également par une majuscule
AnnéeScolaire2024 Commence par une majuscule et ne contient pas d'espace
Table 2 : Quelques noms de classes valides
2025/2026 [Link] 23
Classes et objets
Introduction
• La table 3 liste des mots qui peuvent également être utilisés comme noms de classes, bien que
leur utilisation soit déconseillée. Si vous choisissez d'utiliser l'un de ces mots, le programme
compilera sans erreur
Nom de la classe Description
etudiant Ne commence pas par une majuscule
ETUDIANT Le nom est entièrement en majuscules, ce qui n’est pas recommandé
L’usage du caractère _ ne reflète pas une convention pour marquer un nouveau
Notes_Etudiant
mot
Ne commence pas par une majuscule, et le deuxième mot n’est pas clairement
annéescolaire2024
identifiable, ce qui rend le nom difficile à lire
Table 3 : Quelques noms de classes non recommandés
2025/2026 [Link] 24
Classes et objets
Introduction
• la table 4 regroupe les mots qui ne peuvent pas être utilisés comme noms de classes.
Nom de la classe Description
Etudiant# Contient #
double Mot réservé
Notes Etudiant Contient espace
2024annéescolaire Commence par un chiffre
Table 4 : Quelques noms de classes non recommandés
2025/2026 [Link] 25
Classes et objets
Introduction
• Représentation en UML la classe Etudiant
2025/2026 [Link] 26
Classes et objets
Déclaration d’une classe
• Une classe peut inclure des méthodes (fonctions) et des attributs (variables).
• Pour créer une classe, on utilise le mot-clé class. Par exemple, voici le prototype de la classe Etudiant :
class Etudiant {
// Déclarations
// Attributs et méthodes
}
Remarques :
1. Il est possible de définir plusieurs classes dans un même fichier, mais une seule classe peut être
précédée du mot-clé public. De plus, le fichier doit porter le même nom que cette classe publique.
2. Une classe peut être déclarée dans un fichier séparé, lequel doit porter le même nom que la classe,
suivi de l'extension .java.
3. Pour que la machine virtuelle Java (JVM) puisse accéder à une classe contenant la méthode main,
cette classe doit obligatoirement être publique.
2025/2026
[Link] 27
5
Classes et objets
Définition des attributs
• Un étudiant est caractérisé par les propriétés suivantes : son nom, son prénom, son numéro CNE et sa
moyenne.
• En Java, ces attributs peuvent être codés dans notre classe de la manière
2025/2026
[Link] 28
Classes et objets
Définition des attributs
• class Etudiant {
// Attributs de la classe Etudiant
private String nom; // Le nom de l'étudiant
private String prenom; // Le prénom de l'étudiant
private String cne; // Le numéro CNE de l'étudiant
private double moyenne; // La moyenne de l'étudiant
}
• Par convention, les noms des attributs et des methodes doivent être en minuscule.
• Le premier mot doit commencer en minuscule et les autres mots doivent commencer en majuscules
(ceciEstUneVariable, ceciEstUneMethode).
Remarque :
• La présence du mot clé private (prive) indique que les variables ne seront pas accessibles de l'extérieure
de la classe ou elles sont définies.
• C'est possible de déclarer les variables non privées, mais c'est déconseillé.
2025/2026 [Link] 29
Classes et objets
Définition des méthodes
• Dans la classe Etudiant, nous avons défini trois méthodes :
initialiser() : cette méthode permet d'initialiser les informations relatives à un étudiant.
afficher() : cette méthode affiche les informations d'un étudiant.
getMoyenne() : cette méthode retourne la moyenne d'un étudiant.
2025/2026 [Link] 30
Exemple: classe Etudiant
Classes et objets
Une classe peut contenir plusieurs méthodes définies en son sein.
Lorsque le mot-clé public est utilisé, cela indique que les méthodes sont accessibles depuis l’extérieur de la classe.
Cependant, il est également possible de déclarer des méthodes privées.
2025/2026 [Link] 31
Utilisation des classes
Classes et objets
• Après avoir déclaré une classe, celle-ci peut être utilisée pour déclarer un objet (c'est-à-dire une variable
de type classe) dans n'importe quelle méthode.
• Pour utiliser la classe Etudiant :
Etudiant et1;
• Contrairement aux types primitifs, cette déclaration ne réserve pas d'espace mémoire pour l'objet de type
Etudiant, mais crée uniquement une référence à cet objet.
• Pour réserver de la mémoire, il est nécessaire d'utiliser le mot-clé new, comme suit :
et1 = new Etudiant();
• Ces deux instructions peuvent être combinées en une seule :
Etudiant et1 = new Etudiant();
2025/2026 [Link] 32
Classes
Utilisation des classes: Référence
et objets
• Les objets sont manipulés à l'aide de références. Prenons l'exemple classique de l'animal et du chien :
Chien = Objet.
Animal = Référence.
Pour interagir avec l’objet (chien), on utilise la référence (animal).
Avoir une référence ne signifie pas forcément posséder l’objet (par exemple, on peut avoir une référence à un
animal sans qu'il s'agisse d'un chien).
• Maintenant, nous pouvons appliquer n’importe quelle méthode à l’objet et1.
• Par exemple, pour initialiser les attributs de et1, on procède de la manière suivante :
[Link](« SALIM", "Mohammed", "A8899", 12.5);
2025/2026
[Link] 33
Classes et objets
Utilisation des classes: Exemple
• Dans l’exemple ci-dessous, on utilisera la classe ExempleEtudiant pour tester la classe Etudiant, qui
représente notre classe principale (celle contenant la méthode main()) :
2025/2026 [Link] 34
Classes et objets
Utilisation des classes: Exemple
Résultats:
2025/2026 [Link] 35
Classes et objets
Portée des attributs
• Les attributs d’une classe sont accessibles dans toutes les méthodes de cette même classe.
• Il n’est donc pas nécessaire de les transmettre en tant qu’arguments. Cependant, à l’extérieur de la classe, les attributs
privés ne sont pas directement accessibles.
• Par exemple, dans la classe ExempleEtudiant, une instruction comme :
Etudiant et = new Etudiant();
moy = [Link];
• provoquera une erreur de compilation avec le message : The field [Link] is not visible.
• Cela s’explique par le fait que l’attribut moyenne est privé et n’est accessible qu’à l’intérieur de la classe Etudiant, mais
pas dans la classe ExempleEtudiant. C’est pourquoi, dans l’exemple précédent, nous avons utilisé la méthode
getMoyenne() pour accéder à la valeur de moyenne.
2025/2026 [Link] 36
Classes et objets
Surcharge des méthodes
• La surcharge se produit lorsqu'il existe plusieurs méthodes portant le même nom au sein d'une classe.
• Ces méthodes doivent se différencier par le nombre ou le type des arguments qu'elles acceptent.
Exemple :
• Dans la classe Etudiant, on peut ajouter trois méthodes ayant le même nom, mais avec des signatures
différentes :
1. Une méthode prenant trois arguments de type double.
2. Une méthode prenant deux arguments de type double.
3. Une méthode prenant deux arguments de type float
2025/2026 [Link] 37
Classes et objets
Surcharge des méthodes
2025/2026
[Link] 38
Classes et objets
Surcharge des méthodes
Utilisation de la classe Etudiant
• À présent, nous utiliserons la classe principale ExempleEtudiant pour effectuer des tests sur la classe
modifiée Etudiant
2025/2026 [Link] 39
Classes et objets
Surcharge des méthodes
Conflit
2025/2026 [Link] 40
Classes et objets
Surcharge des méthodes
Conflit
L'exemple précédent génère des erreurs de compilation :
2025/2026 [Link] 41
Classes et objets
Méthodes statiques et finales
Attributs statiques
• Les variables statiques, également appelées variables de classe, sont partagées entre toutes les instances d'une même classe.
• Contrairement aux variables d'instance, une seule copie d'une variable statique est créée pour toute la classe, indépendamment du
nombre d'objets créés.
• Lorsqu'un objet est instancié à l'aide de l'opérateur new, aucune nouvelle mémoire n'est allouée pour une variable statique.
• Pour déclarer une variable statique, le mot-clé static doit être utilisé
2025/2026 [Link] 42
Méthodes statiques et finales
Classes et objets
Constantes final et static
• Une constante partagée par toutes les instances d'une classe peut être déclarée à l'aide des modificateurs final
static. Par exemple :
class A { final static double PI = 3.1415927;
static final double Pi = 3.1415927; }
• La classe Math fournit des constantes statiques comme [Link] (valant 3.14159265358979323846).
• Dans la classe Math, la constante PI est déclarée comme suit : public final static double PI =
3.14159265358979323846;
• Les caractéristiques de PI sont les suivantes :
public : Elle est accessible depuis n'importe quel endroit.
final : Sa valeur ne peut pas être modifiée.
static : Une seule copie de cette constante existe, et elle est accessible sans qu'il soit nécessaire de créer un
objet de la classe Math.
2025/2026 [Link] 43
Classes et objets
Méthodes statiques et finales
Méthodes statiques
• Une méthode peut être déclarée comme statique en utilisant le mot-clé static.
• Une méthode statique peut être appelée directement à partir de la classe, sans avoir besoin de créer une instance de
celle-ci.
• Ces méthodes sont également appelées méthodes de classe.
• Restrictions des méthodes statiques :
Elles ne peuvent appeler que d'autres méthodes statiques.
Elles ne peuvent utiliser que des attributs statiques.
2025/2026 [Link] 44
Classes et objets
Méthodes statiques et finales
Méthodes statiques: exemple
2025/2026 [Link] 45
Lecture à partir du clavier
Classes et objets
• Pour effectuer une lecture depuis le clavier, Java fournit la classe Scanner.
• Afin de rendre cette classe accessible au compilateur, il est nécessaire d'ajouter l'instruction suivante :
import [Link];
• Quelques méthodes principales de la classe Scanner :
nextShort() : Permet de lire une valeur de type short.
nextByte() : Permet de lire une valeur de type byte.
nextInt() : Permet de lire une valeur de type int.
nextLong() : Permet de lire une valeur de type long (sans besoin d’ajouter L après le nombre saisi).
nextFloat() : Permet de lire une valeur de type float (sans besoin d’ajouter F après le nombre saisi).
nextDouble() : Permet de lire une valeur de type double.
nextLine() : Permet de lire une ligne complète et la retourne sous forme de chaîne (String).
next() : Permet de lire le mot suivant sous forme de chaîne (String).
2025/2026 [Link] 46
Classes et objets
• Exercice 1 :
1. Créer une classe Calculatrice qui possède plusieurs méthodes pour effectuer des
opérations de calcul.
2. Implémenter une méthode additionner qui additionne deux nombres.
3. Surcharger cette méthode pour qu'elle puisse également additionner trois
nombres.
4. Ensuite, créer une méthode afficherResultat pour afficher le résultat du calcul.
• Exercice 2 :
1. Créer une classe Personne qui a un attribut compteur (de type int et statique) qui
compte le nombre d'objets Personne créés.
2. Ajouter un attribut nom (de type String).
3. La classe doit également avoir deux méthodes setNom et afficherInfo qui initialise
et affiche le nom de la personne.
4. La méthode afficherCompteur doit afficher le nombre d'objets Personne créés.
2025/2026 [Link] 47
Classes et objets
• Exercice 2 :
1. Créer une classe Cercle avec un attribut statique PI (constante représentant la
valeur de pi).
2. Ajouter un attribut rayon de type double pour chaque objet.
3. Créer une méthode statique calculerAire qui calcule l'aire du cercle en utilisant la
formule Aire=π×rayon
2025/2026 [Link] 48
Classes et objets
• Exercice 1 : Surcharge de méthodes en Java
2025/2026 [Link] 49