Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m323:learningunits:lu02:aufgaben:dataclass1 [2024/08/28 09:46] – kmaurizi | modul:m323:learningunits:lu02:aufgaben:dataclass1 [2024/08/28 11:39] (aktuell) – kmaurizi | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
==== Aufgabenstellung ==== | ==== 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 '' | - Definieren Sie eine '' | ||
Zeile 13: | Zeile 15: | ||
- Nutzen Sie die Funktionen, um mehrere Änderungen an einer Instanz von '' | - Nutzen Sie die Funktionen, um mehrere Änderungen an einer Instanz von '' | ||
- | ==== Code Vorlage ==== | ||
- | |||
- | <code python> | ||
- | from dataclasses import dataclass, field | ||
- | from typing import List | ||
- | |||
- | @dataclass(frozen=True) | ||
- | class Car: | ||
- | brand: str | ||
- | mileage: int | ||
- | service_dates: | ||
- | |||
- | def add_mileage(car: | ||
- | """ | ||
- | Returns a new Car instance with updated mileage and possibly an updated service date. | ||
- | """ | ||
- | new_mileage = car.mileage + distance | ||
- | new_service_dates = car.service_dates[: | ||
- | | ||
- | if new_mileage > 10000 and (car.mileage <= 10000): | ||
- | new_service_dates.append(' | ||
- | | ||
- | return Car(brand=car.brand, | ||
- | |||
- | def check_service(car: | ||
- | """ | ||
- | Checks if the car's mileage exceeds 10,000 km. | ||
- | """ | ||
- | return car.mileage > 10000 | ||
- | |||
- | if __name__ == ' | ||
- | my_car = Car(brand=' | ||
- | print(f' | ||
- | | ||
- | my_car = add_mileage(my_car, | ||
- | print(f' | ||
- | | ||
- | if check_service(my_car): | ||
- | print(' | ||
- | |||
- | my_car = add_mileage(my_car, | ||
- | print(f' | ||
- | print(f' | ||
- | </ | ||
==== Schritt für Schritt ==== | ==== Schritt für Schritt ==== | ||
- | - Definieren Sie die immutable Dataclass '' | + | - Definieren Sie die immutable Dataclass '' |
- | - Implementieren Sie die Funktion '' | + | - Implementieren Sie die Funktion '' |
- Implementieren Sie die Funktion '' | - Implementieren Sie die Funktion '' | ||
- Führen Sie mehrere Funktionsaufrufe durch, um die Änderungen zu testen und die Liste der Service-Daten zu überprüfen. | - Führen Sie mehrere Funktionsaufrufe durch, um die Änderungen zu testen und die Liste der Service-Daten zu überprüfen. | ||
+ | ---- | ||
+ | < | ||
+ | [[https:// |