78 lines
3.3 KiB
JSON
78 lines
3.3 KiB
JSON
{
|
||
"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."
|
||
}
|
||
]
|
||
}
|