forked from WEB-IMB-WS2526/lab-development-imb
88 lines
2.9 KiB
Markdown
88 lines
2.9 KiB
Markdown
# Übungsblatt 07
|
||
|
||
### Hinweise:
|
||
- Aufgabe 1: Keine Abgabe erforderlich
|
||
- Aufgabe 2 + 3: Abgabe erforderlich
|
||
|
||
Im Normalfall ist **immer** eine Abgabe erforderlich, es sei denn es gibt einen expliziten Hinweis!
|
||
|
||
## 1. Go-Übung: Grundlagen
|
||
|
||
_Keine Abgabe erforderlich_
|
||
|
||
**Aufgabenstellung**: Machen Sie sich mit den Grundlagen der Programmiersprache vertraut.
|
||
|
||
#### Arbeitsschritte
|
||
|
||
1. Besuchen Sie die Webseite [Go by Example](https://gobyexample.com): **Go by Example** ist eine Einführung in Go anhand kommentierter Beispielprogramme.
|
||
2. Arbeiten Sie die Liste der Beispiele nacheinander durch. Folgende Themen werden (mindestens) empfohlen:
|
||
- Hello World
|
||
- Values
|
||
- Variables
|
||
- For
|
||
- If/Else
|
||
- Switch
|
||
- Arrays
|
||
- Slices
|
||
- Maps
|
||
- Functions
|
||
- Multiple Return Values
|
||
- Closures
|
||
- Range over Built-in Types
|
||
- Pointers
|
||
- Structs
|
||
- Methods
|
||
- Interfaces
|
||
- Enums
|
||
- Errors
|
||
|
||
## 2. Go-Übung: Kommandozeilenprogramm
|
||
|
||
**Aufgabenstellung**: Entwickeln Sie ein Kommandozeilenprogramm in Go, mit dem Nutzer:innen ihre persönliche Büchersammlung verwalten können.
|
||
|
||
_Tipp: Schauen Sie sich vorher das Demo-Programm "taskmanager" an._
|
||
|
||
#### Arbeitsschritte
|
||
|
||
Implementieren Sie ein Programm mit folgenden Funktionen:
|
||
|
||
1. **Buch hinzufügen**
|
||
```bash
|
||
go run main.go book.go add "Titel" "Autor"
|
||
```
|
||
→ Fügt ein neues Buch zur Sammlung hinzu.
|
||
|
||
2. **Bücher auflisten**
|
||
```bash
|
||
go run main.go book.go list
|
||
```
|
||
→ Zeigt alle Bücher mit ID, Titel, Autor und Lesestatus.
|
||
|
||
3. **Buch als gelesen markieren**
|
||
```bash
|
||
go run main.go book.go read <ID>
|
||
```
|
||
→ Markiert das Buch mit der angegebenen ID als gelesen.
|
||
|
||
4. **Persistenz**
|
||
- Die Bücher sollen in einer Datei `books.json` gespeichert und beim Programmstart wieder geladen werden.
|
||
- Verwenden Sie dafür das `encoding/json`-Paket und `os.ReadFile` / `os.WriteFile`.
|
||
|
||
### Hinweise
|
||
|
||
- Verwenden Sie `struct` für die Buch- und Bibliotheksdaten.
|
||
- Arbeiten Sie mit `slice` zur Verwaltung der Bücherliste.
|
||
- Nutzen Sie Methoden zur Kapselung von Logik (z. B. `Add`, `MarkRead`, `Save`).
|
||
- Behandeln Sie Fehler sinnvoll und benutzerfreundlich.
|
||
- Strukturieren Sie Ihr Projekt in mindestens zwei Dateien (`main.go`, `book.go`).
|
||
|
||
## 3. Go-Übung: Formulardaten empfangen
|
||
|
||
**Aufgabenstellung**: Erstellen Sie ein Webserver-Programm in Go, das auf `localhost:8080` Anfragen entgegennimmt.
|
||
|
||
- Der Endpunkt nimmt die Formulardaten der Workshop-Anmeldung aus Übungsblatt 04 entgegen und gibt sie als Response zurück.
|
||
- Nutzen Sie dazu gerne die zuvor von Ihnen in Übungsblatt 06 definierte SWAGGER-Schnittstelle.
|
||
- Es sollen nur `POST`-Request erlaubt sein. Falls eine andere Methode verwendet wurde, soll der Status-Code 405 (Method not allowed) zurückgegeben werden.
|
||
- Testen Sie Ihren Endpunkt mit Ihrem HTML-Formular.
|
||
- Denken Sie daran sowohl in Ihrer SWAGGER-Schnittstelle als auch in Ihrem HTML-Formular den Endpunkt auf localhost:8080 abzuändern
|