lab-development-imb/web/07/labor/07_aufgaben.md

88 lines
2.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# Ü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 add "Titel" "Autor"
```
→ Fügt ein neues Buch zur Sammlung hinzu.
2. **Bücher auflisten**
```bash
go run main.go list
```
→ Zeigt alle Bücher mit ID, Titel, Autor und Lesestatus.
3. **Buch als gelesen markieren**
```bash
go run main.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