TU Wien:Programmierparadigmen VU (Puntigam)/PP Test 2 2025WS
Test 2 in Programmierparadigmen am 26.1.2026[Bearbeiten | Quelltext bearbeiten]
Aufgabe 1 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
und seien definiert durch und . Bitte markieren Sie jedes Auswahlfeld, bei dem der links stehende Typ ein Untertyp des darüber stehenden Typs ist. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
Aufgabe 2 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft der darüber stehenden Parametrisierungsform in Java oder AspectJ ist.
| Generizität | Annotationen | Aspekte | |
|---|---|---|---|
| Join-Points sind dynamisch identifizierbare Programmstellen | |||
| kann die Werkzeuge zur Programmerzeugung beeinflussen | |||
| "" steht für beliebige Zeichen außer "" (Punkt) | |||
| für binäre Methoden wird Rekursion benötigt | |||
| zur Laufzeit sind Daten über Reflexion zugreifbar | |||
| wird für Kernfunktionalität meist gemieden | |||
| Lücken werden durch spezielle Parameter dargestellt | |||
| ersetzt den spezifizierten Programmtext | |||
| mit @ wird die Lebensdauer festgelegt | |||
| Typschranken legen vorausgesetzte Funktionalität fest |
Aufgabe 3 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem der links stehende Typausdruck (mit Typnamen aus den Paketen und ein Typ des darüber stehenden Lambdas ist. Es können keines, einer oder mehrere Felder pro Zeile auszuwählen sein.
Aufgabe 4 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Kommandozeile (in ausgeführt) die darüber stehende Auswirking hat. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| mehrere Prozesse laufen gleichzeitig | Prozesse laufen im Hintergrund | Prozesse über Pipelines verbunden | Standardeingabe von umgeleitet | Standardausgabe von umgeleitet | Fehlerausgabe von umgeleitet | |
|---|---|---|---|---|---|---|
| |& &>> | ||||||
| &> && | ||||||
| & | ||||||
| "" | ||||||
| |& &> & | ||||||
Aufgabe 5 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Eigenschaft auf den darüber stehenden Methodenaufruf zutrifft. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| muss mit umgehen | ||||
| darf nur in einem Monitor verwendet werden | ||||
| soll nicht in einem Monitor verwendet werden | ||||
| gehört nicht zu Synchronisationsmechanismen | ||||
| suspendiert Ausführung des aktuellen Threads | ||||
| suspendiert Ausführung auf bestimme Zeit | ||||
| weckt systemweit alle wartenden Threads auf | ||||
| weckt höchstens einen wartenden Thread auf | ||||
| weckt mindestens einen wartenden Thread auf | ||||
| gibt den Lock vorübergehend frei |
Aufgabe 6 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Aussage eine Eigenschaft des darüber stehenden Entwurfsmusters ist. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| Iterator | Decorator | Proxy | Prototype | Factory-Method | |
|---|---|---|---|---|---|
| unterstützt Umkehrung der Abhängigkeiten | |||||
| führt zu vielen kleinen Objekten | |||||
| für oberflächliche Erweiterungen geeignet | |||||
| oft große Anzahl an Unterklassen nötig | |||||
| ist Entwurfsmuster für Struktur | |||||
| ist erzeugendes Entwurfsmuster | |||||
| hilft große Zahl an Klassen zu vermeiden | |||||
| beruht auf Delegation | |||||
| häufig als innere Klasse implementiert | |||||
| Objektidentität ist damit unzuverlässig |
Aufgabe 7 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft des darüber stehenden Entwurfsmuster ist.
| Iterator | Decorator | Proxy | Prototype | Factory-Method | |
|---|---|---|---|---|---|
| zyklische Strukturen bereiten Probleme | |||||
| robuste Varianten werden bevorzugt | |||||
| Verantwortlichkeiten wieder entziehbar | |||||
| schlecht geeignet für umfangreiche Objekte | |||||
| mehrere gleichzeitige Abarbeitungen möglich | |||||
| kein Decorator, aber gleiche Struktur möglich | |||||
| kann mit kovarianten Problemen umgehen | |||||
| es gibt externe und interne Varianten | |||||
| flache von tiefen Kopien unterschieden | |||||
| führt zu parallelen Klassenhierachien |
Aufgabe 8 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft des darüber stehenden Entwurfsmuster ist.
| Iterator | Decorator | Proxy | Prototype | Factory-Method | |
|---|---|---|---|---|---|
| Component ist ein Bestandteil | |||||
| Product ist ein Bestandteil | |||||
| Subject ist ein Bestandteil | |||||
| Creator ist ein Bestandteil | |||||
| Aggregate ist ein Bestandteil | |||||
| Smart-Reference ist eine Variante davon | |||||
| wird auch Wrapper genannt | |||||
| wird auch Surrogate genannt | |||||
| wird auch Virtual-Constructor genannt | |||||
| wird auch Cursor genannt |
Aufgabe 9 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Aussage eine Eigenschaft des darüber stehenden Entwurfsmuster ist. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| Visitor | Singleton | Template-Method | Factory-Method | |
|---|---|---|---|---|
| verwaltet verwandte Operationen zentral | ||||
| für Lazy-Initialization geeignet | ||||
| gibt Grundgerüst von Algorithmus vor | ||||
| Anzahl erzeugter Objekte kontrollierbar | ||||
| kann zu vielen Klassen führen | ||||
| kann zu vielen Methoden führen | ||||
| verwendet häufig Hooks | ||||
| kann zu vielen Objekten führen | ||||
| mehrere Arten primitiver Operationen | ||||
| beruht auf dem Hollywood-Prinzip |
Aufgabe 10 (10 Punkte)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft des darüber stehenden Entwurfsmuster ist.
| Visitor | Singleton | Template-Method | Factory-Method | |
|---|---|---|---|---|
| accept hat einen Parameter | ||||
| instance ist meist | ||||
| Element ist Bestandteil | ||||
| hilft Duplikate im Code zu vermeiden | ||||
| kann als Anti-Pattern gesehen werden | ||||
| Lambdas können Schreibaufwand reduzieren | ||||
| eine Methode ist häufig | ||||
| globale Variable ist eine Alternative dazu | ||||
| unterstützt direkte Code-Wiederverwendung | ||||
| Umgang mit Unterklassen problematisch |
Lösungen[Bearbeiten | Quelltext bearbeiten]
Die Lösungen sollten korrekt sein. Der Großteil meiner Antworten wurden als korrekt gewertet*, für die restlichen Antworten wurde mit den Lehrveranstaltungsunterlagen oder dem Java Compiler korrigiert.
*(Anmerkung: Die Korrektur des PP-Teams ist jedoch inkonsistent und es könnte sein, dass bei meinem Test etwas als korrekt gewertet wurde, obwohl es das eigentlich nicht ist.)
Aufgabe 1 (Lösung)[Bearbeiten | Quelltext bearbeiten]
und seien definiert durch und . Bitte markieren Sie jedes Auswahlfeld, bei dem der links stehende Typ ein Untertyp des darüber stehenden Typs ist. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| x | |||
| x | x | ||
| x | x | ||
| x | x | ||
| x | |||
| x | x | ||
| x | |||
| x | x |
Aufgabe 2 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft der darüber stehenden Parametrisierungsform in Java oder AspectJ ist.
| Generizität | Annotationen | Aspekte | |
|---|---|---|---|
| Join-Points sind dynamisch identifizierbare Programmstellen | x | ||
| kann die Werkzeuge zur Programmerzeugung beeinflussen | x | ||
| "" steht für beliebige Zeichen außer "" (Punkt) | x | ||
| für binäre Methoden wird Rekursion benötigt | x | ||
| zur Laufzeit sind Daten über Reflexion zugreifbar | x | ||
| wird für Kernfunktionalität meist gemieden | x | ||
| Lücken werden durch spezielle Parameter dargestellt | x | ||
| ersetzt den spezifizierten Programmtext | x | ||
| mit @ wird die Lebensdauer festgelegt | x | ||
| Typschranken legen vorausgesetzte Funktionalität fest | x |
Aufgabe 3 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem der links stehende Typausdruck (mit Typnamen aus den Paketen und ein Typ des darüber stehenden Lambdas ist. Es können keines, einer oder mehrere Felder pro Zeile auszuwählen sein.
| x | |||||
| x | x | ||||
| x | x | ||||
| x | |||||
| x | |||||
| x | |||||
| x | |||||
| x | |||||
| x |
Aufgabe 4 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Kommandozeile (in ausgeführt) die darüber stehende Auswirking hat. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| mehrere Prozesse laufen gleichzeitig | Prozesse laufen im Hintergrund | Prozesse über Pipelines verbunden | Standardeingabe von umgeleitet | Standardausgabe von umgeleitet | Fehlerausgabe von umgeleitet | |
|---|---|---|---|---|---|---|
| x | x | x | x | |||
| |& &>> | x | x | x | x | ||
| &> && | x | x | ||||
| x | x | x | ||||
| & | x | x | x | |||
| "" | ||||||
| |& &> & | x | x | x | x | x | x |
| x | x | x |
Aufgabe 5 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Eigenschaft auf den darüber stehenden Methodenaufruf zutrifft. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| muss mit umgehen | x | x | ||
| darf nur in einem Monitor verwendet werden | x | x | x | |
| soll nicht in einem Monitor verwendet werden | x | |||
| gehört nicht zu Synchronisationsmechanismen | x | |||
| suspendiert Ausführung des aktuellen Threads | x | x | ||
| suspendiert Ausführung auf bestimme Zeit | x | |||
| weckt systemweit alle wartenden Threads auf | ||||
| weckt höchstens einen wartenden Thread auf | x | |||
| weckt mindestens einen wartenden Thread auf | ||||
| gibt den Lock vorübergehend frei | x |
Aufgabe 6 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Aussage eine Eigenschaft des darüber stehenden Entwurfsmusters ist. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| Iterator | Decorator | Proxy | Prototype | Factory-Method | |
|---|---|---|---|---|---|
| unterstützt Umkehrung der Abhängigkeiten | x | ||||
| führt zu vielen kleinen Objekten | x | ||||
| für oberflächliche Erweiterungen geeignet | x | ||||
| oft große Anzahl an Unterklassen nötig | x | ||||
| ist Entwurfsmuster für Struktur | x | x | |||
| ist erzeugendes Entwurfsmuster | x | x | |||
| hilft große Zahl an Klassen zu vermeiden | x | ||||
| beruht auf Delegation | x | x | |||
| häufig als innere Klasse implementiert | x | ||||
| Objektidentität ist damit unzuverlässig | x |
Aufgabe 7 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft des darüber stehenden Entwurfsmuster ist.
| Iterator | Decorator | Proxy | Prototype | Factory-Method | |
|---|---|---|---|---|---|
| zyklische Strukturen bereiten Probleme | x | ||||
| robuste Varianten werden bevorzugt | x | ||||
| Verantwortlichkeiten wieder entziehbar | x | ||||
| schlecht geeignet für umfangreiche Objekte | x | ||||
| mehrere gleichzeitige Abarbeitungen möglich | x | ||||
| kein Decorator, aber gleiche Struktur möglich | x | ||||
| kann mit kovarianten Problemen umgehen | x | ||||
| es gibt externe und interne Varianten | x | ||||
| flache von tiefen Kopien unterschieden | x | ||||
| führt zu parallelen Klassenhierachien | x |
Aufgabe 8 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft des darüber stehenden Entwurfsmuster ist.
| Iterator | Decorator | Proxy | Prototype | Factory-Method | |
|---|---|---|---|---|---|
| Component ist ein Bestandteil | x | ||||
| Product ist ein Bestandteil | x | ||||
| Subject ist ein Bestandteil | x | ||||
| Creator ist ein Bestandteil | x | ||||
| Aggregate ist ein Bestandteil | x | ||||
| Smart-Reference ist eine Variante davon | x | ||||
| wird auch Wrapper genannt | x | ||||
| wird auch Surrogate genannt | x | ||||
| wird auch Virtual-Constructor genannt | x | ||||
| wird auch Cursor genannt | x |
Aufgabe 9 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie jedes Auswahlfeld, bei dem die links stehende Aussage eine Eigenschaft des darüber stehenden Entwurfsmuster ist. Es können keines, eines oder mehrere Felder pro Zeile auszuwählen sein.
| Visitor | Singleton | Template-Method | Factory-Method | |
|---|---|---|---|---|
| verwaltet verwandte Operationen zentral | x | |||
| für Lazy-Initialization geeignet | x | x | ||
| gibt Grundgerüst von Algorithmus vor | x | |||
| Anzahl erzeugter Objekte kontrollierbar | x | |||
| kann zu vielen Klassen führen | x | |||
| kann zu vielen Methoden führen | x | |||
| verwendet häufig Hooks | x | x | ||
| kann zu vielen Objekten führen | ||||
| mehrere Arten primitiver Operationen | x | |||
| beruht auf dem Hollywood-Prinzip | x | x |
Aufgabe 10 (Lösung)[Bearbeiten | Quelltext bearbeiten]
Bitte markieren Sie in jeder Zeile das eine Auswahlfeld, bei dem die links stehende Aussage am ehesten eine Eigenschaft des darüber stehenden Entwurfsmuster ist.
| Visitor | Singleton | Template-Method | Factory-Method | |
|---|---|---|---|---|
| accept hat einen Parameter | x | |||
| instance ist meist | x | |||
| Element ist Bestandteil | x | |||
| hilft Duplikate im Code zu vermeiden | x | |||
| kann als Anti-Pattern gesehen werden | x | |||
| Lambdas können Schreibaufwand reduzieren | x | |||
| eine Methode ist häufig | x | |||
| globale Variable ist eine Alternative dazu | x | |||
| unterstützt direkte Code-Wiederverwendung | x | |||
| Umgang mit Unterklassen problematisch | x |