klausur- und liveübungsaufgaben
parent
dd26c0dd42
commit
a9815399ad
|
@ -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.
|
@ -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
|
||||
```
|
|
@ -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
|
||||
```
|
Loading…
Reference in New Issue