Vous êtes sur la page 1sur 19

Conception Orientée Objet & Programmation JAVA

Chapitre 9 : les Interfaces en Java 8

ESPRIT - UP JAVA Année universitaire 2020/2021


PLAN
• Introduction
• Classe et objet
• Encapsulation
• Héritage
• Polymorphisme
• Exceptions
• Interfaces
• Collection
• Interface Fonctionnelle
• Expression Lambda
• Stream

2
Les Interfaces en Java 8

3
Les interfaces Java 8 : Spécificités
Les Interfaces en Java 8 ont une spécificité : Les méthodes par défaut et les méthodes statiques.

✔Les méthodes par défaut


→ Ajouter des nouvelles fonctionnalités aux interfaces
❖ Ces méthodes sont implémentées comme dans une classe

✔Les méthodes statique


→ fonctionnent exactement de la même façon que celles portées par les classes
❖ L’appel ce fait via le nom des Interfaces

4
Les interfaces Java 8 : Spécificités
Exemple d’utilisation:

❖On définit une interface Formule avec


deux méthodes « calculer » qui est une
méthode signature et sqrt qui est une
méthode implémentée.

5
Les interfaces Java 8 : Spécificités
Exemple d’utilisation:

❖ Instanciation de l’objet « Anonyme » formule et


implmentation de la méthode signature calculer

❖ Appel de la méthode calculer


❖ Appel de la méthode sqrt

6
Les interfaces Java 8 : Spécificités
Exemple d’utilisation:

Ici l’interface formule est


implémentée en tant qu'objet
anonyme.
C’est-à-dire que formule n’est pas issue
d’une classe mais plutôt d’une interface

7
Les interfaces fonctionnelles

8
Les interfaces fonctionnelles

Définition :

✔Un type d’interface apparu depuis la version 8 de JAVA


✔Une interface qui a une seule méthode abstraite (méthode signature)
✔Utilisé pour l’écriture en Lambda expression (du chapitre suivant)

9
Les interfaces fonctionnelles

Définition :
✔ Une interface fonctionnelle pourra être annotée avec l’annotation @FunctionalInterface
✔ L'annotation @FunctionalInterface n’est pas obligatoire, elle a un rôle important permettant au
compilateur de forcer l’interface afin qu’elle ne contienne qu’une seule méthode abstraite
✔ Si nous essayons de définir plus d'une seule méthode abstraite dans une interface annotée avec
@FunctionalInterface, le compilateur affichera une erreur.

10
Les interfaces fonctionnelles

Exemple :
Cette interface ne contient qu’une seule méthode abstraite « play »
🡺 Alors c’est une interface fonctionnelle

11
Les interfaces fonctionnelles

Les interfaces fonctionnelles les plus utilisées :


❖ Le JDK 8 apporte par défaut plusieurs interfaces fonctionnelles, D’anciennes interfaces de
l’API ont été migrées telles que "Comparable" et "Runnable".
Quelques interfaces fonctionnelles en Java:
🡺 Function
Une interface "Function" prend un argument et retourne un résultat dont la méthode fonctionnelle est
"apply(Object)". (T et R sont des type « Génerique »)

12
Les interfaces fonctionnelles
🡺 Supplier

� L’interface "Supplier" produise un résultat d'un type donnée. Contrairement à l’interface


"Function", "Supplier" n’accepte pas les arguments. La méthode abstraite de cette interface est
"get()".

13
Les interfaces fonctionnelles
🡺 Consumer

� L’interface "Consumer" représente une opération qui accepte un seul argument et ne renvoie
aucun résultat. La méthode abstraite de cette interface est "accept(Object)"

14
Les interfaces fonctionnelles
🡺 Predicate

� L’interface "Predicate" représente une opération qui accepte un seul argument et renvoie un
résultat de type "Boolean". La méthode abstraite de cette interface est "test(Object)".

15
Les interfaces fonctionnelles
🡺 Comparator

� L’interface "Comparator" est bien connue dans les anciennes versions du Java. C’est une
fonction de comparaison, qui impose un ordre total sur certains objets de collection via sa
méthode abstraite "compare(T o1, T o2)".

16
Les interfaces fonctionnelles
🡺 BiFunction

� Représente une fonction qui accepte deux arguments et produit un résultat. C’est la spécialisation
de deux arités de l’interface "Function". La méthode abstraite de cette interface est "apply(T t, U
u)".

17
Les interfaces fonctionnelles
🡺 UnaryOperator

� Représente une opération sur un opérande unique qui produit un résultat du même type
que son opérande. C’est une spécialisation de l’interface "Function" dans le cas où
l'opérande et le résultat sont du même type. L’interface abstraite de cette interface est
"apply(Object)".

18
Merci pour votre attention

19

Vous aimerez peut-être aussi