Nächste Seite:
Einleitung
(Objektorientierte) Programmierkonzepte
Vorlesung, Sommersemester 2004
Johannes Waldmann, HTWK Leipzig
Einleitung
Einordnung
Inhalt
Arten der Polymorphie
Plan der Lehrveranstaltung
Literatur
Vorlesungen
Seminare/Praktika
Datentypen
Funktionen
Übung 12. Woche
Die Shell: Bash
Emacs ...kann alles außer Tee kochen
Der Haskell-Interpreter Hugs
Polymorphe Typen, Funktionen
Datentypen in Haskell (V. 22. 3.)
Data-Deklarationen
Vordefinierte Datentypen
Syntax: Operatoren und Funktionen
Fallunterscheidungen (case ...of)
Varianten von Fallunterscheidungen
Syntax: Deklarationen
Suchbäume: Herstellen
Syntax: Lokale Deklarationen: let ...in ...
Spezielle Operator-Syntax
Suchbäume: Durchlaufen
Programmtransformationen (I)
Programmtransformationen (II)
Virtuelle Datenstrukturen
Übung 13. Woche
Programmier-Übungen
Übungen: append
Übungen: take/dropWhile
Übungen: partition
Übung: mergesort
Übung: split
Übung: merge
shuffle
Polymorphie/Typklassen (V 30. 3.)
Einleitung
Der Typ von sort
Instanzen
Klassen-Hierarchien
Zahlbereichs-Typen und -Klassen
Überladen von Literalen
Die Klasse Show
Generische Instanzen (I)
Generische Instanzen (II)
Überlappende Instanzen
Aufgaben zu Typklassen (14. Woche)
.
Typklassen (Erweiterungen)
Beispiel: Klassen für Brettspiele
Brettspiele: Havannah
Havannah - Online
Beispiel: Klassen im Autotool
Multi-Parameter-Klassen
Automatisches Ableiten von Instanzen (I)
Automatisches Ableiten (II)
Typklassen (Zusammenfassung) 5. 4.
Daten/Klassen in Haskell
Klassen/Schnittstellen in OO
Literatur
Default-Methoden (zur Ü. 5. 4.)
Container, Iteratoren (V 5. 4.)
Container/Visitor/Iterator (I)
Container/Visitor/Iterator (II)
Konstruktorklassen
Algorithmen-Schablone f. Listen
Algorithmen-Schablone f. Bäume
Übung 5. 4.
Wdhlg. Binäre Bäume
make
tmap
tfold
Einführung Java-1.5 (V 19. 4.)
Neuheiten in Java-1.5
Java-1.5 benutzen
Generische Klassen und Methoden
Listen
Listen (II), Iteratoren
Iteratoren (II)
Polymorphe Methoden
Paare
split
merge-sort
merge
Übung 19. 4.
Java-Collections (V 26. 4.)
Übung: Tokens (Wörter) und Collections
Übung (II)
Collections -- Überblick
Maps -- Überblick
Collection/Iterator
interface List<E>
Iteratoren für Listen
interface Set<E>
Hashing
interface OrderedSet<E>
Ordnungen (I)
Ordnungen (II)
Ordnungen (Wrapper-Klassen)
interface Map<K,V>
Map (II)
Aufgabe zu Collection/Map
Java-Generics formal (3. 5.)
Generics I (Wdhlg.)
Generics II (Wdhlg.)
Java-Grammatik, Deklarationen (I)
Java-Grammatik, Deklarationen (I)
Java-Grammatik, Ausdrücke
Java-Grammatik, Anweisungen
Grammatik-Erweiterungen
Subtyping
Generics und Subtyping
Eingeschränkte Typ-Argumente
(bounded) Wildcards
Mehr zu Wildcards
Generics: Implementierung
Weitere Algorithmen und Klassen (10. 5.)
TreeSet, TreeMap
Rot und Schwarz
Abgabe der Übungsaufgabe
Collections
Die Methode copy
Der Typ von copy
Die Methode min
Der Typ von min
min mit explizitem Komparator
min mit explizitem Komparator
Stabilität von Sortierverfahren
Stabilität von Sortierverfahren (II)
Übung zum Sortieren (17. 5.)
Weitere Algorithmen und Klassen (10. 5.)
TreeSet, TreeMap
Rot und Schwarz
Abgabe der Übungsaufgabe
Collections
Die Methode copy
Der Typ von copy
Die Methode min
Der Typ von min
min mit explizitem Komparator
min mit explizitem Komparator
Stabilität von Sortierverfahren
Stabilität von Sortierverfahren (II)
Übung zum Sortieren (17. 5.)
C++ (17. 5.)
Geschichte: C
Virtual Function Tables in C
Geschichte: C++
C++ oder Java
Moderner Zugang zu C++
Literatur
Beispiel: Wörter sortieren
Beispiel: Wörter sortieren (II)
Übung 18./24. 5.
Mehr zu C++ (V. 24. 5.)
(Separate) Kompilation
Header
Aufgabe zu Imports
namespace, using
Container-Beispiel
Sichtbarkeit
Container-Instanzen
Container-Methoden und -Typen
Sequentielle Container-Methoden
Iteratoren - Benutzung
Iteratoren - Eigenschaften
Listen
Liste (II)
Assoziative Container
map
Aufgabe zu map
Referenzen, Const
Überladen von Operatoren
Zeiger
Referenzen
Vergleich Zeiger/Referenzen
const
Wdhlg Iteratoren
find (Input)
copy (Output)
Streams und Iteratoren
replace (forward)
reverse (Bidirektional)
binary search (Random-Access)
Übung zu Iteratoren
Definition neuer Typen
struct
Sichtbarkeit von Deklarationen
Ort von Deklarationen
Konstruktoren
Initialisierungen
Speicher-Management
Platz für Daten
Arten von (Kon)Struktoren
(Default-)Implementierungen
Aufgaben zu Konstruktoren
Garbage und -Collection
Referenz-Zähler
Mark/Sweep
Kopierende GC
Generational GC
Nebenläufige GC
Konservative GC für C/C++ (Boehm)
Vererbung
Vererbung
Sichtbarkeiten
Konstruktoren
Überschreiben von Methoden
Statische vs. dynamische Bindung
Virtuelle Destruktoren
Interfaces?
Nutzen von Interfaces
Du sollst/Du sollst nicht
Implementierung von Objekten/Klassen
Implementierung der Vererbung
Mehrfach-Vererbung
Gewöhnliche und virtuelle Basis-Klassen
Mehrfach-Vererbung (II)
Übung zu Vererbung
Zusammenfassung
Wiederverwenden und parametrisieren
SoftwareSchemata und -Parameter
Funktionales C++: generate
Funktionales C++: accumulate
Funktionales Haskell
Funktionales Java: Wrapper
Polymorphie
Orthogonalität
Modulsysteme
Sprachdefinitionen
Typsysteme (OO)
Typsysteme (Ausblick)
Fazit
Über dieses Dokument ...
Johannes Waldmann 2004-11-30