Programmieren 2: Funktionale Programmierung (Teil 1) - PDF

Document Details

Uploaded by Deleted User

Hochschule für Technik Stuttgart

Tags

Java programming functional programming lambda expressions programming

Summary

This document is lecture material for a course on functional programming in Java. The document provides lecture notes about Java functions, lambdas, and functional interfaces.

Full Transcript

Hochschule für Technik Stuttgart Programmieren 2 Funktionale Programmierung (Teil 1) PRO2 I Folie 1 Hochschule für Technik Stuttgart Swing...

Hochschule für Technik Stuttgart Programmieren 2 Funktionale Programmierung (Teil 1) PRO2 I Folie 1 Hochschule für Technik Stuttgart Swing Teil I Erklären können, was funktionale Programmierung ist Lambda-Ausdrücke verstehen und einsetzen Den sinnvollen Einsatz von Methoden-Referenzen verstehen Teil II Die Anwendung der Stream-API von I/O-Streams abgrenzen können Eine Stream-Verarbeitung implementieren können Die wichtigsten Tool-Klassen und Methoden der Stream-API kennen und anwenden können. Quelle: https://openbook.rheinwerk-verlag.de/javainsel/ PRO2 I Folie 2 Hochschule für Technik Stuttgart Agenda für Teil I Motivation Erweiterte Schnittstellen Funktionale Schnittstellen / Lambda-Ausdrücke Syntax von Lambda-Ausdrücken Methodenreferenzen PRO2 I Folie 3 Hochschule für Technik Stuttgart Historie Maschinensprache / Assembler Eine Anweisung = ein Maschinenbefehl Datenbeschreibung = Platzreservierung im Hauptspeicher Hochsprache Eine Anweisung = mehrere Maschinenbefehle Maschinenunabhängig Abstrakte Datenbeschreibung , z. B. mit Datentypen Übersetzung des Quelltexts (Compiler oder Interpreter) Parametrisierung von Funktionen / Unterprogrammen Generics (Java 5): Parametrisierung des Typs Funktionale Programmierung (Java 8): Parametrisierung des Verhaltens mit Lambda-Ausdrücken PRO2 I Folie 4 Hochschule für Technik Stuttgart Beispiele (Code = Daten) ⚫ Ein Thread führt Programmcode im Hintergrund aus. Ein Objekt vom Typ Runnable verpackt den Code in der Methode run(). ⚫ Ein Timer führt Programmcode zu bestimmten Zeitpunkten aus. Die Methode scheduleAtFixedRate(…) besitzt einen Parameter vom Typ TimerTask. Ein Objekt vom Typ TimerTask verpackt den Code in der Methode run(). ⚫ Zum Sortieren kann dem Comparator eine eigene Ordnung übergeben werden. ⚫ Der Eventhandler zu einem JButton steckt in einem Objekt vom Typ ActionListener und zwar in der Methode actionPerformed(). PRO2 I Folie 5 Hochschule für Technik Stuttgart Agenda für Teil I Motivation Erweiterte Schnittstellen Funktionale Schnittstellen / Lambda-Ausdrücke Syntax von Lambda-Ausdrücken Methodenreferenzen PRO2 I Folie 6 Hochschule für Technik Stuttgart Beispiel PRO2 I Folie 7 Hochschule für Technik Stuttgart Beispiel Person.java Natürliche Ordnung Statische Methode, die ein Objekt liefert, welches zu einer die Schnittstelle Comparator implementierenden „anonymen inneren Klasse“ gehört. PersonenComparatorByGroesse.java PRO2 I Folie 8 Hochschule für Technik Stuttgart Beispiel: Comparator (bis Java 7) ⚫ Die Klasse Comparator enthält genau eine Methode: ⚫ Es fehlen Erweiterungen, die explizit programmiert werden müssen: ⚫ Verbinden von Comparator-Objekten (z.B. Vergleich erst gemäß Nachname, dann gemäß Vorname) ⚫ Invertieren eines Comparator-Objekts (Umdrehen der Sortierreihenfolge) ⚫ Vergleich anhand eines im Objekt (des Parametertyps T) enthaltenen Feldes PRO2 I Folie 9 Hochschule für Technik Stuttgart Beispiel: Comparator (ab Java 8) Die Schnittstelle Comparator enthält 9 static und 7 default Methoden (hier ein Auszug): public interface Comparator { abstract int compare(T a, T b); default Comparator thenComparing (Comparator

Use Quizgecko on...
Browser
Browser