Chapitre10 Lambda Expressions Java 8

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 22

Conception Orientée Objet & Programmation JAVA

Chapitre 10 : Lambda Expression

ESPRIT - UP JAVA Année universitaire 2021/2022


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

2
Lambda Expression

3
Lambda Expression: Définition
Lambdas expression est considérée comme la plus grosse nouveauté de
Java 8.
C’est une forme de méthode, plus compacte qu’une méthode standard, pour
laquelle le nom est implicite et les paramètres peuvent être omis, tout
comme leur type ou une valeur de retour.

4
Lambda Expression: Définition
Lambda Expression est une manière simplifiée pour l'implémentation d'une
interface qui n'a qu'une seule méthode abstraite (SAM)..
Lambda Expressions sont des fonctions anonymes

🡺 SAMI (Single Abstract Method Interface) = interface fonctionnelle


On Peut créer un objet anonyme d’une interface fonctionnelle en l’écrivant
sous format d’une Lambda Expression

5
Lambda Expression: Exemple
Supposons que nous avons une interface fonctionnelle :

6
Lambda Expression: Exemple
🡺 Pour créer un Objet anonyme de MyInterface il faut écrire

Il ne faut pas oublier d’implementer la seule méthode abstaite « someMethod »


7
Lambda Expression: Exemple
🡺 Ceci est une autre écriture qui fonctionne exactement de la même
façon

Nous remarquerons que le code est devenu assez réduit.


8
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes

Nous commencerons par ceci


9
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes

Le compilateur connait l’interface à instancier 🡺 pas besoin d’écrire son nom


10
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes

Le compilateur connait que l’interface une seule méthode abstraite 🡺 pas besoin d’écrire son nom
11
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes

Le compilateur connait la seule méthode abstraite, donc il connait son accesseur, son type de retour 🡺
pas besoin de les écrire 12
Lambda Expression: Etapes
🡺 Pour arriver à ce résultat nous passerons par plusieurs étapes

Il suffit d’ajouter la flèche et le tour est joué


13
Lambda Expression: Etapes
🡺 Le résultat après formatage du code :

Les types « int » de a et b sont optionnels puisque le compilateur connait les type des arguments
14
Lambda Expression: Syntaxe
Lambda Expression s’écrit d’une façon assez simple en suivant quelques
régles :

• Si implementation du corps de expression est en une seule instruction


– Pas besoin d’acolades
– Pas besoin du mot clé “return”
• Lambdas avec un seul parametre n’a pas besoin de parentheses
• Lambdas sans parametres doit avoir des parentheses
• Lambdas avec plus qu’un parametre doit avoir des parentheses 15
Lambda Expression: Appliquons
🡺 Appliquons cette écriture sur les interfaces fonctionnelles de JAVA
• Function
Une interface "Function" prend un argument et retourne un résultat dont la
méthode fonctionnelle est "apply(Object)".

• 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()".

16
Lambda Expression: Appliquons
• 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)".

• 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)".

17
Lambda Expression: Appliquons
• 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)".

18
Lambda Expression: Appliquons
• 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)".

19
Lambda Expression: Appliquons
• 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)".

20
Lambda Expression: Appliquons
• BinaryOperator
Représente une opération à deux opérandes de même type, qui produise un résultat du même
type que les opérandes. C’est une spécialisation de l’interface "BiFunction" dans le cas où les
opérandes et le résultat sont tous du même type.

21
Merci pour votre attention

22

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy