TU Wien:Fortgeschrittene objektorientierte Programmierung VU (Puntigam)/Prüfungsprotokolle

Aus VoWi
Zur Navigation springen Zur Suche springen

SS23[Bearbeiten | Quelltext bearbeiten]

Folgende Fragen wurden bei der VO Prüfung gefragt (Gruppenmitglieder bekommen größtenteils unterschiedliche Fragen - er notiert sich die Fragen pro Gruppe)

  • Was haben wir das Semester gemacht?
  • das ganze c++ zeug (templates usw.)..
  • nominale und strukturelle typen + die Tabelle
  • Zusicherungen
  • das state pattern
  • dynamisches Binden (Thunk? VTF?)
  • nicht wirklich Eiffel oder Smalltalk spezifisch
  • Geschichte von Programmiersprachen (Was ist der Unterschied Smalltalk und Java/C++?)
  • ObserverPattern (UML, Performance bei vielen Notifications, wer schickt notifications, push vs pull model)
  • Warum sind uns strukturelle Typen für Generizität lieber?
  • wie kann man mit strukturellen Typen nominelle Typen simulieren?

SS22[Bearbeiten | Quelltext bearbeiten]

Folgende Fragen wurden bei der VO Prüfung gefragt (Gruppenmitglieder bekommen größtenteils unterschiedliche Fragen - er notiert sich die Fragen pro Gruppe)

  • Was haben wir das Semester gemacht?
  • SOLID
  • C++ Templates (inkl Bsp mit Struct)
  • nomale und strukturelle Typen (sehr genau)
  • Observer pattern (sehr detailliert)
  • State pattern
  • Folie über Expressing Assertions (inkl Zusammenhang mit Zusicherungen) und das nachfolgende Bsp im Detail aliasing
  • OOP+FP
  • Typinferenz
  • Wie funktioniert ein Methodenaufruf?
  • Was sind Thunks?
  • Wie funktioniert Dynamic Dispatch? (besonderer Wert auf Indexierung und wie das mit der VFT in Subklassen aussieht)
  • Was sind Lambdas und was sind da die Merkmale?
  • Design by Contract

SS17[Bearbeiten | Quelltext bearbeiten]

7. Juli 2017[Bearbeiten | Quelltext bearbeiten]

Einzelprüfung.

  • Was haben wir in der Vorlesung durchgemacht?
  • Wie funktioniert dynamic Dispatching generell?
  • Wie funktioniert Einfachvererbung?
  • Warum brauchen wir bei Interfaces mehrere Tabellen?
  • Warum brauchen wir das Delta bei Mehrfachvererbung?
  • Was kann man mit dem Delta zur Laufzeit machen?
  • Observer Pattern: welche Methoden gibt es da, Unterschied zwischen push und pull, wo wird notify() aufgerufen und was hat das für Auswirkungen?
  • Was ist Policy-based Programming?

Benotung war sehr sehr nett.

SS13[Bearbeiten | Quelltext bearbeiten]

8. Juli 2013[Bearbeiten | Quelltext bearbeiten]

  • Themenübersicht, welche Themen wurden in der LVA behandelt. Herr Puntigam fragt dabei sehr genau. Wenn man sich an einige der Themen (z.B. die, die nur mit einer Folie behandelt wurden) erinnern kann, fragt er weiter und wartet ab, "ob noch was kommt", z.B. ob man sich noch an das Pattern erinnern kann, das man anfangs nicht erwähnte.

Weitere Themen:

  • Bedeutung von Namen, strukturelle vs. nominale Typen, welche Typen sind in der Theorie gut behandelt (strukturelle), welche werden in Programmiersprachen verwendet (nominale), warum das?
  • Policy based programming (was ist das, wo und warum ist das sinnvoll)
  • Observer Pattern (wie unten: push vs. poll, wie heißen die Methoden im Pattern, wie heißen die Klassen im Pattern, wer kann notify initiieren, Vor/Nachteile...)
  • History Constraints (was ist das, wer sorgt für deren Einhaltung)

Andere Themen wurden in der Diskussion kurz gestreift (z.B. das Strategy-Pattern bei der Diskussion über Policy-Based Programming)

Generell wird recht genau gefragt. Wenn man nicht weiter weiß, wartet Herr Puntigam noch ein wenig ab, gibt hie und da Anstöße, "bohrt" ein bisschen weiter. Oft entsteht eine Art Diskussion, er ist offen für weiterführende Gegenfragen

Die Beurteilung ist sehr nachsichtig.




oberflächlich: - themen übersicht, welche themen wurden in der lva behandelt

- was ist ein aspekt?

genauer:

- implementierung der dynamischen bindung bei einfach- und mehrfachvererbung, wie funktioniert das?, wie kommt man zum richtigen offset? was ist eine vft? wer sorgt dafür(-> der compiler) warum werden bei z.b. interfaces (mehrfach-vererbung) zusätzliche tabellen benötigt? (ungefähr: hängt mit dem offset zusammen, was ohne zusätzliche tabellen zu konflikten führen würde, bsp.: interface A hat methode x, interface B hat methode y... x und y hätten gleiche offsets -> compiler hat zuwenig informationen um dies festzustellen und braucht deshalb weitere tabellen für die einzelnen interfaces)

- welche probleme gibt es mit zusicherungen? (mangelnde sprachunterstützung, nebenläufigkeit, vorbedingungen am client)

- observer-pattern erklären, welche methoden werden verwendet, unterschied zwischen push/poll (welche daten werden dabei übertragen? wie groß ist die anfallende datenmenge?), unterschied zwischen client(observer)- und subjektseitiger-triggerung der benachrichtigung(notify)

- was kann man mit C++-templates machen? ausdruckstärke bzw. wie mächtig sind templates? was macht der compiler damit? (-> makroersetzung), wie geht der compiler damit um wenn zuviel aufwand bei den ersetzungen anfällt? (-> gibt eine definierte konstante nach welcher der compiler die makroersetzung abbricht)

SS12[Bearbeiten | Quelltext bearbeiten]

9. Juli[Bearbeiten | Quelltext bearbeiten]

Wir waren zu dritt, und die zweite Gruppe. Die erste Frage hat er in die Runde gestellt "Was haben wir in der Vorlesung durchgemacht?" Die restlichen waren zum Teil sehr tiefgehend, er hat aber sehr Human benotet.


  • Was ist AOP? Wie funktioniert AspectJ?
    • Zusatz: Weaving in AspectJ
  • Wie funktioniert dynamic dispatch für Mehrfachvererbung?
  • Was ist in dem Zusammenhang ein thunk?
  • Observer Pattern Überblick
    • Wie heißen die Nachrichten (Funktionen)?


  • Was sind mixins? (kurz)
  • Was ist Dependency Injection? (kurz)
  • Wie funktioniert dynamic dispatch für Interfaces?
  • State pattern Überblick
    • Wie funktioniert ein Zustandsüberang? (per Zuweisung)
    • Welche Eigenschaften hat das Pattern? (Zustandsübergang atomar)


  • Können Sie mir Annotationen bzw. Attribute erklären?
  • Wie funktioniert dynamic dispatch für Einfachvererbung?
  • Welche Möglickeiten gibt es, beim Observer Pattern ein notify auszuführen? (aus dem Subject oder dem Client des Subjects)

SS11[Bearbeiten | Quelltext bearbeiten]

7.7.11[Bearbeiten | Quelltext bearbeiten]

Person A:

  • State Pattern
  • Implementierung Dynamisches Binden im Übersetzer (Einfachvererbung)
  • Namen, Strukturelle/Nominale Typen
  • Zusatzfrage: Policy Based/Strategy Pattern

Person B:

  • Observer Pattern
  • Implementierung Interfaces im Übersetzer
  • Zusicherungen
  • Zusatzfrage: Attribute/Annotations

XX.7.11[Bearbeiten | Quelltext bearbeiten]

Gefragt wurde sehr detailliert und genau nach den Folien.

  • Constraints: Alles ausdrückbar, praktische Probleme (Sprachunterstützung, data hiding, Nebenläufigkeit); History Constraints
  • Einfach-, Interface-, Mehrfachvererbung; Delta bei Mehrfachvererbung.
  • Observer: Namen aller Methoden und Klassen im Design Pattern.