====== 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