Fortgeschrittene Aspekte objektorientierter Programmierung (2V), WS 2002/03

Inhalt

1. Einleitung
1.1 Überblick
1.2 Formale und notationelle Grundlagen
2. Grundlagen objektorientierter Sprachen
2.1 Konzepte objektorientierter Programmierung
2.1.1 Grundkonzepte
2.1.2 Sprachliche Konzepte
2.1.3 Pragmatische Aspekte
2.2 Semantik objektorientierter Sprachen
2.2.1 Einführung
2.2.2 Operationelle Semantik einer Untersprache von Java
2.2.3 Zur Theorie strukturell operationeller Semantikdefinitionen
2.3 Eigenschaften objektorientierter Programme
2.3.1 Zusicherungen
2.3.2 Anweisungsspezifikation
2.3.3 Ablaufeigenschaften
2.3.4 Schnittstelleneigenschaften
2.3.5 Weitere Eigenschaften
2.4 Modularität und Kapselung
2.4.1 Modularität und modulare Spezifikation
2.4.2 Kapselung und Schnittstellenbildung
2.4.3 Realisieren von Kapselung
3. Techniken zum Prüfen objektorientierter Programme
3.1 Einführung
3.1.1 Typinformation und ihre statische und dynamische Prüfung
3.1.2 Typsicherheit
3.2 Parametrische Typsysteme und Virtuelle Klassen
3.2.1 Parametrische Typsysteme
3.2.2 Virtuelle Typen
3.3 Typsysteme zur Strukturierung von Objektgeflechten
3.3.1 Kapselung auf Paketebene: Confined Types
3.3.2 Andere Strukturierungsansätze
3.4 Erweiterte statische Prüfung
3.4.1 Allgemeine Aspekte der ESP
3.4.2 Das Werkzeug ESC/Java
4. Spezifikation objektorientierter Programme
4.1 Spezifikation von Typen
4.1.1 Leichte Spezifikationen
4.1.2 Spezifikation einzelner Objekte
4.1.3 Spezifikation mit abstrakten Variablen
4.1.4 Spezifikation zusammenhängender Objekte
4.2 Konformität von Subtypen
4.3 Module und Modularität
5. Verifikation spezifizierter Eigenschaften
5.1 Techniken zur Verifikation
5.2 Verifikation durch Beweis
6. Ausblicke