Add termin5
This commit is contained in:
73
lambdas.md
Normal file
73
lambdas.md
Normal file
@ -0,0 +1,73 @@
|
||||
<!--
|
||||
title: Lambdas
|
||||
description: Folien für Lambdas in Programmieren 2
|
||||
url: https://git.haw-hamburg.de/pm2-tutorium/slides
|
||||
header: Programmieren 2 **Tutorium**
|
||||
footer: Henri Burau
|
||||
-->
|
||||
|
||||
# Lambdas
|
||||
|
||||
---
|
||||
|
||||
# Grundlagen
|
||||
|
||||
Erlauben das Implementieren von Interfaces mit nur einer Methode.
|
||||
|
||||
Klassischerweise wurde dieses Problem mithilfe von anonymen inneren Klassen gelöst. Lambda-Ausdrücke sparen im Vergleich dazu deutlich an Code.
|
||||
|
||||
---
|
||||
|
||||
# Beispiel
|
||||
|
||||
Lambda
|
||||
```java
|
||||
_zaehlerUI.gibErhoeheButton().setOnAction(event -> {
|
||||
_zaehler.zaehleHoch();
|
||||
informiereUeberAenderung();
|
||||
});
|
||||
```
|
||||
|
||||
Anonyme innere Klasse
|
||||
```java
|
||||
_zaehlerUI.gibErhoeheButton().setOnAction(new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent event) {
|
||||
_zaehler.zaehleHoch();
|
||||
informiereUeberAenderung();
|
||||
}
|
||||
});
|
||||
```
|
||||
---
|
||||
|
||||
# Beispiel
|
||||
|
||||
```java
|
||||
// Lambda ohne explizite Typen und return (type inference)
|
||||
x -> x * 2
|
||||
|
||||
// Lambda mit explitizen Typen der formalen Parameter
|
||||
(int x, int y) -> x + y
|
||||
|
||||
// Lambda mit return
|
||||
(int x, int y) -> { return x * y + 2 }
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Deklaration
|
||||
|
||||
```java
|
||||
@FunctionalInterface
|
||||
public interface Filter<T> {
|
||||
bool istGueltig(T obj);
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
Filter<String> langGenug = (String text) -> text.length() > 10;
|
||||
```
|
||||
|
||||
# Aufgabe
|
||||
|
||||
1) Die Klasse `ZaehlerWerkzeug` nutzt das Interface `Observer` um Änderungen von Subwerkzeugen zu erhalten. `ZaehlerWerkzeug` registriert sich mithilfe von anonymen inneren Klassen. Baue das System der Observer um, sodass Lambdas genutzt werden.
|
||||
Reference in New Issue
Block a user