Algorithmen und Programmierung III - Datenstrukturen und Datenabstraktion

Dozent: Prof. Dr. Christian Knauer

Inhalt

Ausgangspunkt ist das Geheimnisprinzip und seine Bedeutung für die Strukturierung von Programmen und die Konstruktion von Datenobjekten mittels Modulen und Klassen. Eine zentrale Rolle bei der Modellierung von Daten spielt der Begriff der Datenabstraktion verbunden mit der Unterscheidung zwischen Spezifikation und Implementierung abstrakter Datenobjekte und Datentypen. Folgen, Mengen, Relationen, Bäume, Graphen und geometrische Objekte werden als abstrakte Typen eingeführt. Anschließend werden effizient manipulierbare Repräsentationen dieser Typen betrachtet und die zugehörigen Algorithmen auf ihre Komplexität hin untersucht.

In der objektorientierten Programmierung spielen neben der Datenabstraktion Vererbung und Polymorphie eine wesentliche Rolle. Abstrakte Datentypen werden daher häufig unter Verwendung von Vererbungsmechanismen spezifiziert und implementiert. Für typische Problemlösungen lassen sich Entwurfsmuster angeben; die Behandlung der Muster Iterator, Kompositum, Abstrakte Fabrik bietet sich an.
Technische Aspekte der Datenspeicherung im Arbeitsspeicher (Keller und Halde) und im Hintergrundspeicher (Dateien, persistente Objekte) werden behandelt. Programmiert wird sowohl in objektorientierten als auch in funktionalen Sprachen.

Vorlesung

Skript wird gesucht.

Übungsblätter

# Übungen Lösungen
1 Übungsblatt 1
2 Übungsblatt 2 Musterlösung 2, Aufg.3
3 Übungsblatt 3 Musterlösung 3, Aufg.3
4 Übungsblatt 4  
5 Übungsblatt 5  
6 Übungsblatt 6 Lösung 6 Aufg.3 & Lösung 7 Aufg.2
7 Übungsblatt 7  
8 Übungsblatt 8, BaumZeichner.java  
9 Übungsblatt 9  
10 Übungsblatt 10  
11 Übungsblatt 11, Daten für Aufg.4  
12 Übungsblatt 12  
13 Übungsblatt 13, Daten für Aufg.1  
14 Übungsblatt 14  
  Präsenzübung