====== LU05.A12 - Wissenstransfer zu Java und JavaScript ====== Transferieren Sie Ihre Kenntnisse der in LU05 erarbeiteten Python-Features in die Programmiersprachen Java und/oder JavaScript. ===== Aufgabenstellung ===== Ihr Ziel ist es, die in LU05 erarbeiteten Konzepte (Verwendung von ''*args'' und ''%%**%%kwargs'', innere und äußere Funktionen, Closures, Decorators) in einer anderen Programmiersprache (Java oder JavaScript) anzuwenden. - Wählen Sie mindestens drei der in LU05 behandelten Konzepte aus. - Implementieren Sie diese Konzepte in Java und/oder JavaScript. - Vergleichen Sie die Implementierung mit der Python-Version und dokumentieren Sie etwaige Unterschiede und Ähnlichkeiten. ==== Java-Beispiele ==== **Variadic Functions (Äquivalent zu *args in Python)**: public static void printNumbers(int... numbers) { for (int number : numbers) { System.out.print(number + " "); } } **Innere Klassen (Äquivalent zu inneren Funktionen in Python)**: public class OuterClass { class InnerClass { // ... } } **Annotations (Äquivalent zu Decorators in Python)**: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyDecorator { String value(); } public class MyClass { @MyDecorator("Hello, world!") public void myMethod() { // ... } } ==== JavaScript-Beispiele ==== **Rest Parameters (Äquivalent zu *args in Python)**: function printNumbers(...numbers) { console.log(numbers); } **Closures**: function outer() { let x = 10; function inner() { console.log(x); } return inner; } **Function Decorators**: function decorator(func) { return function() { console.log("Before"); func(); console.log("After"); } } ===== Vorgehen ===== - Implementieren Sie ihre ausgewählten Konzepte in Java und/oder JavaScript - Dokumentieren Sie Ihre Implementierung und die Unterschiede zur Python-Version ===== Abgabe ===== Die Abgabe der Lösung erfolgt als PDF-Abgabe auf Moodle ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi