klausur- und liveübungsaufgaben

main
Yuliya Rudenko 2024-06-05 23:12:08 +02:00
parent dd26c0dd42
commit a9815399ad
4 changed files with 166 additions and 46 deletions

View File

@ -1,4 +1,6 @@
# Aufgabe 1
# Übungsaufgaben
## Aufgabe 1
### Aufgabenstellung:
@ -31,7 +33,8 @@ def person = new Person("Alice", 30)
person.introduce()
```
# Aufgabe 2
## Aufgabe 2
### Aufgabenstellung:
a) Erstelle eine Klasse Calculator, die Methoden für die Grundrechenoperationen
@ -101,7 +104,8 @@ println("Multiplication mit Closure: ${calc.performOperation(4, 6, multiplyClosu
println("Division mit Closure: ${calc.performOperation(12, 4, divideClosure)}")
```
# Aufgabe 3
## Aufgabe 3
### Aufgabenstellung
Erstellen Sie eine Klasse EmployeeManager, die die Verwaltung von Mitarbeitern
ermöglicht. Die Klasse soll folgende Funktionen bieten:
@ -176,46 +180,4 @@ manager.employees.each { println it }
println("\nHigh Earners:")
highEarners.each { println it }
```
## Klausuraufgaben
### 1. Was ist ein Default-Konstruktor?
Lösung
Groovy fügt automatisch einen Standardkonstruktor hinzu, wenn keine Konstruktoren explizit
definiert sind. Dieser Konstruktor initialisiert alle Eigenschaften der Klasse mit ihren
Standardwerten.
### 2. Folgende Klasse ist vorgegeben:
```
class Person {
String name
int age
}
```
### Initialisieren Sie eine Instanz der Klasse Person mit Attributen "John" und 25.
Lösung
```
Person person = new Person(name: "John", age: 20)
```
### 3. Was ist ein Mixin in Groovy und wie wird es verwendet?
Lösung
Ein Mixin ermöglicht das Hinzufügen von Funktionalität zu Klassen ohne Vererbung. Es wird mit
der @Mixin Annotation verwendet.
### 4. Wie iteriert man über eine Map in Groovy und was gibt die each Methode zurück? Beipiel?
Lösung
Man iteriert über eine Map mit der each Methode. Diese Methode gibt jedes Key-Value-Paar der
Map zurück.
```
def myMap = ['subject': 'groovy', 'topic': 'closures']
myMap.each { key, value -> println "$key: $value" }
```
``

Binary file not shown.

View File

@ -0,0 +1,60 @@
# Klausuraufgaben
### 1. Welche Ausgabe hat der Code?
```
class Person {
String name
int age
}
Person person = new Person()
println (person.name)
println (person.age)
```
Lösung
```
null
0
```
### 2. Initialisieren Sie eine Instanz der Klasse Person (s.unten) mit den Attributen "John" und 25, indem Sie eine Map verwenden.
```
class Person {
String name
int age
}
```
Lösung
```
Person person = new Person(name: "John", age: 20)
```
### 3. Was ist ein Mixin in Groovy und wie wird es verwendet?
Lösung
Ein Mixin ermöglicht das Hinzufügen von Funktionalität zu Klassen ohne Vererbung. Es wird mit
der @Mixin Annotation verwendet.
### 4. Schreibe eine Funktion makeMultiplier, die eine Zahl n als Argument nimmt und eine Closure zurückgibt, die eine Zahl mit n multipliziert.
```
def makeMultiplier(n) {
// TODO
}
def multiplierOf3 = makeMultiplier(3)
println(multiplierOf3(5)) // Erwartete Ausgabe: 15
```
Lösung
```
def makeMultiplier(n) {
return {it * n}
}
def multiplierOf3 = makeMultiplier(3)
println(multiplierOf3(5)) // Erwartete Ausgabe: 15
```

View File

@ -0,0 +1,98 @@
# Live-Übung
## Operatoren
### 1) Gegeben ist eine Liste von Strings:
```
def words = ["Groovy", "ist", "cool"]
```
Verwende den Spread-Operator *., um eine Liste der Längen dieser Strings zu erstellen.
Lösung
```
def words = ["Groovy", "ist", "cool"]
def lengths = words*.length()
println("Längen: $lengths") // Erwartete Ausgabe: Längen: [6, 3, 4]
```
### 2) Gegeben ist eine Liste von Zahlen:
```
def numbers = [1, 2, 3, 4, 5]
```
Verwende den Spread-Operator *., um eine Liste der Quadrate dieser Zahlen zu erstellen.
Lösung
```
def numbers = [1, 2, 3, 4, 5]
def squares = numbers*.multiply(numbers)
println("Quadrate: $squares") // Erwartete Ausgabe: Quadrate: [1, 4, 9, 16, 25]
```
## Schleifen und Bedingungen
Schreibe eine
a) while-Schleife
b) for-Schleife
, die die Fakultät einer gegebenen Zahl berechnet und ausgibt.
Lösung
a)
```
def zahl = 5
def ergebnis = 1
for (int i = 1; i <= zahl; i++) {
ergebnis *= i
}
println("Die Fakultät von $zahl ist: $ergebnis")
```
b)
```
def zahl = 5
def ergbenis = 1
def i = 1
while (i <= zahl) {
ergebnis *= i
i++
}
println("Die Fakultät von $zahl ist: $ergebnis")
```
## Closures
Schreibe eine Funktion makeCounter, die eine Closure zurückgibt, die jedes Mal, wenn sie aufgerufen wird, um 1 erhöht.
```
def makeCounter() {
//TODO
}
def counter = makeCounter()
println(counter()) // Erwartete Ausgabe: 1
println(counter()) // Erwartete Ausgabe: 2
println(counter()) // Erwartete Ausgabe: 3
```
Lösung
```
def makeCounter() {
def count = 0
return {++count}
}
def counter = makeCounter()
println(counter()) // Erwartete Ausgabe: 1
println(counter()) // Erwartete Ausgabe: 2
println(counter()) // Erwartete Ausgabe: 3
```