it-praxisportal/README.md

4.6 KiB

🐍 Python OOP Übungsreihe: Der Einstieg in Klassen & Objekte

Willkommen zu deiner Übungsreihe für Objektorientierte Programmierung (OOP) in Python! 🎉

Diese Übungsreihe ist didaktisch aufbereitet und 1:1 mit dem offiziellen Lehrplan des Informatik-Unterrichts (LEHRPLAN.md) abgeglichen.


🗺️ Der Lernpfad

🌱 Phase 1: Grundlagen OOP & Werkzeuge

Kapitel Thema Was du lernst
00. Fehlersuche & Grundlagen Warm-up & Debugging Tracebacks lesen, Einrückungen (IndentationError), Typfehler & Detektiv-Aufgabe
01. Einstieg in Klassen Warum Klassen? Bauplan vs. Objekt, Instanziierung, Punktnotation & Type Hints
02. Konstruktor & self __init__, self & UML Objekte sauber initialisieren und erste UML-Klassendiagramme
03. Methoden & Verhalten Methoden & Interaktion Objekte können handeln & miteinander im Duell interagieren
04. Schöne Textausgabe __str__ Dunder-Methode Wie Objekte lesbar mit print() ausgegeben werden (Warenkorb & Bon)
04b. Umstieg & Installation VS Code Exkurs: IDE-Wechsel Installation (Win/Mac/Linux), Plugins (Error Lens, Python), Shortcuts & Terminal
04c. Git & Versionskontrolle Exkurs: Git-Tooling Spielstände (Commits) sichern, VS Code Git-Tab, Terminal-Befehle & Remote Push
05. Objekte kombinieren Assoziation & Komposition Listen von Objekten & Spotify-Playlists filtern und berechnen
06. Abschlussprojekt OOP 1 Mini-Projekt: Tamagotchi Ein interaktives Konsolenspiel mit allem Gelernten

🧠 Phase 2: Fortgeschrittenes OOP, Testing & Persistenz

Kapitel Thema Was du lernst
07. Referenzen, Speicher & Stammbäume Speicher & RAM Referenzen, Aliasing (b = a), Mutable vs. Immutable, is vs. == & Familienstammbaum
08. Operator Overloading Dunder-Methoden __add__, __eq__, __lt__ (2D-Vektoren & Kartenspiele)
09. Eigene Unit Tests & TDD Softwarequalität Testsuiten schreiben mit unittest, assertEqual, assertTrue, assertRaises
10. Vererbung & super() Inheritance Basisklassen, Kindklassen & super().__init__() (Fahrzeuge & RPG-Helden)
11. Polymorphie & Interfaces Polymorphism Methoden überschreiben, Geometrie- & Grafik-Engine
12. Exceptions & Fehler Robustes Coding try/except/else/finally, raise, eigene Exception-Klassen
13. JSON & CSV Speichern Persistenz Spielstände dauerhaft mit JSON/CSV auf der Festplatte sichern

(Den vollständigen didaktischen Masterplan für alle Kapitel bis 16 findest du in LEHRPLAN.md.)


🧪 Wie benutze ich die automatischen Tests?

In jedem Kapitelordner liegt eine Datei namens test_aufgabe.py. Sie enthält automatische Unit Tests, die überprüfen, ob deine Lösung alle Anforderungen erfüllt.

1. Einzelnes Kapitel testen

Öffne das Terminal in VS Code (`Strg + ``) und führe den Test im jeweiligen Ordner aus:

# Beispiel für Kapitel 01:
cd 01_einstieg_klassen
python3 test_aufgabe.py

2. Testausgabe richtig lesen:

  • ✅ OK: Perfekt! Alle Tests sind grün und bestanden. Du kannst mit dem nächsten Kapitel weitermachen.
  • ❌ FAIL (AssertionError): Dein Code läuft, liefert aber einen falschen Wert zurück (z.B. Rechenfehler oder falsche Bedingung). Lies die letzte Zeile der Fehlermeldung!
  • 💥 ERROR (Syntax / AttributeError): Dein Code hat einen Absturz (z.B. Tippfehler im Methodennamen oder self im Methodenkopf vergessen).

3. Gesamten Fortschritt aller Kapitel prüfen:

Führe im Hauptordner folgenden Befehl aus:

python3 test_all.py

Dieser Befehl zeigt dir eine Übersicht über alle Kapitel mit ✅ (bestanden) und ⏳ (noch offen).


💡 3 Wichtige Regeln für die Aufgaben

  1. return statt print(): Tests prüfen das, was eine Methode mit return zurückliefert. Ein reines print() genügt dem Test nicht!
  2. Exakte Namen: Die Namen der Methoden und Attribute müssen exakt der Aufgabenstellung entsprechen (mutter_setzen, nicht MutterSetzen).
  3. Immer self als erster Methoden-Parameter: Jede Methode in einer Klasse muss def meine_methode(self, ...): geschrieben werden.