groovy-lecture/live/recap.md

91 lines
2.1 KiB
Markdown
Raw Normal View History

2024-06-07 22:06:00 +02:00
# 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<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:
```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}");
```