it-praxisportal/lehrpfad_2_oop_einstieg/01_einstieg_klassen/README.md

3.6 KiB
Raw Permalink Blame History

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:

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:

# 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:

python3 test_aufgabe.py

Sobald alle Tests mit OK durchlaufen, bist du bereit für Kapitel 02!