OCP Java SE 8. Lambda

Ähnliche Dokumente
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Klausur Grundlagen der Programmierung

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Werkzeuge zur Programmentwicklung

1 Abstrakte Klassen, finale Klassen und Interfaces

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Programmiertechnik II Klausur WS 15/16 Angewandte Informatik Bachelor

Repetitorium Informatik (Java)

Einstieg in die Informatik mit Java

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

3 Objektorientierte Konzepte in Java

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Java Kurs für Anfänger Einheit 5 Methoden

Einführung in die Programmierung 1

Einstieg in die Informatik mit Java

Methoden und Funktionen in Scala

Methoden (fortgeschritten) in C# - 1

Welche Informatik-Kenntnisse bringen Sie mit?

JAVA - Methoden

Einstieg in die Informatik mit Java

Unterlagen. CPP-Uebungen-08/

System.out.println("TEXT");

Probeklausur: Programmierung WS04/05

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Abschnitt 6: Klassen, Objekte und Methoden in Java

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

3 Objektorientierte Konzepte in Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Javakurs für Anfänger

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

2. Programmierung in C

JAVA - Methoden - Rekursion

Grundlagen von C# - 1

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Java Schulung (Java 2 Java Development Kit 5 / 6)

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Java Einführung Methoden in Klassen

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Geschachtelte Klassen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

AuD-Tafelübung T-B5b

Javakurs zu Informatik I. Henning Heitkötter

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Übersicht. Vorstellung des OO-Paradigmas

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 295

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Interpreter - Gliederung

Programmieren in Java

Java: Syntax-Grundlagen III

Programmieren I + II Regeln der Code-Formatierung

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

RO-Tutorien 3 / 6 / 12

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

JAVA-Datentypen und deren Wertebereich

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Tutorium Rechnerorganisation

Theorie zu Übung 8 Implementierung in Java

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Probeklausur: Programmierung WS04/05

Objektorientierung (OO)

Interfaces und Vererbung

Java für Computerlinguisten

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Wie entwerfe ich ein Programm?

Java 8. Guild42, 18. November Stephan Fischli Dozent BFH, Software-Architekt ISC-EJPD

Algorithmen zur Datenanalyse in C++

PROGRAMMIERUNG IN JAVA

Kapitel 4: Klassen und Unterklassen

Klausur: Java (Liste P)

Elementare Datentypen in C++

5.4 Klassen und Objekte

Einstieg in die Informatik mit Java

Beispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)

Tag 4 Repetitorium Informatik (Java)

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Programmieren 2 Java Überblick

Vorlesung Programmieren

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Java 8 Lambdas und Streams

Objektorientierte Programmierung

13. Funktionale Konzepte in Java

Institut für Informatik und Angewandte Kognitionswissenschaften

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Dynamische Datentypen

Transkript:

OCP Java SE 8 Lambda

Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a)

Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur innerhalb einer Klasse in Form einer Methode definierbar

Lambda Ab Java 8 Lambda ist ein Behälter für Sourcecode ähnlich einer Methode, allerdings ohne Namen und ohne die explizite Angabe eines Rückgabetyps oder ausgelöster Exceptions. Vereinfacht ausgedrückt kann man einen Lambda am ehesten als anonyme Methode mit folgender Syntax und spezieller Kurzschreibweise auffassen (Parameter-Liste) -> { Ausdruck oder Anweisungen }

Lambda Auf die Angabe von Datentypen für die Parameter kann verzichtet werden. Lambdas nutzen die sogenannte Type Inference : Ähnlich wie beim Diamond Operator bei der Definition generischer Klassen. Dazu ermittelt der Compiler die passenden Typen aus dem Einsatzkontext Falls das auszuführende Stück Sourcecode ein Ausdruck ist, können die geschweiften Klammern um die Anweisungen entfallen. Ebenfalls kann dann das Schlüsselwort return weggelassen werden und der Rückgabewert entspricht dem Ergebnis des Ausdrucks Existiert lediglich ein Eingabeparameter, so sind die runden Klammern um den Parameter optional

Lambda Lambda-Ausdrücke lassen sich nicht auf ein Object abbilden. Folgende Code führt zum Compilerfehler: Object o = () ->{ System.out.println("Moin Moin"); };

Binding kann auf Klassen- und Instanzvariablen der umgebenden Klasse zugreifen (lesend und schreibend) lokale Variablen der umgebenden Methode müssen final oder effektiv final, (d.h. es gibt keine Zuweisung, die sie ändert) sein Lambdas repräsentieren ein Stück Funktionalität und haben keine Bindung zu einem Objekt. this innerhalb eines Lambdas hat die gleiche Bedeutung wie in den Zeilen direkt außerhalb davon

FunctionalInterface Grundlage jedes Lambda-Ausdrucks ist ein FunctionalInterface, SAM- Typ genannt (SAM = Single Abstract Method) es hat nur eine abstrakte Methode es kann statische Methoden enthalten es kann default Implementierungen enthalten Alle im Typ Object definierten Methoden können zusätzlich zu der abstrakten Methode in einem FunctionalInterface angegeben werden es kann mit der Annotation @FunctionalInterface als solchen gekennzeichnet werden

FunctionalInterface Zum Einsatz von Lambdas sowie zur Ergänzung und Flexibilisierung wurde das JDK um diverse Functional Interfaces (also SAM-Typen) erweitert. Package: java.util.function

FunctionalInterface Consumer<T> Beschreibt eine Aktion auf einem Element vom Typ T Methode: void accept(t t)

FunctionalInterface Function<T,R> Beschreibt ein allgemeines Konzept von Transformationen Methode: R apply (T t)

FunctionalInterface BiFunction<T,U,R> Wie Function<T,R> bzw. Consumer<T>, jedoch mit jeweils zwei Eingabewerten vom Typ T und U Methode: R apply (T t, U u)

FunctionalInterface Supplier<R> Stellt ein Ergebnis vom Typ T bereit. Im Gegensatz zu Function<T,R> erhält ein Supplier<T> keine Eingabe. Ist eine Fabrik. Methode: R get ()

FunctionalInterface Predicate<T> Führt einen Test auf T durch und liefert true, wenn das Kriterium erfüllt ist, sonst false. Ein Prädikat ist eine Aussage über einen Gegenstand, die wahr oder falsch ist. Methode: boolean test(t t)

FunctionalInterface UnaryOperator<T> Ist eine spezielle Funktion bei der die Typen für Eingang und Ausgang gleich sind Erweitert Function Methode: T apply (T t)

FunctionalInterface BinaryOperator<T> Wie UnaryOperator aber mit zwei Parametern gleichen Typs Methode: T apply (T t1, T t2)

FunctionalInterface Es gibt Varianten, die auf die Verarbeitung primitiver Typen spezialisiert sind (int, long und double) IntPradicate DoubleFunction LongSupplier etc.