Zum Inhalt springen
Informatik · Klasse 12 · Objektorientierte Modellierung und Software-Engineering · 1. Halbjahr

Entwurfsmuster: Strategy und Observer

Die Schülerinnen und Schüler implementieren die Entwurfsmuster Strategy und Observer, um flexible und erweiterbare Verhaltensweisen zu realisieren.

KMK BildungsstandardsKMK: Sekundarstufe II - Modellieren und ImplementierenKMK: Sekundarstufe II - Problemlösen und Handeln

Über dieses Thema

Die Entwurfsmuster Strategy und Observer ermöglichen flexible und wartbare Softwarearchitekturen in der objektorientierten Programmierung. Beim Strategy-Muster kapseln Schülerinnen und Schüler unterschiedliche Algorithmen in separaten Klassen, die zur Laufzeit ausgetauscht werden können. Dies reduziert bedingte Anweisungen und fördert die Kompositionsprinzipien nach dem Open-Closed-Prinzip. Das Observer-Muster realisiert eine lose Kopplung: Ein Subject benachrichtigt mehrere Observer bei Änderungen, ideal für ereignisgesteuerte Systeme wie GUIs oder Datenaktualisierungen.

Im Kontext der KMK-Standards zu Modellieren und Implementieren sowie Problemlösen lernen Schülerinnen und Schüler, Situationen zu erkennen, in denen diese Muster Komplexität mindern. Sie analysieren Szenarien, konstruieren Lösungen und reflektieren Alternativen wie verschachtelte if-else-Strukturen. Dies stärkt systemisches Denken und praktische Software-Engineering-Fähigkeiten für reale Projekte.

Aktives Lernen eignet sich hervorragend, da abstrakte Muster durch Implementierung und Refactoring greifbar werden. Schülerinnen und Schüler experimentieren in Code-Beispielen, testen Varianten und diskutieren Verbesserungen, was tieferes Verständnis schafft und Fehler früh aufdeckt.

Leitfragen

  1. Wie erkennt man Situationen, in denen ein spezifisches Muster wie Strategy die Komplexität reduziert?
  2. Erklären Sie, wie das Observer-Muster die lose Kopplung zwischen Objekten fördert.
  3. Konstruieren Sie ein Szenario, in dem das Strategy-Muster eine bessere Lösung bietet als bedingte Anweisungen.

Lernziele

  • Analysieren Sie Code-Beispiele, um die Struktur und den Zweck des Strategy-Musters zu identifizieren.
  • Erklären Sie die Vorteile des Observer-Musters hinsichtlich der losen Kopplung anhand eines GUI-Simulationsszenarios.
  • Implementieren Sie das Strategy-Muster zur dynamischen Anpassung des Verhaltens einer Anwendung in einer gegebenen Programmieraufgabe.
  • Entwerfen Sie eine einfache Anwendung, die das Observer-Muster zur Benachrichtigung mehrerer Komponenten über Zustandsänderungen nutzt.
  • Vergleichen Sie die Komplexität einer Lösung mit verschachtelten bedingten Anweisungen mit einer Strategy-Muster-Implementierung für dieselbe Funktionalität.

Bevor es losgeht

Grundlagen der objektorientierten Programmierung (Klasse 11)

Warum: Schüler müssen Klassen, Objekte, Vererbung und Polymorphie verstehen, um Entwurfsmuster korrekt anwenden zu können.

Kontrollstrukturen (if-else, Schleifen)

Warum: Ein grundlegendes Verständnis von bedingten Anweisungen ist notwendig, um die Vorteile der Muster zur Reduzierung von Komplexität zu erkennen und zu schätzen.

Schnittstellen und abstrakte Klassen

Warum: Die Implementierung von Entwurfsmustern nutzt häufig Schnittstellen oder abstrakte Klassen zur Definition gemeinsamer Verträge, was ein Verständnis dieser Konzepte erfordert.

Schlüsselvokabular

Strategy-MusterEin Entwurfsmuster, das es ermöglicht, eine Familie von Algorithmen zu definieren, jeden Algorithmus in eine separate Klasse zu kapseln und ihre Objekte austauschbar zu machen.
Observer-MusterEin Entwurfsmuster, das eine Eins-zu-viele-Abhängigkeit zwischen Objekten definiert, sodass, wenn sich ein Objekt ändert, alle seine Abhängigen automatisch benachrichtigt und aktualisiert werden.
Lose KopplungEin Designprinzip, bei dem Komponenten eines Systems so wenig wie möglich voneinander abhängig sind, was Änderungen an einer Komponente erleichtert, ohne andere zu beeinträchtigen.
Kontext (Strategy)Die Klasse, die eine Referenz auf ein Strategy-Objekt hält und die Strategie zur Laufzeit auswählt oder ändert.
Subjekt (Observer)Das Objekt, das den Zustand verwaltet und die Observer über Änderungen informiert.
AbstraktionDie Darstellung wesentlicher Merkmale eines Objekts oder Systems, die die Komplexität verbirgt und die Handhabung vereinfacht.

Vorsicht vor diesen Fehlvorstellungen

Häufige FehlvorstellungStrategy ist nur für Sortieralgorithmen geeignet.

Was Sie stattdessen lehren sollten

Strategy eignet sich für jedes austauschbare Verhalten, z.B. Zahlungsmethoden. Durch aktive Implementierung in Paaren testen Schülerinnen und Schüler Vielfalt und entdecken Redundanzen in conditionals.

Häufige FehlvorstellungObserver erfordert enge Kopplung zwischen Subject und Observers.

Was Sie stattdessen lehren sollten

Observer fördert lose Kopplung durch Interfaces. Gruppenexperimente mit attach/detach zeigen dies: Änderungen am Subject wirken ohne Kenntnis der Observer. Diskussionen klären Abhängigkeiten.

Häufige FehlvorstellungBeide Muster erhöhen den Codeumfang unnötig.

Was Sie stattdessen lehren sollten

Sie reduzieren Duplikate langfristig. Refactoring-Aktivitäten im Plenum machen Wartbarkeit messbar und überzeugen von Vorteilen.

Ideen für aktives Lernen

Alle Aktivitäten ansehen

Bezüge zur Lebenswelt

  • In der Finanzbranche nutzen Handelsplattformen das Observer-Muster, um Händler (Observer) automatisch über Preisänderungen von Aktien (Subjekt) zu informieren, was schnelle Reaktionen auf Marktereignisse ermöglicht.
  • Spieleentwickler verwenden das Strategy-Muster, um verschiedene KI-Verhaltensweisen für Charaktere zu implementieren. Ein Charakter kann beispielsweise je nach Situation zwischen 'aggressiv', 'defensiv' oder 'fliehend' wechseln, ohne dass die Hauptspiellogik angepasst werden muss.
  • E-Commerce-Websites nutzen das Observer-Muster für Benachrichtigungen. Wenn sich der Lagerbestand eines Produkts ändert (Subjekt), werden alle interessierten Kunden (Observer) per E-Mail oder In-App-Nachricht informiert.

Ideen zur Lernstandserhebung

Lernstandskontrolle

Geben Sie den Schülern ein kleines Code-Snippet, das eine Reihe von if-else-Anweisungen zur Auswahl eines Algorithmus enthält. Bitten Sie sie, eine kurze Erklärung zu schreiben, wie das Strategy-Muster diese Struktur vereinfachen würde und welche Vorteile dies bringt.

Kurze Überprüfung

Stellen Sie den Schülern die folgende Frage: 'Stellen Sie sich ein Wetter-App-Dashboard vor, das verschiedene Wetterdaten anzeigt. Erklären Sie, wie das Observer-Muster helfen würde, die Anzeige zu aktualisieren, wenn neue Wetterdaten vom Server eintreffen. Nennen Sie das Subjekt und mindestens zwei Observer.'

Diskussionsfrage

Diskutieren Sie in Kleingruppen: 'In welchen Situationen wäre die Verwendung des Observer-Musters übertrieben oder sogar nachteilig? Nennen Sie ein Szenario, in dem die direkte Kopplung oder eine einfachere Benachrichtigungslogik besser geeignet wäre, und begründen Sie Ihre Wahl.'

Häufig gestellte Fragen

Wann wendet man das Strategy-Muster an?
Strategy reduziert Komplexität, wenn mehrere Algorithmen oder Verhaltensweisen zur Laufzeit variieren, z.B. bei unterschiedlichen Suchstrategien. Es ersetzt lange if-else-Ketten durch Komposition. Schülerinnen und Schüler erkennen dies durch Analyse realer Szenarien und Refactoring-Übungen, die Flexibilität demonstrieren.
Wie funktioniert das Observer-Muster genau?
Ein Subject hält eine Liste von Observern und benachrichtigt sie bei Statusänderungen via notify(). Observer implementieren ein update()-Interface. Dies schafft lose Kopplung, da Observer unabhängig registriert werden können. Praktische Implementierungen in Gruppen verdeutlichen Event-Flüsse.
Wie kann aktives Lernen beim Verständnis von Strategy und Observer helfen?
Aktives Lernen macht Muster konkret: Durch Pair-Programming und Refactoring implementieren Schülerinnen und Schüler selbst, testen Varianten und messen Vorteile. Gruppenprojekte fördern Diskussionen über lose Kopplung, während Peer-Reviews Fehler aufdecken. Dies schafft bleibendes Verständnis statt passiver Theorie.
Warum sind Design Patterns besser als bedingte Anweisungen?
Patterns wie Strategy und Observer folgen SOLID-Prinzipien, erleichtern Erweiterbarkeit und Wartung. Bedingte Anweisungen skalieren schlecht bei neuen Varianten. Aktive Szenario-Konstruktion lässt Schülerinnen und Schüler den Unterschied erleben und begründen.

Planungsvorlagen für Informatik