Vous êtes sur la page 1sur 126

1

Les objectifs du cours:

• Comprendre les différents concepts du java.

• Préparer et configurer l’environnement du travail.

• Développer des applications java standards .

• Manipuler les collections en java.

• Programmer les interfaces graphiques en java.

• Traiter les exceptions en java.

2021-12-13 Y.Balouki 2
Le plan du cours:

1. Introduction sur java.

2. Structures fondamentales du langage java.

3. les concepts de la programmation orienté objet java.

4. Les tableaux et les collections en java.

5. Les interfaces graphique en java.

6. Les exceptions en java..

2021-12-13 Y.Balouki 3
1- Introduction : Qu’est ce que java ?

Les différents types de langage de programmation:

CPU Langage Machine


(Ordinateur)

Langage Assembleur

Langage Structurés

Langage Orienté Objet

Homme Langage humains

2021-12-13 Y.Balouki 4
JAVA c'est quoi ?

• Une technologie développée par SUN Microsystems™ lancée en


1995 - rachetée par Oracle en 2009
– Un langage de programmation
– Une plateforme, environnement logiciel dans lequel les programmes java
s'exécutent.
• Présente dans de très nombreux domaines d’application : des
serveurs d’applications aux téléphone portables et cartes à puces

• The Top Programming Languages


IEEE Spectrum’s 2015 Ranking

www.tiobe.com
TIOBE index
nov. 2015

Décembre 2015 © y.BALOUKI 2


1- Introduction : Qu’est ce que java ?

Les différents modes de compilation: JIT


(Just In Time)
Natif Byte Code
Code source
Code source Code source

Compilateur
Compilateur Compilateur

Byte code
Langage
Byte code
Machine
Interprétation par JVM
Edition de Interprétation par JVM ( le JVM en mode JIT la
( le JVM en mode byte code la traduction du byte code en
lien traduction du byte code en langage machine se fait
langage machine et l’exécute se
d’une façon entière avant
fait instruction par instruction )
Programme.exe l’exécution )

2021-12-13 Y.Balouki 6
1- Introduction : Qu’est ce que java ?

Java ?
• Le langage de programmation orienté objet.

• Java permet la création des applications: portables et multiplateformes.

• Le principe du java est: Write Once Run Every Where.

• Le java est open source.

• Les plateformes java permettant le dévloppement:

 Des application Desktop.

 Des applets java.

 Des applications web.

 Des application mobile.

 Des applications embarqués.

2021-12-13 Y.Balouki 7
1- Introduction : Qu’est ce que java ?

Installation du kit de dévloppement java


• Le kit de dévloppement java JDK est téléchargeable gratuitement à partir du site de
Sun Microsystem (www.java.sun.com).

• Le JDK contient trois pacquages:

 J2Sdk1.x.exe : le kit de dévloppement.

 Jre1.x.exe : la machine virtuelle java.

 Jdk1x-doc.zip: documentation java.

• Exécuter J2Sdk.exe par défaut le JDK s’installe dans le répertoire


c:\program files\java.

• Exécuter Jre.exe pour installer la machine virtuelle dans le même


répertoire.

2021-12-13 Y.Balouki 8
1- Introduction : Qu’est ce que java ?

Ce qui contient le JDK:

2021-12-13 Y.Balouki 9
1- Introduction : Qu’est ce que java ?

Ce qui contient le JDK:


• javac.exe : Compilateur java.

• java.exe : Interpréteur du byte code java.

• appletviewer.exe : Pour tester les applets java.

• javadoc.exe : générer la documentation des programmes java.

• javah.exe : Permet de faire le lien entre le programme java avec des


méthodes natives écrites dans un autre langage.

• jar.exe: permet de compresser les classes java ainsi tous les fichiers
nécessaires pour l’exécution du programme. Aussi permet l’optimisation du
chargement des applets sur Internet.

2021-12-13 Y.Balouki 10
1- Introduction : Qu’est ce que java ?

Configuration de l’environnement:
• Définir la variable d’environnement path qui indique le chemin d’accès aux
programmes exécutables. Cette variable devrait contenir le chemin du jdk
utilisé

2021-12-13 Y.Balouki 11
1- Introduction : Qu’est ce que java ?

Configuration de l’environnement:
• Pendant l’exécution d’un programme java, la JVM consulte la variable
d’environnement classpath qui contient le chemin d’accès aux classes java
utilisées par cette application.

2021-12-13 Y.Balouki 12
1- Introduction : Qu’est ce que java ?

Outils de développement java


• Un éditeur de texte: on peut utiliser un simple éditeur comme Notepad de
Windows mais il est préférable d’utiliser un éditeur conçu pour
programmer en java.

• Eclipse IDE: l’environnement de développement java le plus connu, il est


gratuit.

• Autres IDE java:

 JDevlopper de Oracle.

 JBuilder de Borland.

 Netbeans de Sun.

2021-12-13 Y.Balouki 13
Le Langage Java
Mon premier programme Java (pas très objet…)
Le code de la classe doit être 1 Tout code java doit être défini à l'intérieur d'une classe
enregistré dans un fichier de
même nom (casse comprise)
que la classe 3
public class HelloWorld {
HelloWorld.java

public static void main(String[] args) {

int i = 0;
2 La description de la
while (i < 5) { classe est effectuée à
System.out.println("Hello World !"); l'intérieur d'un bloc
Le point d'entrée pour i++; { }
l'exécution est la 4 }
méthode main()
}

Compilation : Exécution :
javac HelloWorld.java java HelloWorld Hello World !
Hello World !
Hello World !
javac java Hello World !
Hello World !
HelloWorld.java HelloWorld.class
Décembre 2015 © y.BALOUKI 4
Le langage Java
Un langage compilé / interprété
• Compilation d'un programme JAVA : génération de byte-code
01100001
public class Test { javac 11100000
public static void main(String[] args) 11111010
{ 11101...
javap –c Test
for (int i = 0; i < 10; i++) ...
System.out.println("Hello " + i);
Désassemble Test.class
0 iconst_0
} 1 istore_1
} 2 goto 30
5 getstatic #10 <Field java.
Test.java Test.class 8 new #5 <Class java.lang.St
11 dup
code source byte-code 12 ldc #1 <String "Hello ">
….
27 iinc 1 1
30 iload_1
• Le byte-code est : 31 bipush 10
33 if_icmplt 5
– proche d'un langage machine 36 return
– indépendant de la plateforme d'exécution (matériel + OS)

Décembre 2015 © y.BALOUKI 5


La machine virtuelle Java
Exécution d'un programme Java compilé

• byte-code assure la portabilité des programmes Java


– langage d'une Machine Virtuelle
– à l'exécution un interpréteur simule cette machine virtuelle

javac java Java PC


VM Windows

.java .class
source byte-code
Java
MacOS X
VM

Java Solaris
VM Linux

Décembre 2015 6
La machine virtuelle java
Principes de fonctionnement

• Chargement
– chargement sélectif et dynamique des classes
– vérification statique du code (tentatives de modification de la machine
virtuelle, ...)
• Protection lors de l'exécution
– Le "security manager" possède un droit de veto (accès "sauvages" au
système de fichiers, ...)
– Cette protection peut-être modulée
JVM
Réseau
ou Class Loader Classes Security Manager
Système locales
de fichiers
.class
Byte-Code verifier Interpreter

Décembre 2015 7
La machine virtuelle java
Utilisation pour d'autres langages

• JVM utilisée pour exécuter


des programmes dans des
langages autres que Java

http://en.wikipedia.org/wiki/File:Java_virtual_machine_architecture.svg

Décembre 2015 © y.BALOUKI 8


Performances
• Exécution d'un programme Java
– le code Java est compact,
– le chargement des classes nécessaires est sélectif et dynamique,
– ... mais Java est interprété

• Palier aux lenteurs de l'interprétation


– utilisation d’un JIT (compilateur « Just-in-Time »)
• compilation à la volée du byte-code
• réutilisation du code déjà compilé
• intégration du JIT HotSpot dans JVM depuis version 1.3
– Performance of Java versus C++ J.P.Lewis and Ulrich Neumann
(http://www.idiom.com/%7Ezilla/Computer/javaCbenchmark.html)

Décembre 2015 © y.BALOUKI 9


La plateforme Java

• Plateforme
– Environnement matériel et/ou logiciel dans lequel un programme s'exécute.
• La plus part des plateformes sont la combinaison d'un OS et du matériel sous-
jacent (MS Windows + Intel, Linux + Intel, Solaris + Sparc,
Mac Os X + Power PC)

• La plateforme Java est entièrement logicielle et s'exécute au


dessus des plateformes matérielles

MonProgramme.class API (Application Programming Interface) Java :


Bibliothèques Java standards sur lesquelles le
Plateforme API Java programmeur peut s'appuyer pour écrire son code
Java
JVM (Machine virtuelle)

Plateforme matérielle
(OS + hardware)

Décembre 2015 © y.BALOUKI 15


La plateforme Java
API Java

• API Java
– (très) vaste collection de composants logiciels (classes et interfaces)
– organisée en bibliothèques (packages)
– offre de nombreux services de manière standard (indépendamment de la
plateforme matérielle)

MonProgramme.class

Plateforme API Java


Java
JVM (Machine virtuelle)

Plateforme matérielle
Programmer en Java nécessite une bonne
(OS + hardware) connaissance de l'API.
Attention à la courbe d'apprentissage (learning
curve) qui est peut être longue

Décembre 2015 © y.BALOUKI 16


La plateforme Java
Les différentes éditions de Java

• 3 éditions de Java
Standard Edition
Fourni les compilateurs, outils, runtimes, et APIs pour
JSE écrire, déployer, et exécuter des applets et applications
dans la langage de programmation Java

Destinée au développement d’applications « d’entreprise »


Entreprise Edition («business applications») robustes et interopérables.
JEE
Simplifier le développement et le déploiement
d’applications distribuées et articulées autours du web.

Environnement d’exécution optimisé pour les dispositifs


Mobile Edition
« légers » :
JME
• Carte à puce (smart cards)
• Téléphones mobiles
• Assistants personnels (PDA)

Versions MS Windows, Linux, Solaris téléchargeables gratuitement sur java.sun.com

Décembre 2015 © y.BALOUKI 17


Java 6 (Mustang) - 2006
La plateforme Java • Services Web
• Langages de scripts
Evolution de l'API Standard • Accès au compilateur
• Plus d’API pour applis desktop
4500
• ….
Java 5 (Tiger) - 2004
• Evolutions du langage : Généricité, 4024 4240
4000 Types Enumérés, Autoboxing, … 3799
• Nouvelles API : Concurrence, Management
3500 (gestion et supervision de la JVM)… 3279 Java 7 – 2011
• améliorations du langage : switch avec
3000 2757 des chaînes, gestion des exceptions,
Java 2 (J2SE) - 1998 • amélioration des API
Ajout de nombreuses fonctionnalités
2500 • utilitaires pour la concurrence.
• Swings, Collections, JNDA ….
classes
2000 packages
1520
1500
Java 8 – 2014
• améliorations du langage :
lambda expressions
1000 (programmation
504 fonctionnelle), collections,
500
212 203 209 streams
217…
135 166
8 23 59
0
java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java 1.6 java 1.7 java 8

Java 1.1 – 1997 J2SE 1.4 – 2002


•Modification du langage : classes internes •Amélioration des performances
• Modification du modèle événementiel pour awt • Assertions, Nouveau package pour i/o,
Java Beans • Nouvelles classes pour collections…
• Amélioration des performances de la VM • Nombreux nouveaux packages : XML, log des applications,
préférences utilisateur …
Décembre 2015 © y.BALOUKI 18
La plateforme Java
Les différentes éditions de Java

• 3 éditions de Java
Standard Edition
Fourni les compilateurs, outils, runtimes, et APIs pour
JSE écrire, déployer, et exécuter des applets et applications
dans la langage de programmation Java

Destinée au développement d’applications « d’entreprise »


Entreprise Edition («business applications») robustes et interopérables.
JEE
Simplifier le développement et le déploiement
d’applications distribuées et articulées autours du web.

Environnement d’exécution optimisé pour les dispositifs


Mobile Edition
« légers » :
JME
• Carte à puce (smart cards)
• Téléphones mobiles
• Assistants personnels (PDA)

Versions MS Windows, Linux, Solaris téléchargeables gratuitement sur java.sun.com

Décembre 2015 © y.BALOUKI 17


Environnements de développement intégrés

• Nombreux IDE (Integrated Development Environment) pour java


– Editeur syntaxique, débogueur, compilateur, exécution
• Commerciaux

JDeveloper
Oracle

WebSphere Studio JBuilder IntelliJIDEA Visual J++


JCreator Microsoft

C# .net
Site Developer for Java Codegear JetBrains
Xinox
IBM ...
• Open-source et/ou freeware

NetBeans Eclipse BlueJ Emacs + JDE


www.netbeans.org www.eclipse.org www.bluej.org http://sunsite.auc.dk/jde
Décembre 2015 © y.BALOUKI 25
Références
« Java - tête la première »
Kathy Sierra, Bert Bates, 2ème édition, O’Reilly, septembre 2005

« Java 7: les fondamentaux du langage Java»


Thierry Groussard, Editions ENI, 2011

« Au coeur de Java 2 - Volume 1 : Notions fondamentales »


Cay S. Horstmann, Gary Cornell, – 8ème édition, Pearson education, avril 2008

« Programmer en Java »,
Claude Delannoy, 9ème édition, Editions Eyrolles, juin 2014

et beaucoup d'autres …

Décembre 2015 © y.BALOUKI 29


Références (suite)

URLs
• https://www.oracle.com/java/index.html
Site officiel Java d'ORACLE
– Téléchargment, Tutoriels, Documentations, spécifications, …
– http://docs.oracle.com/javase/tutorial/index.html
– http://www.oracle.com/technetwork/java/index.html

• http://java.developpez.com/
des tutoriels, des FAQ, des ressources….

• http://www.javapractices.com/
nombreux exemples de code

• http://www.javaworld.com
Magazine électronique, l'actualité de java

• …

Décembre 2015 30
1- Introduction : Qu’est ce que java ?

TP1: Première application Java


• Lancer un éditeur de texte ASCII et Ecrire le code source de ce programme.

• Enregistrer ce fichier dans un nouveau répertoire c:\exojava sous le nom


PremierProgramme.java

• Compiler ce programme sur ligne de commande Dos :


c:\exojava>javac PremierProgramme.java
• Corriger les Erreurs de compilation si nécessaire
• Exécuter le programme sur ligne de commande
c:\exojava>java PremierProgramme
2021-12-13 Y.Balouki 28
2- Structures fondamentales du langage java

Les primitives
Java dispose les primitives suivants:

2021-12-13 Y.Balouki 29
2- Structures fondamentales du langage java

Les primitives
• Les primitives doivent être déclarées par la syntaxe suivant:

Visibilité type de primitive identificateur ;

Exemples:

 private int a;

 public double note;

 public Integer quantite;

• Les primitives peuvent être initialisées au moment de la déclaration.

 private int i=0;

 double note=15;

2021-12-13 Y.Balouki 30
2- Structures fondamentales du langage java

Les primitives
• Pour respecter la typologie de java, les noms variables commencent
toujours par un minuscule et pour indiquer un séparateur de mots, on
utilise les majuscules.

 int nbPersonnes;

 String nomEtudiant;

• Les primitives de type numérique à pour valeur 0 par défaut.

• Les primitives de type boolean est initialisé par défaut à la valeur false.

2021-12-13 Y.Balouki 31
2- Structures fondamentales du langage java

Casting des primitives


• Le casting (mot anglais) ou le transtypage, consiste à effectuer une
conversion d’un type à un autre.

• Le casting peut être effectué dans deux conditions différentes:

 Vers un type plus général. On parle alors de sur-casting ou de sur-


typage.

 Vers un type plus particulier. On parle alors de sous-casting ou de sous-


typage.

Exemple1:

 int a=6; // le type int est codé sur 32 bits.

 long b; // le type long est codé sur 64 bits.

2021-12-13 Y.Balouki 32
2- Structures fondamentales du langage java

Casting des primitives


• Sur-casting implicite: b=a;

• Sur-casting explicite: b=(long) a;

Exemple 2:

Le sous-casting ne peut se faire qu’explicitement.

 float a= (double) 5.5;

 double c= a;

 int d= 8;

 byte f=(byte)d;

2021-12-13 Y.Balouki 33
Les conversions de type
• Il y a 4 contextes possibles de double f = 3.14;
conversion (cast) : int i=0, j=0;
– Conversion explicite short s = 1;
– Affectation j = (int) f; // float -> int (Convertion explicite)
– Appel de méthode float ff = (float) 3.14;
– Promotion arithmétique i = s; // short -> int (Affectation)

// déclencher la méthode int obj.m(int i)


obj.m(s); // short -> int (Appel de méthode)

// division d'un entier et d'un flottant: l'entier i est


// converti en flottant, puis la division
// flottante est calculée
f = i / (double)j; // f vaut 0.333...

34
Les conversions de type
• Certaines conversions provoquent une perte de valeur.
– float en int, int en short, short en byte
• Le type boolean ne peut pas être converti en entier.
• Le type int ne peut pas être traité comme un booléen.

int i = 3;

// Impossible en JAVA !!!!!


if( i ) { // ne peut pas compiler
...
}
// Correct en Java
if( i != 0 ) {
...
}
35
2- Structures fondamentales du langage java

Les enveloppeurs (wearpers)


Les primitives sont enveloppés dans des objets appelés enveloppeurs.

2021-12-13 Y.Balouki 36
2- Structures fondamentales du langage java

Les opérateurs:
• Opérateur d’affectation

x=3; // x reçoit 3.

w=3;

x=y=z=w+5; // z reçoit 8, y et x reçoit la valeur de z.

• Les opérateurs arithmétiques à deux opérandes.

+ : addition

- : soustraction

* : multiplication

/ : division % : modulo (reste de la division euclidienne).

2021-12-13 Y.Balouki 37
2- Structures fondamentales du langage java

Les opérateurs:

2021-12-13 Y.Balouki 38
2- Structures fondamentales du langage java

Les opérateurs:

2021-12-13 Y.Balouki 39
2- Structures fondamentales du langage java

Structures de contrôle:

2021-12-13 Y.Balouki 40
2- Structures fondamentales du langage java

Structures de contrôle:

2021-12-13 Y.Balouki 41
2- Structures fondamentales du langage java

Structures de contrôle:

2021-12-13 Y.Balouki 42
2- Structures fondamentales du langage java

Structures de contrôle:

2021-12-13 Y.Balouki 43
2- Structures fondamentales du langage java

Structures de contrôle:

2021-12-13 Y.Balouki 44
2- Structures fondamentales du langage java

La classe Scanner:
• La classe Scanner comporte des méthodes consistent à lire un flux de
données caractères par caractères ou bien ligne par ligne saisi par
périphérique d’entrée tel que le clavier.

• Exemple:

La lecture d’un entier saisi par le clavier:

2021-12-13 Y.Balouki 45
2- Structures fondamentales du langage java

Afficher un message sur l’écran :


• Pour afficher un message sur l’écran on utilise la méthode print ou println
de la classe System.

• Println permet d’afficher le message sur console et retourner à la ligne.

• La syntaxe:

• Les classes Scanner et System sont des classes du package java.util

2021-12-13 Y.Balouki 46
2- Structures fondamentales du langage java

TP1:
Écrire un programme Java qui permet à un utilisateur de saisir un chiffre et il
compare ce chiffre avec un nombre nommé secret.

• Si le numéro saisi par l’utilisateur est supérieur au numéro secret on doit


afficher le message: le numéro que vous avez saisi est supérieur au numéro
secret.

• Si le numéro saisi par l’utilisateur est inférieur au numéro secret on doit


afficher le message: le numéro que vous avez saisi est inferieur au numéro
secret.

• Sinon on affiche bravo vous avez gagné le jeux.

2021-12-13 Y.Balouki 47
3- les concepts de la programmation orienté objet.

Les concepts de la POO

• Pour faire la programmation orienté objet il faut comprendre les concepts suivant.

 Objet et classe.

 Héritage.

 Encapsulation (Accessibilité).

 Polymorphisme.

2021-12-13 Y.Balouki 48
3- les concepts de la programmation orienté objet.

Objet
• Un objet est une structure informatique définie par un état et un comportement.

• Objet = état + comportement.

• L’état regroupe les valeurs instantanées de tous les attributs de l’objet.

• Le comportement regroupe toutes les actions et les réactions de l’objet.

• L’état d’un objet peut changer dans le temps.

• Généralement , c’est le comportement qui modifie l’état de l’objet.

Exemple:

2021-12-13 Y.Balouki 49
3- les concepts de la programmation orienté objet.

Identité d’un objet


• En plus de son état, un objet possède une identité qui caractérise son
existence propre.

• Cette identité s’appelle également référence ou handle de l’objet.

• En terme informatique de bas niveau, l’identité d’un objet représente son


adresse mémoire.

• Deux objets ne peuvent pas avoir la même identité.

• Pour récupérer l’adresse d’un objet on utilise la méthode toString(). La


syntaxe est la suivante: nomObjet.toString();

2021-12-13 Y.Balouki 50
3- les concepts de la programmation orienté objet.

Classe
• Les objets qui ont des caractéristiques communes sont regroupés dans une
entité appelé classe.

• Alors la classe décrit le domaine de définition d’un ensemble d’objets.

• Chaque objet appartient à une classe.

• La classe est la forme générale des objets.

• Les objets sont construit a partir de leur par un processus qui s’appelle
l’instanciation.

• Alors tout objet est une instance d’une classe.

2021-12-13 Y.Balouki 51
3- les concepts de la programmation orienté objet.

Classe
• Une classe est généralement représenté par un rectangle qui comporte trois
compartiments

Compartiment 1 : Nom de la classe qui


doit commencer par une majuscule.

Compartiment 2 : Les attributs.

Compartiment 3: les méthodes

2021-12-13 Y.Balouki 52
3- les concepts de la programmation orienté objet.

Classe
Attribut:

• Les attributs et les opérations sont les propriétés d’une classe. Les attributs
décrivent l’état de l’objet de la classe. Un attribut est déclaré selon le format
suivant:

Visibilté TypeAttribut nomAttribut [Multiplicité] = [ValeurInit]


 Visibilité: + (Public), - (Privé), # (Protégé), par défaut la Visibilté est protected.

 nomAttribut: Le nom de l’attribut doit être unique et commencer par un minuscule.

 Multiplicité: nombre d’attributs de ce type (Exemple tableau []).

 TypeAttribut: le type de l’attribut (type primitif ou classe).

 ValeurInit: la valeur initiale de l’attribut.

2021-12-13 Y.Balouki 53
3- les concepts de la programmation orienté objet.

Classe
Méthode:

• Les méthodes décrivent le comportement des objets. Elles représentent les


fonctions qu’une classe sait exécuter.

• Les méthodes appelées également méthodes dans les langages objets.

• Syntaxe UML pour la définition d’une opération:

Visibilté TypeDeRetour nomOperation (Paramètres)


 Visibilté: + (public), - (privée) ou # (protégée).

 TypeDeRetour: le type de la valeur de retour de l’operation (type primitif ou classe )

 nomOperation: nom de la méthode

 Paramètres: les paramètres de la méthode.

2021-12-13 Y.Balouki 54
3- les concepts de la programmation orienté objet.

Classe
• Les classes sont généralement regrouper dans des packages.

• Chaque package est représenté graphiquement par un dossier qui peut


comporter un ou plusieurs classes.

• Les packages offrent un mécanisme efficace pour organiser le dévloppement


d’un projet informatique.

• Les packages divise et organise les modules d’un projet de al même manière
que les dossiers organisent le système de fichier.

Structure d’un projet java:

2021-12-13 Y.Balouki 55
3- les concepts de la programmation orienté objet.

Exemple d’implementation d’une classe avec java

2021-12-13 Y.Balouki 56
3- les concepts de la programmation orienté objet.

Création des Objets dans java:


• Dans java, pour créer un objet d’une classe, on utilise la commande new suivie
par un constructeur de la classe.

• Les constructeurs de la classe sont des méthodes spéciales d’une Visibilté


public, qui porte le même nom que la classe et ils ont pas un type de retour.

• Il existe plusieurs types des constructeurs:

 Constructeur par défaut: toute classe à un constructeur par défaut qui ne


reçoit pas des paramètres .

 Constructeur avec des paramètres: définit par le programmeur s’il est


nécessaire. Exemple

2021-12-13 Y.Balouki 57
3- les concepts de la programmation orienté objet.

Création des Objets dans java:


 Constructeur synthétisé: une fois le programmeur déclare un constructeur
avec paramètres le constructeur par défaut n’est plus exploitable, alors le
programme déclare un constructeur vide nommé synthétisé.

• Exemple de la syntaxe:

2021-12-13 Y.Balouki 58
3- les concepts de la programmation orienté objet.

Encapsulation (Accessibilité):
Dans java, il existe 4 niveaux de la protection:

 Private (-) : Un nombre privé d’une classe n’est accessible qu’a l’intérieur de
cette classe.

 Protected (#) : un membre protégé d’une classe est accessible à :

• L’intérieur de la classe.

• Aux classes dérivées de cette classe.

• Aux classes de même package.

 Public (+): accès à partir de toute entité interne et externe à la classe.

RQ : Par défaut l’autorisation est de package. Cette autorisation indique que


uniquement les classes du même package ont l’autorisation d’accès.

2021-12-13 Y.Balouki 59
3- les concepts de la programmation orienté objet.

Encapsulation (Accessibilité): Getters et Setters


• Les attributs privés d’une classe ne sont pas accessibles qu’a l’intérieur de la
classe.

• Pour donner la possibilité à autres classes d’accéder à ces attributs il faut


définir dans la classe des méthodes publiques qui permettant de:

 Lire la variable: accesseurs ou Getters.

 Modifier la variable: mutateurs ou Setters.

• Exemple de la déclaration des Getters:

• Exemple de la déclaration des Setters:

2021-12-13 Y.Balouki 60
3- les concepts de la programmation orienté objet.

Encapsulation (Accessibilité):

• Généralement l’état d’un objet est privé ou protégé et son comportement est
publique.

• Quand l’état de l’objet est privé Seules ces méthodes qu’ont le droit d’y accéder.

• Quand l’état de l’objet est protégé, les méthodes des classes dérivées et les classes
appartenant au même package peuvent également y accéder .

2021-12-13 Y.Balouki 61
3- les concepts de la programmation orienté objet.

Héritage:
• Dans la programmation orientée objet, l’héritage offre un moyen très efficace qui
permet la réutilisation du code.

• En effet une classe peut hériter d’une autre classe des attributs et des méthodes et non
pas les constructeurs.

• L’héritage, quand il peut être exploité, fait gagner beaucoup de temps en terme de
développement et en terme de maintenance des applications.

• La réutilisation du code fut un argument déterminant pour vendre les méthodes


orientées objets.

• L’héritage en java est traduit par le qualificateur extends.

• Toutes les classes héritent implicitement la classe Object.

• Une classe ne peut hériter explicitement qu'une seule classe.

2021-12-13 Y.Balouki 62
3- les concepts de la programmation orienté objet.

Héritage:
• Si la classe A hérite directement de la classe B alors elle hérite indirectement la classe
Object.
• Le constructeur de la classe dérivée peut faire appel au constructeur de la classe
parente en utilisant le mot super() suivi de ses paramètres.

• La classe dérivée peut redéfinir les méthodes da la classe parente comme elle peut
appeler ces méthodes via le qualificateur super().
• L’héritage et traduit par une association de type généralisation en UML.
Parente

Dérivée1 Dérivée2

2021-12-13 Y.Balouki 63
3- les concepts de la programmation orienté objet.

Héritage: :A
- attr1=1
• Quand on crée une instance d’une classe, la classe parente
- attr2=0
est automatiquement instanciée et l’objet de la classe + meth1()
parente est associé à l’objet créé à travers la + meth2()
+ meth3()
référence « super » injectée par le compilateur

• Lors de l’instanciation, l’héritage entre les classes est


:B
traduit par une composition entre un objet de la classe - attr3=5000

instanciée et d’un objet de la classe parente qui est créé - super =


+ meth2()
implicitement.
+ meth3()

2021-12-13 Y.Balouki 64
3- les concepts de la programmation orienté objet.

Héritage: Exemple
Nous voulons développer une application qui gère les comptes bancaires, un compte
bancaire est soit un compte simple, un compte épargne ou un compte payant.
• Tous les types de comptes sont caractériser par:
o Un code et un solde
o Lors de la création d’un compte, son code qui est défini automatiquement en
fonction du nombre de comptes créés;
o Un compte peut subir les opérations de versement et de retrait. Pour ces deux
opérations, il faut connaître le montant de l’opération.
o Pour consulter un compte on peut faire appel à sa méthode toString()
• Un compte simple est un compte qui possède un découvert. Ce qui signifie que ce
compte peut être débiteur jusqu’à la valeur du découvert.
• Un compte Epargne est un compte bancaire qui possède en plus un champ
«tauxInterêt» et une méthode calculIntérêt() qui permet de mettre à jour le solde en
tenant compte des intérêts.
• Un ComptePayant est un compte bancaire pour lequel chaque opération de retrait et de
versement est payante et vaut 5 % du montant de l’opération.
1. Donner le diagramme de classes.

2. Implémenter les classes de cette application

2021-12-13 Y.Balouki 65
3- les concepts de la programmation orienté objet.

Attribut et méthode statique d’une classe:


• Les objets d’une même classes peuvent partager des mêmes variables qui sont
stockées au niveau de la classe. Ce genre de variables, s’appellent les variables
statiques ou variables de classes.

• Alors un attribut statique d’une classe est un attribut qui appartient à la


classe et partagé par tous les objets de cette classe.

• Comme un attribut une méthode peut être déclaré statique.

• Exemple: soit la classe compte:

2021-12-13 Y.Balouki 66
3- les concepts de la programmation orienté objet.

Attribut et méthode statique d’une classe:


La variable nbComptes permet de
stocker le nombre de comptes crées

La variable nbComptes est commun


entre les objets alors il est déclaré static

2021-12-13 Y.Balouki 67
3- les concepts de la programmation orienté objet.

Surcharge en Java:
• Dans une classe, on peut définir plusieurs constructeurs. Chacun ayant une
signature différentes (paramètres différents).
• On dit que le constructeur est surchargé
• On peut également surcharger une méthode. Cela peut dire qu’on peut définir,
dans la même classe plusieurs méthodes qui ont le même nom et des signatures
différentes;
• La signature d’une méthode désigne la liste des arguments avec leurs types.
• Un constructeur peut appeler un autre constructeur de la même classe en
utilisant le mot this() avec des paramètres éventuels

2021-12-13 Y.Balouki 68
3- les concepts de la programmation orienté objet.

Classe abstraite:

• Une classe abstraite est une classe qui ne peut pas être instanciée.

• Une classe abstraite est généralement créée pour en faire dériver de nouvelle
classe par héritage.

• Exemple:

2021-12-13 Y.Balouki 69
3- les concepts de la programmation orienté objet.

Méthode abstraite:
• Une méthode abstraite peut être déclarée à l’intérieur d’une classe abstraite.

• Une méthode abstraite est une méthode qui n’a pas de définition.

• Une méthode abstraite est une méthode qui doit être redéfinie dans les classes
dérivées. public abstract class Compte {
// Membres

Exemple: // Méthode abstraite
public abstract void afficher();
}

public class CompteSimple extends Compte {


// Membres

public void afficher(){
System.out.println("Solde="+solde+" Découvert="+decouvert);
}
}

2021-12-13 Y.Balouki 70
3- les concepts de la programmation orienté objet.

Interfaces:
• Une interface est une sorte de classe abstraite qui ne contient que des
méthodes abstraites.

• Dans java une classe hérite d’une seule classe et peut implémenter en même
temps de plusieurs interface.

• Une interface IA peut implémenter une autre interface IB.

• Alors toute classe qui implémente l’interface IA implémente aussi l’interface


IB.

• Une classe qui implémente une interface doit redéfinir toutes les méthodes de
cette interface.

2021-12-13 Y.Balouki 71
3- les concepts de la programmation orienté objet.

Interfaces:
• Exemple de déclaration d’une interface:

• Exemple d’implementation d’une interface:

2021-12-13 Y.Balouki 72
3- les concepts de la programmation orienté objet.

Classe de type final :


• Une classe de type final est une classes qui ne peut pas être dérivée.

• Exemple de syntaxe:

La classe CompteSimple peut être déclarée final en écrivant:

2021-12-13 Y.Balouki 73
3- les concepts de la programmation orienté objet.

Variable et méthode final :


• Une variable final est une variable dont la valeur ne peut pas changer.
Autrement dit, c’est une constante:
• Exemple : final double PI=3.14;
• Une méthode final est une méthode qui ne peut pas être redéfinie dans les
classes dérivées.
• Exemple : La méthode verser de la classe suivante ne peut pas être redéfinie
dans les classes dérivées car elle est déclarée final

2021-12-13 Y.Balouki 74
3- les concepts de la programmation orienté objet.

Polymorphisme
• Le polymorphisme offre aux objets la possibilité d ’appartenir à plusieurs catégories à
la fois.

• En effet, nous avons certainement tous appris à l'école qu'il était impossible
d'additionner des chats et des chiens.

• Avec la notion orientée objets on peut résoudre ce problème via le sur-casting

3 (animaux) chats
+
5 (animaux) chiens
---------------------------------------------
= 8 animaux
• Cette façon de voir les choses implique que les chats et les chiens soient "transformés"
en animaux préalablement à l'établissement du problème. Cette transformation est
appelée sur-casting

2021-12-13 Y.Balouki 75
3- les concepts de la programmation orienté objet.

Polymorphisme: L’instanciation et héritage


Considérons l’exemple suivant:

Animal
poids:int
Animal()
affiche():void

Chat Chien

Chat(int p) Chien(int p)
affiche():void affiche():void
affichePoids() affichePoids()

2021-12-13 Y.Balouki 76
3- les concepts de la programmation orienté objet.

Polymorphisme: L’instanciation et héritage


public abstract class Animal{ public class Chat extends Animal{
int poids; public Chat(int p){
public Animal(){ poids=p;
System.out.println("Création d'un System.out.println("création d'un
animal"); Chat de "+ poids+" grammes ");
} }
public void affiche(){ public void affiche(){
System.out.println("c'est un animal"); System.out.println("C'est un
}} Chat");
}
public class Chien extends Animal{ public void affichePoids(){
public Chien(int p){ System.out.println("le poids du
poids=p; Chat est:"+poids+" grammes");
System.out.println("création d'un chien }
de "+ poids+" grammes "); }
}
public void affiche(){ public class Polymorphisme{
System.out.println("C'est un chien"); public static void main(String[] args){
} Chien p=new Chien(1700);
public void affichePoids(){ Chat o=new Chat(180);
System.out.println("le poids du chien }}
est:"+poids+" grammes");
}}

2021-12-13 Y.Balouki 77
3- les concepts de la programmation orienté objet.

Polymorphisme: L’instanciation et héritage


• Le résultat affiché par le programme est:
Création d'un Animal
Création d'un chien de 1700 grammes
Création d'un Animal
création d'un chat de 180 grammes

• Nous constatons qu'avant de créer un Chien le programme crée un Animal comme le


montre l'exécution du constructeur de cette classe. La même chose se passe lorsque
nous créons un Chat.

2021-12-13 Y.Balouki 78
3- les concepts de la programmation orienté objet.

Polymorphisme: Sur-Casting des objets


• Considérons l’exemple suivant:

public class Polymorphisme2{


public static void main(String[] args){
// Sur-casting implicite
Animal a1=new Chien(740);
// Sur-casting explicite
Animal a2=(Animal)new Chat(160);
// Sur-casting implicite
a2=new Chien(740);
}
}

2021-12-13 Y.Balouki 79
3- les concepts de la programmation orienté objet.

Polymorphisme: Sur-Casting des objets


• Un objet de type Chien peut être affecté à un handle de type Animal sans aucun
problème :
Animal a1;
a1=new Chien(140);
• Dans ce cas l’objet Chien est converti automatiquement en Animal. Alors on dit que
l’objet Chien est sur-casté en Animal.
• Dans java, le sur-casting peut se faire implicitement.
• Toutefois, on peut faire le sur-casting explicitement sans qu’il soit nécessaire.
• La casting explicit se fait en précisant la classe vers laquelle on convertit l’objet entre
parenthèse. Exemple :
a2=(Animal)new Chat(240);

2021-12-13 Y.Balouki 80
3- les concepts de la programmation orienté objet.

Polymorphisme: Sous-Casting des objets


• Considérons l’exemple suivant:
public class Polymorphisme3{
public static void main(String[]
args){
Animal a1;
Animal a2;
Erreur de compilation:
a1=new Chien(760); Polymorphisme3.java:5: cannot
a2=new Chat(340); resolve symbol
f1.affichePoids();
symbol : method affichePoids ()
((Chien)a1).affichePoids(); location: class Animal
} a1.affichePoids();
}
1 error

Solution : Sous-casting explicit

2021-12-13 Y.Balouki 81
3- les concepts de la programmation orienté objet.

Polymorphisme: Sous-Casting des objets


• Ce message indique que l’objet a1 qui est de type Animal ne possède pas la méthode
affichePoids().

• Cela est tout à fait vrai car cette méthode est définie dans les classes Chien et Chat et
non dans la classe Animal.

• En fait, même si le handle a1 pointe un objet Chien, le compilateur ne tient pas en


considération cette affectation, et pour lui a1 est un Animal.

• Il faudra donc convertir explicitement l’objet a1 qui de type Animal en Chien.

• Cette conversion s’appelle Sous-casting qui indique la conversion d’un objet d’une
classe vers un autre objet d’une classe dérivée.

• Dans ce cas de figure, le sous-casting doit se faire explicitement ((Chien)a1).affichePoids();

• Cette instruction indique que l’objet a1 , de type Animal, est converti en Chien, ensuite
la méthode affichePoids() de l’objet Chien est appelée.
2021-12-13 Y.Balouki 82
3- les concepts de la programmation orienté objet.

Polymorphisme: Late-Binding et Early-Binding


• Le lien entre l'appel et la méthode peut établi par deux manières:

 Au moment de la compilation, cette technique est appelée early binding et utilisée


si la méthode est déclarée final.

 Au moment de l’exécution, cette technique est appelée late binding et utilisée pour
une méthode n’est pas déclarée final .

• Dans notre cas, la méthode affiche() possède 3 versions définies dans les classes Animal,
Chien et Chat. Ces méthodes ne sont pas déclarées final alors c’est au moment de
l’exécution que Java fait le lien entre l’objet et la méthode correspondante.

2021-12-13 Y.Balouki 83
3- les concepts de la programmation orienté objet.

Polymorphisme: Résumé
• Un objet est une instance de:
 sa classe,
 toutes les classes parentes de sa classe,
 toutes les interfaces qu'il implémente,
 toutes les interfaces parentes des interfaces qu'il implémente,
 toutes les interfaces qu'implémentent les classes parentes de sa classe,
 toutes les interfaces parentes des précédentes.

2021-12-13 Y.Balouki 84
4- les tableaux et les collections en Java.

liste
Tableaux des primitives
5 0
12 1
 Déclaration d’un tableau : 2
23
3
Tableau de nombres entier : int[] liste; 4
5
 liste est un handle qui pointe vers un tableau d’entier 6
7
 Création du tableau: liste = new int[11]; 8
9
10

 Manipulation des éléments du tableau:

1:
liste[0]=5; liste[1]=12; liste[3]=23;

2:
for(int i=0;i<liste.length;i++){
System.out.println(liste[i]);
}
2021-12-13 Y.Balouki 85
4- les tableaux et les collections en Java.

lesAnimaux
Tableaux des objets
 Déclaration d’un tableau des objets: 0
Tableau d’objets Animal : Animal[] lesAnimaux; a1:Chien 1
 Création du tableau:
poids=760 2
affiche() 3
affichePoids() 4
 lesAnimaux = new Animal[5];
 Création des objets: :Chat
poids=360
Chien a1=new Chien(760);
affiche()
lesAnimaux[0]= a1;
lesAnimaux[1]=new Chat(100); affichePoids()
lesAnimaux[2]=new Pomme(55);
:Chien
 Manipulation des objets: poids=860
for(int i=0;i<lesAnimaux.length;i++){ affiche()
lesAnimaux[i].affiche();
affichePoids()
if(lesAnimaux[i] instanceOf Chien)
((Chien)lesAnimaux[i]).affichePoids();
else
((Chat)lesAnimaux[i]).affichePoids();
}
2021-12-13 Y.Balouki 86
4- les tableaux et les collections en Java.

Les collections
• Une collection est un objet qui contient autres objets.

• Les collections proposent une solution efficace de stockage et de manipulation des


données tels que, ajouter un nouveau objet dans la collection, supprimer un objet de la
collection, rechercher des objets selon des critères, …

• On utilise les collections dans le cas où on a la dimension des données est dynamique.

• Java fourni une infrastructure pour la gestion des collections, c’est un ensemble des
classes et interfaces du package java.util.

2021-12-13 Y.Balouki 87
4- les tableaux et les collections en Java.

Les collections: Avantages


• Améliorer la qualité et la performance des applications.

• Réduire l’effort lors de l’implementation.

• Faciliter le dévloppement et l’apprentissage de nouvelles API (Application


Programming Interface).

• Réduire le coût de dévloppement des nouvelles applications et API.

• Encourager la réutilisation du code.

2021-12-13 Y.Balouki 88
4- les tableaux et les collections en Java.

Les collections: L’architecture de l’infrastructure

Collection Map

List Set SortedMap

SortedSet HashMap
ArrayList

HashSet TreeMap
Vector

TreeSet

2021-12-13 Y.Balouki 89
4- les tableaux et les collections en Java.

Les collections: ArrayList


• ArrayList est une classe du package java.util, qui implémente l’interface List.

• Une sorte de tableau contenant un nombre quelconque d'instances d’une classe .


• Les emplacements sont repérés par des valeurs entières (à débutant à 0, comme un
tableau).
• Exemple de Déclaration d’une collection de type List qui devrait stocker des objets de
type Fruit:
List<Fruit> fruits; ou bien ArrayList<Fruit> fruits;
Création de la liste:
fruits=new ArrayList<Fruit>();
• Depuis 2007 Sun Microsystème a intégré la notion de la générosité.

2021-12-13 Y.Balouki 90
4- les tableaux et les collections en Java.

Les collections: ArrayList


• La classe ArrayList offre plusieurs méthodes permettant la manipulation des données:

 boolean add(Object obj)


 void add(int indice, Object obj)
 boolean contains(Object obj)
 Object get(int indice)
 int indexOf(Object obj)
 void remove(int indice)
 void set(int indice, Object obj)
 int size()

2021-12-13 Y.Balouki 91
4- les tableaux et les collections en Java.

Les collections: ArrayList


Exemple:

List<Fruit> fruits = new ArrayList<Fruit>();


fruits.add(new Pomme(30));fruits.add(new Orange(25));
Fruit f1= fruits.get(3);
fruits.remove(f1);
• Afficher les éléments de ArrayList:
for(int i=0;i<fruits.size();i++){
fruits.get(i).affiche();
}
• Ou bien: En utilisant la boucle for each:
for(Fruit f:fruits){
f.affiche();
}

2021-12-13 Y.Balouki 92
4- les tableaux et les collections en Java.

Les collections: Vector


• Vector est une classe du package java.util qui fonctionne comme tableau.

• La collection de type Vector est optimal (Consomme mois de mémoire par rapport à
ArrayList).
• Déclaration d’un Vecteur qui devrait stocker des objets de type Fruit:
Vector<Fruit> fruits;
• Création d’un vecteur fruits:
fruits=new Vector<Fruit>();
• Ajouter deux objets de type Fruit au vector fruits
fruits.add(new Pomme(30));
fruits.add(new Orange(25));
• Faire appel à la méthode affiche() de tous les objets de la liste:
 En utilisant la boucle classique for
for(int i=0;i<fruits.size();i++){
fruits.get(i).affiche();
}
 En utilisant la boucle for each
for(Fruit f:fruits)
f.affiche();
• Supprimer le deuxième Objet du vector: fruits.remove(1);
2021-12-13 Y.Balouki 93
4- les tableaux et les collections en Java.

Les collections: HashMap


• La collection HashMap est une classe qui implémente l’interface Map. Cette collection
permet de créer un tableau dynamique d’objet de type Object qui sont identifiés par
une clé.

• Déclaration et création d’une collection de type HashMap qui contient des fruits
identifiés par une clé de type

Map<String, Fruit> fruits=new HashMap<String, Fruit>();

fruits
key value

2021-12-13 Y.Balouki 94
4- les tableaux et les collections en Java.

Les collections: HashMap


• La classe HashMap offre plusieurs méthodes permettant la manipulation des données :

 Ajouter deux objets de type Fruit à la collection HashMap:


fruits.put("p1", new Pomme(40));
fruits.put("o1", new Orange(60));

fruits
:Pomme
key value
p1
o1
:Orange

 Récupérer un objet ayant pour clé = p1:


Fruit f=fruits.get("p1");
f.affiche();

2021-12-13 Y.Balouki 95
4- les tableaux et les collections en Java.

L’interface Iterator
• La collection de type Iterator du package java.util est souvent utilisée pour parcourir et
afficher les objets d’une autre collection.

• Comment parcourir un objet de type Vector par un objet de type Iterator:


 Création d’un vecteur de Fruit.
Vector<Fruit> fruits=new Vector<Fruit>();
 Ajouter des fruits au vecteur
fruits.add(new Pomme(30));
fruits.add(new Orange(25));
fruits.add(new Pomme(60));
 Création d’un Iterator à partir de ce vecteur
Iterator<Fruit> it=fruits.iterator();

 Parcourir de la collection:
while(it.hasNext()){
Fruit f=it.next();
f.affiche();
}
2021-12-13 Y.Balouki 96
4- les tableaux et les collections en Java.

L’interface Iterator
• Comment parcourir un objet de type HashMap par un objet de type Iterator:
 Création d’un HashMap de Fruit.
Map<String, Fruit> fruits=new HashMap<String, Fruit>();
 Ajouter des fruits à la collection fruits:
fruits.put("p1", new Pomme(40));
fruits.put("o1", new Orange(60));
 Création d’un Iterator à partir de ce vecteur
Iterator<String> it=fruits.keySet().iterator();
 Parcourir de la collection:
while(it.hasNext()){
String key=it.next();
Fruit f=fruits.get(key);
System.out.println(key);
f.affiche();
}

2021-12-13 Y.Balouki 97
3- les concepts de la programmation orienté objet.

Atelier 1:
On souhaite créer une application - Gestion des notes – qui permet de gérer les notes des
étudiants. Chaque étudiant est identifié par un code , un nom, un prénom, age et adresse-
mail. Il peut être inscrit en une ou plusieurs matières, chaque matière est définie par un
code alphanumérique, une désignation et un volume horaire, l’étudiant doit avoir une
note moyenne pour chaque matière et suivant la note on conclut la note moyenne et le
mention. Un professeur peut enseigner un ou plusieurs matières et il peut être permanant
ou vacataire, le salaire d’un enseignant vacataire calculer on multipliant le nombre
d’heure par 300 Dhs par contre le salaire d’un enseignant permanant est égale nombre
d’heure multiplier par 200Dhs.

L’application doit être capable de réaliser ces fonctions:

 Ajouter un étudiant.

 Ajouter une matière.

 Ajouter une note d’un etudiant pour une matière donnée.

2021-12-13 Y.Balouki 98
3- les concepts de la programmation orienté objet.

Atelier 1:
 Afficher les notes d’un etudiant.

 Afficher la moyenne des notes et la mention d’un étudiant.

 Calculer le salaire d’un enseignant.

Questions:

1- Donner le diagramme de cas d’utilisation.

2- Donner le diagramme de classes.

3- Implémenter l’application en java.

4-Tester l’application

2021-12-13 Y.Balouki 99
4- Les interfaces graphiques en Java.

 Les Interfaces Homme-Machine (IHM) font un outil principal pour rendre


l’application interactive.

 Toutes interactions utilisateurs avec l’application sont assurées via les IHMs.

 Alors les interfaces homme-machine doivent être simples à utilisées, claires,


non encombrées.

 Java offre deux composants pour le dévloppement des interfaces graphiques:

• Composants AWT ( Abstract Window ToolKit): Composants légers qui


font appel aux composants graphiques du système d’exploitation.

• Composants SWING: (Bibliothèque graphique).Composants lourds


développes complétement en java et ils sont indépendants au système
d’exploitation.

2021-12-13 Y.Balouki 100


4- Les interfaces graphiques en Java.

 Quelque soit la technique utilisées nous avons trois types d’objets de

composants:

• Components: Les composants graphiques.

• Containers: des objets qui peuvent contenir un ou plusieurs

composants graphiques.

• Layouts: sont des stratégies de placement des components dans un

container.

2021-12-13 Y.Balouki 101


4- Les interfaces graphiques en Java.

AWT Swing
Component • Label • JLabel
• Button • JButton
• TextField • JTextField
• List • JList
• … • …
Container • Panel • JPanel

Layout • BorderLayout • BorderLayout


• FlowLayout • FlowLayout
• GridLayout • GridLayout
• … • …

2021-12-13 Y.Balouki 102


4- Les interfaces graphiques en Java.

AWT:
• Une application AWT est une classe qui hérite
de la classe Frame.
• Pour développer un interface graphique à
base de AWT il faut suivre les étapes
suivantes:
 Définir l’ensembles des components.
 Définir si nécessaire les conteneurs.
 Ajouter les components à des
conteneurs.
 Définir une stratégie pour afficher les
conteneurs et les components.
 Afficher l’interface graphique.

2021-12-13 Y.Balouki 103


4- Les interfaces graphiques en Java.

Swing:
• Une application Swing est une classe qui
hérite de la classe JFrame.
• Pour développer un interface graphique à
base de Swing il faut suivre les étapes
suivantes:
 Définir l’ensembles des components.
 Définir si nécessaire les conteneurs.
 Ajouter les components à des
conteneurs.
 Définir une stratégie pour afficher les
conteneurs et les components.
 Afficher l’interface graphique.

2021-12-13 Y.Balouki 104


4- Les interfaces graphiques en Java.

Gestion des évènements:


 Pour qu’un objet (Button par exemple) puisse répondre à un événement, il
faut lui attacher un écouteur (Listener).

 Il existe différents types de Listener:

• WindowsListner : Pour gérer les événements sur les fenêtres.

• ActionListener :pour gérer les événements produits sur les composants


graphiques.

• KeyListener : pour gérer les événements du clavier

• MouseListener : pour gérer les événements de la souris.

• …

2021-12-13 Y.Balouki 105


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


 ActionListener est une interface qui définit une seule méthode:
public void actionPerformed (ActionEvent e);

 L’événement actionPerformed est produit quand on valide une action par un


clique ou par la touche de validation du clavier sur un component.

 La gestion des réponse sur un événement se fait via la redéfinition de la


méthode actionPerformed.

 La classe qui implémente l’interface ActionListener est appelée écouteur.

 En Java il existe 3 manières pour gérer les évènements de type ActionListner.

 .
2021-12-13 Y.Balouki 106
4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


1. Implementation de l’interface ActionListener

 .

• Constructeur:

2021-12-13 Y.Balouki 107


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


1. Implementation de l’interface ActionListener

• Gestion des événements:

• Instanciation de l’interface graphique:

2021-12-13 Y.Balouki 108


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


1. Implementation de l’interface ActionListener

2021-12-13 Y.Balouki 109


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


2. Utilisation d’une classe interne

• Classe interne:

2021-12-13 Y.Balouki 110


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


2. Utilisation d’une classe interne

• Le constructeur:

• Instanciation de l’interface graphique:

2021-12-13 Y.Balouki 111


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


2. Utilisation d’une classe interne

2021-12-13 Y.Balouki 112


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


3. Créant le component avec l’ActionListener

• Le constructeur

2021-12-13 Y.Balouki 113


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


3. Créant le component avec l’ActionListener

• Gestion des évènements dans le constructeur

• Instanciation de l’interface graphique:

2021-12-13 Y.Balouki 114


4- Les interfaces graphiques en Java.

Gestion des évènements de type ActionListener:


3. Créant le component avec l’ActionListener

2021-12-13 Y.Balouki 115


4- Les interfaces graphiques en Java.

Atelier 2:
On reprend l’Atelier 1 (Gestion des notes) et on veut créer un interface
graphique qui permet à un utilisateur de saisir le code de l’etudiant et on cliquant
sur le bouton chercher le nom de l’étudiant est ajouté à une liste et les
informations de l’étudiant ainsi sa moyenne s’affichent sur une autre liste.

 Développer la couche présentation via le développement d’un interface


graphique qui assure les fonctionalités citées auparavant.

2021-12-13 Y.Balouki 116


5- Les exceptions en Java.

 Un programme informatique est souvent traite des tâches bien déterminées.

 Parfois le programme rencontre des situations exceptionnelles.

 Java introduit un système de gestion des exceptions robuste.

 Les intérêts de ce mécanisme sont:

• Offre un code très lisible.

• Coût de l’application optimal.

• Séparation de la logique métier et la logique traitement des exceptions.

2021-12-13 Y.Balouki 117


5- Les exceptions en Java.

L’architecture des exceptions en Java

2021-12-13 Y.Balouki 118


5- Les exceptions en Java.

 Il existe deux types d’exceptions en Java:

• Les exceptions surveillées.

• Les exceptions non surveillées.

 Les exceptions surveillées sont signalées par le compilateur.

 Les exceptions non surveillées ne sont pas signalées par le compilateur.

 Le programmeur est obligé de traiter une exception surveillées par contre il


peut traiter ou non les exceptions non surveillées.

2021-12-13 Y.Balouki 119


5- Les exceptions en Java.

Exemple: Exception non surveillée


import java.util.Scanner;
public class ExempleException {
public static int division(int a, int b){
int c = a/b;
return c;
}
public static void main(String[] args) {
Scanner clavier=new Scanner(System.in);
System.out.print("Saisir a:");
int a=clavier.nextInt();
System.out.print("Saisir b:");
int b=clavier.nextInt();
int resultat=calcul(a, b);
System.out.println("Resultat="+resultat);
}
}

2021-12-13 Y.Balouki 120


5- Les exceptions en Java.

Exemple: Exception non surveillée

 Résultat d’exécution

• Si b#0 : Donner a:21


Donner b:7
Resultat=3

• Si b=0 :

Donner a:12
Donner b:0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExempleException.divisionApp1.java:4)
at ExempleException.main(App1.java:11)

2021-12-13 Y.Balouki 121


5- Les exceptions en Java.

Exemple: Exception non surveillée : Résultat d’exécution


Donner a:12
Donner b:0 JVM
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExempleException.divisionApp1.java:4)
at ExempleException.main(App1.java:11)
Exception
• L’exception est détectée au moment de l’exécution et non
pas au moment de compilation.
main
• L’exception est de type ArithmeticException, elle concerne
la division par zéro.
• L’exception n’a pas été traiter ni dans la méthode division Exception
ni dans le main, elle a été remonter au JVM.
• JVM a arrêtée l’exécution du programme.
division
• Dans ce cas l’exception est qualifiée fatale.

2021-12-13 Y.Balouki 122


5- Les exceptions en Java.

Traitement d’une exception

 Le programmeur peut prévoyez une exception et la surveiller, on dit traiter


une exception.

 Il existe deux manières pour traiter les exceptions:

• Utilisation du bloc try – catch.

• Utilisation de la syntaxe throws.

2021-12-13 Y.Balouki 123


5- Les exceptions en Java.

Utilisation du bloc try - catch


import java.util.Scanner;
public class ExempleException {
public static int division (int a, int b){
int c=a/b;
return c;
}
public static void main(String[] args) {
Scanner clavier=new Scanner(System.in);
System.out.print("Saisir a:"); int a=clavier.nextInt();
System.out.print("Saisir b:"); int b=clavier.nextInt();
int resultat=0;
try{
resultat=division(a, b);
}
catch (ArithmeticException e) {
System.out.println("Division par zero est impossible");
}
System.out.println("Resultat="+resultat);
}
}
2021-12-13 Y.Balouki 124
5- Les exceptions en Java.

Les principaux méthodes d’une Exception:

 Les méthodes suivantes sont communes pour les différents exceptions:

• getMessage() : retourne le message de l’exception.

System.out.println(e.getMessage());

• toString() : retourne une chaine qui contient le type de l’exception et le


message de l’exception.

System.out.println(e.toString());

• printStackTrace: affiche la trace de l’exception

e.printStackTrace();

2021-12-13 Y.Balouki 125


5- Les exceptions en Java.

Utilisation de la syntaxe throws


import java.util.Scanner;
public class ExempleException {
public static int division (int a, int b) throws Exception{
if(b=0) throw new Exception(" b doit être different à 0");
else {
int c=a/b;
return c;
}
}
public static void main(String[] args) {
Scanner clavier=new Scanner(System.in);
System.out.print("Saisir a:"); int a=clavier.nextInt();
System.out.print("Saisir b:"); int b=clavier.nextInt();
int resultat=0;
try{
resultat=division(a, b);
}
catch (Exception e) {
System.out.println(e.getMessage());}
System.out.println("Resultat="+resultat);
}
2021-12-13 Y.Balouki 126
}

Vous aimerez peut-être aussi