TU Wien:Fortgeschrittene objektorientierte Programmierung VU (Puntigam)/Stoffübersicht

Aus VoWi
Zur Navigation springen Zur Suche springen

Eine stichwortartige Stoffzusammenfassung als Hilfestellung beim Lernen.

- veraltete Infos aktualisiert am 15.10.2023

Teil 1

  • Zusicherungen
    • Ausdrückbarkeit von Zusicherungen
    • Probleme
    • History Constraints
    • "Lösungen"
      • Alias-Probleme aussschließen
      • Atomare Aktionen bei Nebenläufigkeit
      • Seiteneffekte vermeiden
  • Namen und strukturelle Typen
    • Bedeutung von Namen
    • Strukturell vs. nominal
    • Arten von Namenskonflikten
    • Wo Namen manchmal stören
      • Schranken bei Generizität
      • Plug & Play
      • Einfügen gemeinsamer Oberklasse
  • Generizität
    • anonyme Schranken
    • Arten gebundener Generizität

Teil 2

  • Implementierung OOP - dynamisches Binden
    • Einfachvererbung
    • Interfaces
    • Mehrfachvererbung
    • Optimierungsmöglichkeiten
  • State Pattern
    • Dynamische Vererbung als Alternative zur Delegation
  • Observer Pattern
    • Pull / Push

Teil 3

  • Smalltalk

Teil 4

  • Eiffel
  • Nebenläufigkeit
    • Vererbungsanomalie
    • SCOOP Modell in Eiffel

Teil 5

  • Reflektion
    • Arten der Semantikänderung eines Programms
    • Metadaten
    • Klassen zur Laufzeit hinzufügen
    • Klassen dynamisch erzeugen
    • Message passing usw. direkt verändern
    • Alternativen zur Reflektion
  • Attribute und Annotationen
  • Statisch vs. dynamisch
    • Dynamische Erweiterung von Klassen vs Decorator
    • Metaklassen
  • C++ Templates
    • Ausdrucksstärke
    • Policy-based Programming

Teil 6

  • Funktionale OOP
    • Referenzielle Transparenz (= keine Seiteneffekte)
    • Pattern Matching
  • Delegates
    • Closures
    • Lambdas
    • Delegation vs. Vererbung
  • Mixins
  • Traits
  • Dependency Injection
    • Interface Injection
    • Setter Injection
    • Constructor Injection
    • Inversion of Control Container
  • Dynamische Sprachkonzepte
    • Duck Typing
    • Reaktion auf unbekannte Methoden
  • primitive Datentypen
  • Garbage Collection
  • Sichtbarkeit
    • Klassenbasiert
    • Objektbasiert
    • nach Security-Policy
  • Trennung GUI und Logik, z.B. MVC
  • Type Erasure
    • homogene Übersetzung von Generizität in Java
    • keine Type Erasure in C#