1
Programmation Orientée Objet Avancée
Année Universitaire 2022/2023
Niveau : License L2- DSI
Semestre2
Sana REFAI
sana.refai@gmail.com
1
Plan du cours
2
Chapitre 1: La généricité
Chapitre 2: Les collections
Chapitre 3: Les interfaces graphiques
javaFX
Chapitre 4: Gestions des évènements
Chapitre 5: Les entrées /Sorties en java
Chapitre 6: Les threads
Chapitre 5: L’accés aux BD via jdbc
2
Introduction(1/4)
Cas 1 : On veut définir une notion de paire d’objets avec deux
attributs de même( int par exemple ):
on a créé une classe spécialement pour des paires d’entiers ; si on
veut des paires de booléens il faudrait réécrire une autre classe (avec
un autre nom) qui contiendrait les mêmes méthodes
4
Introduction(2/4)
Une solution possible
Inconvénients
• les deux attributs peuvent des instances de classes différentes,
• on peut être amené à faire du transtypage (vers le bas),
• on risque des erreurs de transtypage qui ne se détecteront qu’`a
l’exécution
5
Introduction(3/4)
La solution est :
la généricité
l’usage de type paramétre. La généricité est
une notion de polymorphisme paramétrique.
Depuis la version 5.0 Java autorise la définition de
classes et d’interfaces contenant un (des)
paramètre(s) représentant un type(s). Cela permet
de décrire une structure qui pourra être
personnalisé au moment de l’instanciation à tout
type d’objet.
6
Introduction(4/4)
La solution est :
la généricité
Cette définition permet de définir ici des Paire contenant des
objets de type (uniforme) mais arbitraire.
7
Les avantages de la généricité
La généricité en Java permet de créer des classes, des
interfaces et des méthodes qui peuvent être utilisées avec
différents types de données.
La généricité, vous permet de:
• Ecrire du code plus flexible, réutilisable et sûr à l'exécution.
• Eviter les erreurs de type à l'exécution en vérifiant le type
des objets à la compilation.
• Eviter la duplication de code en créant des classes
génériques qui peuvent être utilisées avec différents types
de données.
la généricité en Java est un concept très utile pour
écrire du code plus souple et plus sûr, qui peut être utilisé
avec différents types de données sans duplication de code.
8
Utilisation de la généricité
• une classe générique doit être instanciée pour être
utilisée
• on ne peut pas utiliser un type primitif pour
l’instanciation,
• il faut utiliser les classes enveloppantes on ne peut pas
instancier avec un type générique
• une classe instancie ne peut pas servir de type de base
pour un tableau
9
Utilisation du type paramètre
le type paramètre peut être utilise pour déclarer
des variables (attributs) sauf dans une méthode de
classe le type paramétré ne peut pas servir à
construire un objet.
11
méthodes et généricité (1/3)
Une méthode de classe (static) ne peut pas utiliser une
variable du type paramètre dans une classe générique.
12
méthodes et généricité (2/3)
Une méthode (de classe ou d’instance) peut être générique dans
une classe non générique. Elle utilise alors son propre type
paramètre.
Pour utiliser une telle méthode on doit préfixer le nom de la
méthode par le type d’instanciation entre < et >.
13
méthodes et généricité (3/3)
Une méthode (de classe ou d’instance) peut être générique dans
une classe générique. Elle peut utiliser le type paramètre de la
classe et son propre type paramètre.
14
Héritage et généricité
une classe générique peut étendre une classe
(générique ou pas)
Triplet< T > est une sous classe de Paire< T >
• Triplet< String > est une sous classe de Paire< String >
• Triplet< String > n’est pas une sous classe de Paire< T >
• Triplet< String > n’est pas une sous classe de Paire<
Object > bien que String soit une sous classe de Object
• Triplet< String > n’est pas une sous classe de Triplet<
Object > bien que String soit une sous classe de Object
Ce dernier point interdit donc une affectation du genre :
15