Aufgaben-Python/01_einstieg_klassen/README.md

99 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Kapitel 01: Die erste Klasse – Was sind Klassen & Objekte? 🐶🐱
Herzlich willkommen in der Welt der objektorientierten Programmierung (kurz: **OOP**)!
Bisher hast du in Python mit Variablen, Listen, Dictionaries und Funktionen gearbeitet. Das hat super funktioniert! Doch wenn Programme größer werden, wird es schnell unübersichtlich.
Mit **Klassen** lernst du jetzt, wie du deine eigenen, maßgeschneiderten Datentypen erstellst.
---
## 🏗️ Die wichtigste Analogie: Bauplan vs. Objekt
Stell dir vor, du bist Architektin oder Bäckermeisterin:
- Eine **Klasse** ist wie ein **Bauplan** für ein Haus (oder eine **Plätzchen-Ausstechform**). Der Bauplan selbst ist noch kein Haus, in dem man wohnen kann. Er beschreibt nur: *Wie sieht ein Haus aus? Welche Eigenschaften hat es?*
- Ein **Objekt** (auch **Instanz** genannt) ist das **echte Haus**, das nach diesem Bauplan gebaut wurde (oder das gebackene Plätzchen). Aus *einem* Bauplan kannst du beliebig viele verschiedene Häuser bauen!
```
[ KLASSE / BAUPLAN ]
class Haustier:
│
─────────┴─────────
│ │
[ OBJEKT 1 ] [ OBJEKT 2 ]
Bello, Hund, 3 Mimi, Katze, 5
```
---
## 🔍 Warum nicht einfach Dictionaries?
Bisher hättest du Tiere vielleicht so gespeichert:
```python
tier1 = {"name": "Bello", "tierart": "Hund", "alter": 3}
tier2 = {"name": "Mimi", "art": "Katze", "alter": 5} # Ups! Hier heißt der Key "art" statt "tierart"!
```
Beim Dictionary kann man sich schnell bei Schlüsseln vertippen. Eine Klasse gibt uns eine feste Struktur vor.
---
## 🌟 Vollständiges Praxisbeispiel: Der Fahrrad-Verleih
Hier siehst du ein komplettes, funktionierendes Beispiel:
```python
# 1. Bauplan definieren:
class Fahrrad:
pass
# 2. Hilfsfunktion, die mit Fahrrad-Objekten arbeitet:
def fahrrad_info(bike):
return f"{bike.marke} ({bike.farbe}) - {bike.gaenge} Gänge - {bike.preis_pro_tag}€/Tag"
# 3. Zwei konkrete Fahrräder (Objekte) erstellen:
mountainbike = Fahrrad()
mountainbike.marke = "Cube"
mountainbike.farbe = "Schwarz/Grün"
mountainbike.gaenge = 21
mountainbike.preis_pro_tag = 25.0
citybike = Fahrrad()
citybike.marke = "Gazelle"
citybike.farbe = "Himmelblau"
citybike.gaenge = 7
citybike.preis_pro_tag = 15.0
# 4. Ausgabe:
print("Rad 1:", fahrrad_info(mountainbike))
print("Rad 2:", fahrrad_info(citybike))
```
---
## ⚠️ Häufige Stolperfallen für Einsteiger
1. **Klammern beim Erstellen nicht vergessen:**
- `bello = Haustier()` erzeugt ein neues Objekt.
- `bello = Haustier` (ohne Klammern) würde die Klasse selbst speichern, kein neues Objekt erzeugen!
2. **Groß- und Kleinschreibung:**
- Klassen werden per Konvention in **CamelCase** mit großem Anfangsbuchstaben geschrieben: `class Haustier:`, `class Fahrrad:`.
- Variablen und Funktionen schreibt man klein: `mein_tier`, `fahrrad_info()`.
3. **`return` in Funktionen nicht vergessen:**
- Wenn deine Funktion ein neu gebautes Haustier erzeugen soll, muss am Ende `return tier` stehen, sonst gibt die Funktion `None` zurück.
---
## 🎯 Deine Aufgaben in `aufgabe.py`
Öffne die Datei `aufgabe.py` und bearbeite die nummerierten TODOs:
1. **TODO 1:** Definiere die leere Klasse `Haustier`.
2. **TODO 2:** Schreibe die Funktion `erstelle_bello()`.
3. **TODO 3:** Schreibe die Funktion `erstelle_mimi()`.
4. **TODO 4:** Schreibe die Funktion `steckbrief_text(haustier)`.
5. **TODO 5:** Schreibe die Funktion `aelteres_tier(tier1, tier2)`.
### Testen:
```bash
python3 test_aufgabe.py
```
Sobald alle Tests mit `OK` durchlaufen, bist du bereit für Kapitel 02!