{ "title": "Entwurfsmuster", "questions": [ { "category": "Grundlagen", "hint": "Zweck von Entwurfsmustern.", "text": "Was ist ein Entwurfsmuster?", "answers": [ "Eine bewährte, wiederverwendbare Lösungsschablone für ein häufiges Entwurfsproblem.", "Eine fertige Code-Bibliothek, die direkt eingebunden wird.", "Ein Werkzeug zur automatischen Codegenerierung aus UML-Diagrammen." ], "correct": 0, "explanation": "Ein Entwurfsmuster beschreibt eine Struktur und ihr Zusammenspiel – es ist kein fertiger Code, sondern eine Schablone." }, { "category": "Singleton", "hint": "Genau eine Instanz.", "text": "Welches Merkmal gehört zwingend zum Singleton-Muster?", "answers": [ "Ein öffentlicher Konstruktor, damit jede Klasse Instanzen erzeugen kann.", "Ein privater Konstruktor und eine statische Zugriffsmethode auf die einzige Instanz.", "Eine Liste von Beobachtern, die bei Änderungen benachrichtigt werden." ], "correct": 1, "explanation": "Der private Konstruktor verhindert Fremd-Instanziierung; getInstance() liefert immer dieselbe Instanz." }, { "category": "Factory", "hint": "Objekterzeugung kapseln.", "text": "Welches Problem löst die Fabrikmethode (Factory)?", "answers": [ "Sie sorgt dafür, dass Objekte automatisch gelöscht werden.", "Sie verschlüsselt die Kommunikation zwischen Objekten.", "Sie kapselt die Objekterzeugung, sodass der Client nur das Interface kennt." ], "correct": 2, "explanation": "Die Fabrik entscheidet, welche konkrete Klasse instanziiert wird – neue Varianten erfordern keine Änderung im Client-Code." }, { "category": "Observer", "hint": "1:n-Abhängigkeit.", "text": "Wann ist das Observer-Muster die richtige Wahl?", "answers": [ "Wenn mehrere Objekte automatisch über Zustandsänderungen eines Objekts informiert werden sollen.", "Wenn von einer Klasse nur eine einzige Instanz existieren darf.", "Wenn die Erzeugung von Objekten zentralisiert werden soll." ], "correct": 0, "explanation": "Das Subjekt benachrichtigt alle angemeldeten Beobachter – lose gekoppelt über ein gemeinsames Interface." }, { "category": "MVC", "hint": "Drei Verantwortlichkeiten.", "text": "Welche Aufgabe hat der Controller im MVC-Muster?", "answers": [ "Er speichert die Daten und enthält die Geschäftslogik.", "Er nimmt Benutzereingaben entgegen, ruft das Model auf und wählt die View.", "Er stellt die Daten grafisch für den Benutzer dar." ], "correct": 1, "explanation": "Model = Daten/Logik, View = Darstellung, Controller = Vermittler zwischen Eingabe, Model und View." }, { "category": "MVC", "hint": "Vorteile der Trennung.", "text": "Welcher Vorteil ergibt sich direkt aus der MVC-Trennung?", "answers": [ "Die Anwendung benötigt keine Datenbank mehr.", "Der Quellcode wird automatisch schneller ausgeführt.", "Oberfläche und Logik sind getrennt test- und austauschbar." ], "correct": 2, "explanation": "Durch die Trennung der Schichten lassen sich Views austauschen und Model-Logik isoliert testen." } ] }