# Zusammenfassung: Gegeben sei folgender Java-Code: ```Java import java.util.ArrayList; import java.util.List; class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString(){ return this.name + ", Alter: " + this.age; } } public class Main { public static void main(String[] args) { List personen = new ArrayList<>(); personen.add(new Person("Alice", 20)); personen.add(new Person("Bob", 18)); personen.add(new Person("Charlie", 30)); personen.add(new Person("David", 15)); personen.add(new Person("Eve", 21)); for (Person p : personen) { System.out.println(p); } int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; } System.out.println("Sum of numbers from 1 to 10: " + sum); } } ``` Der Code hat folgende Ausgabe: ``` Alice, Alter: 20 Bob, Alter: 18 Charlie, Alter: 30 David, Alter: 15 Eve, Alter: 21 Sum of numbers from 1 to 10: 55 ``` Wandeln sie den Java-Code so in Groovy-Code um, dass er die selbe Ausgabe erzeugt und folgende Groovy-Features benutzt: 1. String Interpolation 2. Ranges 3. Variablendefinition mit **def** 4. each-Schleifen und Closures 5. Dynamische Listen 6. for-in Schleifen 7. Objekterstellung mit Default-Konstruktoren Versuchen sie sich beim implementieren so kurz wie möglich zu halten. Ziel dieser Aufgabe ist es, das gelernte zu wiederholen und zu zeigen wie kompakt Groovy-Code im Vergleich zu Java-Code sein kann. #### Lösung: ```Groovy class Person{ def name def age def toString() { "${name}, Alter: ${age}" } } def personen = [new Person(name: "Alice", age: 20), new Person(name: "Bob", age: 18), new Person(name: "Charlie", age: 30), new Person(name: "David", age: 15), new Person(name: "Eve", age: 21)] personen.each{println it} def sum = 0 for (i in 1..10) { sum += i } println("Summe der Zahlen von 1-10: ${sum}"); ```