LU02.A10 - Immutable Dataclass
Implementieren Sie eine Funktion, die eine neue Instanz einer Dataclass erstellt, anstatt die Originalinstanz zu verändern, und nutzen Sie dabei die Prinzipien der funktionalen Programmierung.
Aufgabenstellung
Im Rahmen der funktionalen Programmierung ist es von entscheidender Bedeutung, Datenstrukturen unveränderlich (immutable) zu gestalten. Indem wir immutable Dataclasses verwenden, vermeiden wir unbeabsichtigte Seiteneffekte und sorgen dafür, dass unsere Datenstrukturen nur durch explizite, kontrollierte Operationen verändert werden. In dieser Aufgabe werden Sie lernen, wie man eine Dataclass verwendet, um eine unveränderliche (immutable) Datenstruktur zu erstellen, und wie man diese im Kontext der funktionalen Programmierung manipuliert.
- Definieren Sie eine
@dataclass(frozen=True)
namensCar
mit den Attributenbrand (str)
,mileage (int)
undservice_dates (List[str])
. - Implementieren Sie eine Funktion
add_mileage(car: Car, distance: int) → Car
, die eine neue Instanz der DataclassCar
erstellt, mit einer aktualisiertenmileage
und einer neuen Service-Datum, wenn die Laufleistung über 10.000 km steigt.- Die neue Instanz soll das aktualisierte Datum in der Liste
service_dates
speichern. Das Datum kann dabei ein fester Wert wie2024-08-28
sein (für Testzwecke).
- Implementieren Sie eine zweite Funktion
check_service(car: Car) → bool
, die prüft, ob die Laufleistung über 10.000 km liegt und entsprechendTrue
oderFalse
zurückgibt. - Nutzen Sie die Funktionen, um mehrere Änderungen an einer Instanz von
Car
durchzuführen, und drucken Sie die Liste der Service-Daten am Ende aus.
Schritt für Schritt
- Definieren Sie die immutable Dataclass
Car
in einer separaten Dateicar.py
. - Implementieren Sie die Funktion
add_mileage
, die eine neue Instanz zurückgibt, wenn die Laufleistung aktualisiert wird, und fügt gegebenenfalls ein Service-Datum hinzu. - Implementieren Sie die Funktion
check_service
, die die Laufleistung überprüft. - Führen Sie mehrere Funktionsaufrufe durch, um die Änderungen zu testen und die Liste der Service-Daten zu überprüfen.