Programmation Orientée Objet en Java
Programmation Orientée Objet en
Java
By
Idrissou HEL HADJE SOUNON
Institut National Supérieur de Technologie Industrielle de Lokossa
April 19 2024
1 / 54
Programmation Orientée Objet en Java
Plan du Cours
1. Les bases de Java
2. Classes et objets, principe d’encapsulation
3. Héritage et polymorphisme, abstraction, interfaces
4. Les collections Java
5. Les exceptions
6. Notions d’UML
7. Communication avec une base de donnée SQL en Java
8. Tests Unitaires
9. Interface graphique avec Java Swing
10. Interface graphique avec JavaFX
2 / 54
Programmation Orientée Objet en Java
Introduction
Introduction
Les Bases de Java
classe & Objet
Déclaration d’un objet Java
Encapsulation Java
Exemples
3 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
▶ Qu’est-ce que Java ?
▶ Langage de programmation orienté objet
▶ Développé par Sun Microsystems en 1995
▶ Acquis par Oracle en 2010
▶ Pourquoi apprendre Java ?
▶ Large adoption dans les entreprises
▶ Développement d’applications Web et mobiles,
▶ Utilisation dans les systèmes embarqués, etc.
4 / 54
Programmation Orientée Objet en Java
Introduction
Java POO
Qu’est-ce que la Programmation Orientée Objet ?
Elle consiste à créer des objets contenant à la fois des données
et des méthodes.
Quelques avantages
▶ Plus rapide et plus facile à exécuter;
▶ Plus facile à maintenir, modifier et déboguer;
▶ Possibilité de créer des applications entièrement
réutilisables avec moins de code et un temps de
développement plus court;
▶ Etc.
5 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Introduction
Les Bases de Java
classe & Objet
Déclaration d’un objet Java
Encapsulation Java
Exemples
6 / 54
Programmation Orientée Objet en Java
Les Bases de Java
7 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Les variables
Elles possèdent 3 caractéristiques:
▶ L’identificateur, c’est le
nom par lequel la donnée est désignée;
▶ Le type. Il définit de quel genre
est la donnée contenue dans la variable;
▶ La valeur Si par exemple la donnée est
un nombre, sa valeur pourra être 123.
Ex : int n = 4
8 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Les variables
Elles possèdent 3 caractéristiques:
▶ L’identificateur, c’est le
nom par lequel la donnée est désignée;
▶ Le type. Il définit de quel genre
est la donnée contenue dans la variable;
▶ La valeur Si par exemple la donnée est
un nombre, sa valeur pourra être 123.
Ex : int n = 4
8 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Les variables
Elles possèdent 3 caractéristiques:
▶ L’identificateur, c’est le
nom par lequel la donnée est désignée;
▶ Le type. Il définit de quel genre
est la donnée contenue dans la variable;
▶ La valeur Si par exemple la donnée est
un nombre, sa valeur pourra être 123.
Ex : int n = 4
8 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Déclarations de variables
Une déclaration de variable permet de créer une variable.
En même temps qu’elle est déclarée, une variable peut être
initialisée, c’est-à-dire lui affecter une valeur avant de l’utiliser.
9 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Déclarations de variables
10 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Noms de variables
▶ Le nom peut être constitué uniquement de lettres, de chiffres,
et des deux seuls symboles autorisés: (underscore) et $. Pas
d’espace !
▶ Le premier caractère est nécessairement une lettre ou un
symbole;
▶ Le nom ne doit pas être un mot-clé réservé par le langage
Java;
▶ Les majuscules et les minuscules sont autorisées mais ne sont
pas équivalentes.
Les noms score et Score désignent deux variables différentes.
11 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Conventions en Java pour les noms de variables
Par exemple, on utilisera :
nombreDePoints
plutôt que :
NombreDePoints
ou
nombre de points
12 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Types de variables
Les types de données les plus fréquemment utilisés dans les
déclarations de variables Java sont répertoriés dans ce tableau :
13 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Data type Description Example
byte Un nombre entier : de -128 à 127 102
short Un nombre entier : de -32 768 à 32 767 1250
int Un nombre entier : de 23 1 (-2 147 483 648) à 23 1 − 1 10040
(2 147 483 647)
long Un nombre entier : de 26 3 à 26 3 − 1 ’%’
float Un nombre à virgule flottante : de −3, 40282347x1038 3,1234567
à 3, 40282347x1038 . Une précision d’environ 7 chiffres.
double Un nombre à virgule flottante de : −1.8x10308 à 1234567,1234567
1.8x10308 avec une précision d’environ 15 chiffres.
char Un seul caractère Unicode ’%’
String Tout nombre de caractères Unicode ”my String”
boolean Une valeur logique : soit vrai soit faux vrai
14 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Affectations
C’est une instruction qui permet de changer une valeur à une
variable.
Exemple : nCarre = n * n;
Attention : Ne confondez pas une affectation avec une égalité
mathématique.
14 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Écrire à l’écran
15 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Déclaration de constantes
Pour déclarer de constante, il suffit d’ajouter le mot-clé final
devant la déclaration:
Exemple : final int g = 10;
16 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Les opérateurs arithmétiques
On dispose de 4 opérateurs usuels :
▶ + ( Addition ) :
▶ - ( Subtraction )
▶ * ( Multiplication )
▶ / (Division)
Attention : Exemple :
En Java, une division entière donne 1/2 vaut 0
une réponse entière. 5/2 vaut 2
En revanche, si x ou y n’est pas un mais
entier, la réponse sera un nombre non 1/2.0 vaut bien 0.5
entier.
17 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Les opérateurs logiques de Java
Opérateur logique Équivalent en Java
AND &&
OR ∥
NOT !
18 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Opérateurs relatifs au type int
On dispose aussi des opérateurs += , -= , *= , /= , ++ , - -
Par exemple:
a += 5; est équivalent à : a = a + 5;
b *= a; est équivalent à : b = b * a;
++i; est équivalent à : i = i + 1;
--i; est équivalent à : i = i - 1;
L’opérateur modulo, noté % renvoie le reste de la division
entière.
11 % 4 vaut : 3
19 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Attention :
y = x++ ; signifie affecter la valeur de x à y, puis incrémenter
x de 1.
Cependant,
y = ++x ; signifie incrémenter x de 1, puis affecter cette
nouvelle valeur à y.
L’opérateur de décrémentation peut être utilisé de la même
manière.
20 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Fonctions mathématiques
Java fournit les fonction mathématiques usuelles, ainsi que des
constantes comme Pi.
Exemple :
double perimetre = 2 * 3 * Math.PI
double s = Math.sin(30)
21 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Branchements conditionnels
Elle permet au programme d’évaluer si une certaine condition
est remplie et d’effectuer l’action appropriée en fonction du
résultat de l’évaluation.
L’instruction ”if...else”
22 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
L’instruction if suit donc le schéma:
if (condition) {
Bloc d’instructions
} else {
Bloc d’instructions
}
23 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
Branchements conditionnels
L’instruction ”do...while”
24 / 54
Programmation Orientée Objet en Java
Les Bases de Java
Les variables
L’instruction if suit donc le schéma:
if (condition) {
Bloc d’instructions
} else {
Bloc d’instructions
}
25 / 54
Programmation Orientée Objet en Java
classe & Objet
Introduction
Les Bases de Java
classe & Objet
Déclaration d’un objet Java
Encapsulation Java
Exemples
26 / 54
Programmation Orientée Objet en Java
classe & Objet
classe & Objet
Le concept central de l’approche orientée objet est de diviser
des problèmes complexes en objets plus petits.
Un objet est toute entité qui possède un état et un
comportement. Par exemple, une voiture est un objet. Il a
▶ Etats : ralenti, première vitesse, etc.
▶ Comportements : freinage, accélération, etc.
Avant d’en apprendre davantage sur les objets, parlons d’abord
des classes en Java.
Classe Java
Une classe Java est un modèle ou un plan à partir duquel des
objets sont créés.
27 / 54
Programmation Orientée Objet en Java
classe & Objet
Création d’une classe
Pour créer une classe, on utilise le mot-clé class.
class Voiture {
// etat ou champ
private int engrenage = 5;
// comportement ou methode
public void freinage () {
System . out . println ( " Fo nctionn ement du freinage " ) ;
}
}
28 / 54
Programmation Orientée Objet en Java
classe & Objet
Dans l’exemple ci-dessus, nous avons créé une classe nommée
Voiture. Il contient un champ nommé engrenage et une
méthode nommée freinage().
Ici,Voiture est un prototype. Désormais, nous pouvons créer
n’importe quel nombre de Voiture en utilisant ce prototype. Et
toutes les Voitures partageront les états et les comportements
du prototype.
Ici, des champs (variables) et méthodes représentent
respectivement l’état et le comportement de l’objet.
Les champs sont utilisés pour stocker des données les
méthodes sont utilisées pour effectuer certaines opérations.
29 / 54
Programmation Orientée Objet en Java
classe & Objet
NB: Nous avons utilisé des mots-clés private et public.
Ceux-ci sont connus sous le nom de modificateurs d’accès.
Objet Java
Un objet Java est une instance d’une classe.
Lorsque les objets individuels sont créés, ils héritent de toutes
les variables et méthodes de la classe.
Exemple: Dans l’exemple précédent, Voiture une classe alors
VoitureDeCourse, VoitureDeSport, VoitureDeTourisme, etc.
peuvent être considérés comme des objets de la classe.
30 / 54
Programmation Orientée Objet en Java
classe & Objet
Créer un objet en Java
Pour créer un objet, on utilise le mot-clé new.
Syntaxe
nomDeLaClasse nomObjet = new nomDeLaClasse();
Exemple
// pour la classe Voiture
Voiture VoitureDeCourse = new Voiture();
Voiture VoitureDeSport = new Voiture();
NB: Ici, VoitureDeSport est une instance de la classe Voiture.
31 / 54
Programmation Orientée Objet en Java
classe & Objet
Accéder aux membres d’une classe
Accéder aux membres d’une classe
class Voiture {
// champ de la classe
int engrenage = 5;
// methode de la classe
void freinage () {
...
}
}
// creation d ’ objet
Voiture Voi tureDeS port = new Voiture () ;
// access champ et methode
Voit ureDeSpo rt . engrenage ;
Voit ureDeSpo rt . freinage () ;
32 / 54
Programmation Orientée Objet en Java
classe & Objet
Attributs de classe
Nous utilisons ensuite l’objet pour accéder au champ et à la
méthode de la classe.
Attributs de classe
Les attributs de classe sont des variables au sein d’une classe.
33 / 54
Programmation Orientée Objet en Java
classe & Objet
Les objets Java
Déclaration d’un objet Java
Test objA ;
objA = new Test () ;
Une autre façon de faire
Test objA = new Test () ;
34 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Introduction
Les Bases de Java
classe & Objet
Déclaration d’un objet Java
Encapsulation Java
Exemples
35 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Définition
L’Encapsulation est l’un mécanisme consistant à rassembler les
attributs et méthodes au sein d’une même classe tout en
contrôlant l’accès à ceux-ci.
0.2cm Les niveaux de visibilité des membres de la classe sont
définis par un modificateur ou spécificateur d’accès :
▶ private : seulement les méthodes de la classe elle-même
ont le droit d’accéder à ce membre.
▶ public : il peut être accéder depuis l’extérieure (par une
classe quelconque).
▶ protected : le modificateur protected se comporte comme
private avec moins de restriction: il n’est accessible que
depuis:
▶ la classe elle même,
▶ les classes du paquet auquel appartient cette classe.
▶ et les sous-classes, directes ou indirectes, de cette classe.
36 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Avantages
Avantages:
▶ Conserver les champs et méthodes associés ensemble, ce
qui rend notre code plus propre et facile à lire.
▶ Contrôler les valeurs de nos attributs.
37 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Exemple 1: Accès pour modification depuis l’extérieur d’un champs
class Test {
public int x ;
private int y ;
public void initialise ( int i , int j ) {
x=i;
// acces a l attribut private y depuis l
interieur de // la classe elle meme
y=j;
}
}
38 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Suite de exemple 1
public class TestA {
public static void main ( String args []) {
Test objA = new Test () ;
objA . initialise (1 ,3) ;
// acces depuis une autre classe a une methode
public . Apres appel de initialise () , x vaut 1 et y vaut
3
// acces depuis l exterieur . L attribut x est
public . // la valeur de x devient 2
objA . x =2;
// ne compile pas car y est private
objA . y =3;
}
}
39 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Exemple 2: affichage d’une variable depuis l’extérieur
class Test {
public int x ;
private int y ;
public void initialise ( int i , int j ) {
x=i;
y=j;
}
}
40 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
suite exemple 2
public class TestA {
public static void main ( String args []) {
Test objA = new Test () ;
objA . initialise (1 ,3) ;
// affiche x = 1 car on peut acceder a x depuis
l ’ exterieur : x est attribut public
System . out . println ( " x = " + objA . x ) ;
// ne compile pas car on ne peut pas acceder a y
qui est un attribut private .
System . out . println ( " y = " + objA . y ) ;
}
}
41 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Comment accéder à la valeur d’une variable protégée ?
Considérons la classe etudiant qui a les champs nom et
prenom private.
42 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
class Etudiant {
private String nom , prenom ;
public Etudiant ( String st1 , String st2 ) {
nom = st1 ;
prenom = st2 ;
}
}
public class MethodeStatic {
public static void main ( String [] argv ) {
Etudiant Etu1 = new Etudiant ( " Mohammed " , " Ali " ) ;
// ne compile pas car le champs " nom " est private
System . out . println ( " Nom = " + Etu1 . nom ) ;
// comment faire pour afficher le nom Etu1 ?
}
}
43 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Comment peut on accéder à la valeur d’une variable protégée ?
Pour afficher la valeur de l’attribut nom, on définie un
accesseur (méthode getNom) qui est une méthode permettant
de lire, depuis l’extérieur, le contenu d’une donnée membre
protégée.
Exemple :
class Etudiant {
private String nom , prenom ;
public initialise ( String nom , String Prenom ) {
this . nom = nom ; this . prenom = prenom ;
}
public String getNom () {
return nom ;
}
public String getPrenom () {
return prenom ;
}
} 44 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Suite de l’exemple
public class MethodeStatic {
public static void main ( String [] argv ) {
Etudiant Etu1 = new Etudiant ( " Mohammed " ," Ali " ) ;
Etu1 . initialise ( " Mohammed " ," Ali " ) ;
System . out . println ( " Nom = " + Etu1 . getNom () ) ;
System . out . println ( " Prenom = " + Etu1 . getPrenom () )
;
}
}
45 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Modification depuis l’extérieur du contenu d’un attribut privé
class Etudiant {
private int cne ;
}
public class MethodeStatic {
public static void main ( String [] argv ) {
Etudiant Etu1 = new Etudiant () ;
// Impossible de modifier ici l ’ attribut private
cne
Etu1 . cne =23541654;
}
}
46 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Pour modifier la valeur de l’attribut nom (champs private), on
définie un modificateur (mutateur) qui est une méthode
permettant de modifier le contenu d’une donnée membre
protégée.
47 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Exemple:
class Etudiant {
private int cne ;
public void setCNE ( int cne ) {
this . cne = cne ;
}
}
public class MethodeStatic {
public static void main ( String [] argv ) {
Etudiant Etu1 = new Etudiant () ;
Etu1 . setCNE (23541654) ;
}
}
48 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Autoréférences: emploi de this
Possibilité au sein d’une méthode de désigner explicitement
l’instance courante (l’objet courant): faire référence à l’objet
qui a appelé cette méthode.
class Etudiant {
private String nom , prenom ;
public initialise ( String st1 , String st2 ) {
nom = st1 ;
prenom = st2 ;
}
}
Comme les identificateurs st1 et st2 sont des arguments
muets pour la méthode initialise(), alors on peut les noter nom
et prenom et ceux-ci n’ont aucune relation avec les champs
private nom et prenom.
49 / 54
Programmation Orientée Objet en Java
Encapsulation Java
Méthodes d’accès aux valeurs des variables depuis l’extérieur
Dans ce cas la classe Etudiant peut s’écrire comme suit :
class Etudiant {
private String nom , prenom ;
public initialise ( String nom , String prenom ) {
this . nom = nom ;
this . prenom = prenom ;
}
}
50 / 54