Conception par Objet et Programmation Java

1/14
100%

<!-- Slide number: 1 -->

Conception par Objet et Programmation Java

1

![](GoogleShape215p1.jpg)

Chapitre 9 : Lambda Expression

Equipe Java

2019-2020

![](GoogleShape220p1.jpg)

Notes:

<!-- Slide number: 2 -->

Plan

‹#›

Introduction

Classe et objet

Encapsulation

Héritage

Polymorphisme

Exceptions

Interfaces

Collections

Lambda Expression

Stream

Notes:

Publicité

<!-- Slide number: 3 -->

Objectifs

‹#›

Introduire le concept Lambda Expression

Introduire le syntaxe Lambda Expression

Implémentation des interfaces fonctionnelles

Notes:

<!-- Slide number: 4 -->

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.

Notes:

<!-- Slide number: 5 -->

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

Notes:

<!-- Slide number: 6 -->

Lambda Expression: Syntaxe

‹#›

![](GoogleShape257p6.jpg)

Body of the Lambda may throw exceptions

Publicité

Single line Lambdas – Do not need braces – Do not need an explicit return statement

Lambdas with a single parameter do not need brackets

Lambdas with no parameters must have empty brackets

Notes:

<!-- Slide number: 7 -->

Lambda Expression: Syntaxe Exemples

‹#›

  • () -> System.out.println("Hello Lambda")
  • x -> x + 10
  • (int x, int y) -> { return x + y; }
  • (String x, String y) -> x.length() – y.length()
  • (String x) -> { listA.add(x); listB.remove(x); return listB.size(); }

Notes:

<!-- Slide number: 8 -->

Lambda Expression: Target Type

‹#›

En Java le type d’une expression lambda une connu sous le nom d'une interface fonctionnelle.

Puisque une interface fonctionnelle ne peut avoir qu'une seule méthode abstraite, les types des paramètres de l'expression Lambda doivent correspondre aux paramètres de cette méthode, et le type du corps de lambda doit correspondre au type de retour de la méthode

Notes:

<!-- Slide number: 9 -->

Lambda Expression: Implémentations des interfaces fonctionnelles

‹#›

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

![](GoogleShape283p9.jpg)

Publicité

![](GoogleShape284p9.jpg)

Notes:

<!-- Slide number: 10 -->

Lambda ExpressionImplémentations des 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)".

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

![](GoogleShape293p10.jpg)

![](GoogleShape294p10.jpg)

Lambda Expression

Notes:

<!-- Slide number: 11 -->

Lambda ExpressionImplémentations des 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)".

![](GoogleShape303p11.jpg)

Lambda Expression

Notes:

<!-- Slide number: 12 -->

Lambda Expression: Implémentations des interfaces fonctionnelles

Publicité

‹#›

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

![](GoogleShape311p12.jpg)

![](GoogleShape312p12.jpg)

Notes:

<!-- Slide number: 13 -->

Lambda Expression: Implémentations des 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)".

![](GoogleShape321p13.jpg)

Notes:

<!-- Slide number: 14 -->

Lambda Expression: Implémentations des interfaces fonctionnelles

‹#›

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.

![](GoogleShape329p14.jpg)

Notes:

Conception par Objet et Programmation Java

Programming · course

Voir tous les documents en programmation

<!-- Slide number: 1 -->

Conception par Objet et Programmation Java

1

![](GoogleShape215p1.jpg)

Chapitre 9 : Lambda Expression

Equipe Java

2019-2020

![](GoogleShape220p1.jpg)

Notes:

<!-- Slide number: 2 -->

Plan

‹#›

Introduction

Classe et objet

Encapsulation

Héritage

Polymorphisme

Exceptions

Interfaces

Collections

Lambda Expression

Stream

Notes:

Publicité

<!-- Slide number: 3 -->

Objectifs

‹#›

Introduire le concept Lambda Expression

Introduire le syntaxe Lambda Expression

Implémentation des interfaces fonctionnelles

Notes:

<!-- Slide number: 4 -->

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.

Notes:

<!-- Slide number: 5 -->

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

Notes:

<!-- Slide number: 6 -->

Lambda Expression: Syntaxe

‹#›

![](GoogleShape257p6.jpg)

Body of the Lambda may throw exceptions

Publicité

Single line Lambdas – Do not need braces – Do not need an explicit return statement

Lambdas with a single parameter do not need brackets

Lambdas with no parameters must have empty brackets

Notes:

<!-- Slide number: 7 -->

Lambda Expression: Syntaxe Exemples

‹#›

  • () -> System.out.println("Hello Lambda")
  • x -> x + 10
  • (int x, int y) -> { return x + y; }
  • (String x, String y) -> x.length() – y.length()
  • (String x) -> { listA.add(x); listB.remove(x); return listB.size(); }

Notes:

<!-- Slide number: 8 -->

Lambda Expression: Target Type

‹#›

En Java le type d’une expression lambda une connu sous le nom d'une interface fonctionnelle.

Puisque une interface fonctionnelle ne peut avoir qu'une seule méthode abstraite, les types des paramètres de l'expression Lambda doivent correspondre aux paramètres de cette méthode, et le type du corps de lambda doit correspondre au type de retour de la méthode

Notes:

<!-- Slide number: 9 -->

Lambda Expression: Implémentations des interfaces fonctionnelles

‹#›

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

![](GoogleShape283p9.jpg)

Publicité

![](GoogleShape284p9.jpg)

Notes:

<!-- Slide number: 10 -->

Lambda ExpressionImplémentations des 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)".

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

![](GoogleShape293p10.jpg)

![](GoogleShape294p10.jpg)

Lambda Expression

Notes:

<!-- Slide number: 11 -->

Lambda ExpressionImplémentations des 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)".

![](GoogleShape303p11.jpg)

Lambda Expression

Notes:

<!-- Slide number: 12 -->

Lambda Expression: Implémentations des interfaces fonctionnelles

Publicité

‹#›

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

![](GoogleShape311p12.jpg)

![](GoogleShape312p12.jpg)

Notes:

<!-- Slide number: 13 -->

Lambda Expression: Implémentations des 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)".

![](GoogleShape321p13.jpg)

Notes:

<!-- Slide number: 14 -->

Lambda Expression: Implémentations des interfaces fonctionnelles

‹#›

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.

![](GoogleShape329p14.jpg)

Notes: