From bf27079e249745754207bf45d2dd0fd8707acbc8 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Wed, 28 Aug 2024 00:27:46 +0200 Subject: [PATCH] Lambda --- Programmierung2/src/Lambda/Lambda.java | 31 ++++++++++++++++ Programmierung2/src/Lambda/Test.java | 35 +++++++++++++++++++ .../oop/ExceptionHandling/MyException.java | 27 ++++++++++++++ .../src/Übungen/MeinAltesSpiel/Test.java | 1 - 4 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 Programmierung2/src/Lambda/Lambda.java create mode 100644 Programmierung2/src/Lambda/Test.java create mode 100644 Programmierung2/src/oop/ExceptionHandling/MyException.java diff --git a/Programmierung2/src/Lambda/Lambda.java b/Programmierung2/src/Lambda/Lambda.java new file mode 100644 index 0000000..f57083e --- /dev/null +++ b/Programmierung2/src/Lambda/Lambda.java @@ -0,0 +1,31 @@ +package Lambda; + +public interface Lambda { + // Lambda-Ausdruck: Kurzform für anonyme Klassenimplementierung + // - Wird verwendet, um Methoden schnell zu überschreiben + // - Syntax: (Parameter) -> { Methodenkörper; } + + // - wenn die methode nur einen Parameter hat, können die Klammern weglassen werden + + // Funktionale Schnittstelle: Eine Schnittstelle, die genau eine abstrakte Methode enthält + // - Lambdas können nur mit funktionalen Schnittstellen verwendet werden + // - Beispiel: Runnable (enthält nur die Methode run()) + + // Beispiel für eine funktionale Schnittstelle mit Lambda: + Runnable task = () -> System.out.println("Task läuft"); + + // Typ-Inferenz: Der Compiler kann oft den Typ der Parameter und Rückgabewerte aus dem Kontext ableiten + // - Beispiel: (int x) -> x * 2 kann auch als x -> x * 2 geschrieben werden + + // Mögliche Fehlerquellen: + // - Lambda-Ausdrücke können nur mit Schnittstellen verwendet werden, die genau eine abstrakte Methode haben + // - Typische Probleme sind Mehrdeutigkeit bei der Typ-Inferenz und Schwierigkeiten bei der Fehlersuche in komplexen Lambdas + + public void tueetwas(String name); + + //public void x(int x); + /* + * in andere Klasse + * x -> x * 2 + */ +} diff --git a/Programmierung2/src/Lambda/Test.java b/Programmierung2/src/Lambda/Test.java new file mode 100644 index 0000000..d719017 --- /dev/null +++ b/Programmierung2/src/Lambda/Test.java @@ -0,0 +1,35 @@ +package Lambda; + +public class Test { + + public static void main(String[] args) { + Lambda normal = new Lambda() { + @Override + public void tueetwas(String name) { + System.out.println(name + " Hallo Welt"); + } + }; + normal.tueetwas("Obai sagt: "); + + /* + * lambd Prinzip verweden: + * - () = Parameter der Methode + * - -> die implementierung der Methode + */ + //ohne klammern + //da nur ein parameter, können klammern weglassen werden + Lambda lambda = name -> System.out.println(name + " Hallo Lambda3213"); + lambda.tueetwas("Obai sagt: "); + + + // mit klammern + Lambda lambda2 = name -> { + + System.out.println("Hallo Lambda1"); + System.out.println("Hallo Lambda2"); + }; + lambda2.tueetwas("Obai sagt: "); + + + } +} diff --git a/Programmierung2/src/oop/ExceptionHandling/MyException.java b/Programmierung2/src/oop/ExceptionHandling/MyException.java new file mode 100644 index 0000000..676194c --- /dev/null +++ b/Programmierung2/src/oop/ExceptionHandling/MyException.java @@ -0,0 +1,27 @@ +package oop.ExceptionHandling; + +public class MyException extends RuntimeException { + // extends RuntimeException ist unchecked, also benötigt man kein throws + // extend Exception int checke, also benötigt man throws in der methode + // z.b public static void num ( int number) throws MyException + MyException(String message){ + super(message); + } + + public static void num ( int number) { + if (number <= 0) { + MyException ae = new MyException("Die zahl soll großer als 0"); + throw ae; + } + } + + public static void main(String[] args) { + try { + num(-1); + + }catch(MyException ae) { + System.out.println(ae); + ae.printStackTrace(); + } + } +} diff --git a/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java b/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java index 554ba9f..baac377 100644 --- a/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java +++ b/Programmierung2/src/Übungen/MeinAltesSpiel/Test.java @@ -8,7 +8,6 @@ public class Test { View view = new View(); Controller c1 = new Controller(obai, omar, view); c1.setKarten(); - c1.setfigurenkarten(); while(true) { c1.werfeEineKarte(obai); c1.werfeEineKarte(omar);