groovy-lecture/live/recap.md

2.1 KiB

Zusammenfassung:

Gegeben sei folgender Java-Code:

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<Person> 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:

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}");