Kursübersicht
oop-2026
Aktivität
Bitte Aktivität wählen
In diesem Kurs wurde keine H5P-Aktivität gefunden.
Programmierparadigmen
Ein Programmierparadigma ist eine grundlegende Sicht darauf, wie ein Problem beschrieben und gelöst wird. Python legt uns nicht auf ein Paradigma fest. Wir können verschiedene Denkweisen kombinieren und für jeden Programmteil passend auswählen.
Voraussetzungen und Lernziel
Du solltest Funktionen, Listen, Tupel, Schleifen und Bedingungen kennen. Die Klasse im miniworlds-Beispiel dient zunächst nur als Rahmen; Klassen und Objekte werden anschließend systematisch eingeführt. Nach diesem Kapitel kannst du erklären, worauf imperative, funktionale und ereignisgesteuerte Programme ihren Schwerpunkt legen. Ein Programm kann dabei Merkmale mehrerer Paradigmen haben.
Imperativ: Welche Schritte werden ausgeführt?
Imperative Programme verändern einen Zustand durch eine Folge von Anweisungen. Schleifen, Zuweisungen und Verzweigungen stehen im Vordergrund.
x = 0
for schritt in [10, 20, -5]:
x = x + schritt
print(x)
Auch ein klassisches Turtle-Programm ist meist imperativ: `forward(50)`, dann `left(90)`, dann wieder `forward(50)`.
Funktional: Welche Werte werden aus anderen Werten berechnet?
Funktionale Programme zerlegen eine Lösung in Funktionen und bevorzugen unveränderliche Werte. **Reine Funktionen** verändern nichts außerhalb der Funktion und liefern für dieselben Argumente immer dasselbe Ergebnis. Diese Eigenschaft heißt referenzielle Transparenz: Ein Funktionsaufruf kann gedanklich durch sein Ergebnis ersetzt werden, ohne das Programmverhalten zu ändern.
def bewege(position, schritt):
x, y = position
dx, dy = schritt
return (x + dx, y + dy)
neue_position = bewege((0, 0), (10, 5))Ereignisgesteuert: Was soll bei einem Ereignis passieren?
Bei grafischen Oberflächen und Spielen bestimmt nicht das Programm allein die Reihenfolge. Tastendrücke, Mausklicks oder Kollisionen lösen passende Handler aus. Ein miniworlds-Actor reagiert beispielsweise in `on_key_down_right()` auf einen Tastendruck.
class Spieler:
def on_key_down_right(self):
self.x = self.x + 10
Objektorientierung ist ein weiteres Paradigma. Es organisiert Zustand und Verhalten in zusammenarbeitenden Objekten und bildet den Schwerpunkt der folgenden Kapitel. Die Kategorien schließen sich nicht aus: Eine ereignisgesteuerte Methode eines Objekts kann eine reine Funktion aufrufen und deren Ergebnis anschließend imperativ im Objekt speichern.
Funktionale Programmierung
Funktionale Programmierung betrachtet Funktionen als Bausteine, die Werte in neue Werte umwandeln. Das ist besonders nützlich für Datenverarbeitung, Simulationen und klar testbare Spiellogik.
Vorausgesetzt werden Funktionen, Listen, Tupel und Dictionaries. Wichtig ist nicht nur die Schreibweise mit `map`, `filter` und `reduce`, sondern die Denkweise dahinter: Daten fließen durch kleine Funktionen, Seiteneffekte werden begrenzt und vorhandene Eingabedaten möglichst nicht verändert.
In diesem Kapitel entsteht schrittweise eine Verarbeitungskette:
Actor-Daten → auswählen (filter) → umwandeln (map) → zusammenfassen (reduce)