Folien zum Kurs
Vertiefung der Programmierung mit C++
Zusammenfassung Grundlagen
C - Grundlagen
OOP - Grundbegriffe
C++ - Grundlagen
Initialisieren, Kopieren und Zuweisen (IKZ)
IKZ: einige Fragen
IKZ: Klasse Name auf Basis der String Klasse
IKZ: Methoden der Klasse Name
IKZ: Klasse NamemitTitel (Bild)
IKZ: Klasse NamemitTitel (Implementation)
IKZ: Methoden der Klasse NamemitTitel
IKZ: Verwendung der Klasse NamemitTitel
Array-Initialisierung (AI)
AI: Typdefinitionen
AI: Bemerkungen
AI: zwei Funktionstemplates
AI: Test der Möglichkeiten
AI: main
AI: Test
AI: Test der Möglichkeiten
AI: Zusammenfassung
Patterns und Idioms
Einführung in wiederverwendbare Konzepte
KONSEQUENZENABSCHNITT
Einordnung der Muster anhand der Granularität
Einordnung der Muster anhand der Granularität
Einordnung der Muster anhand der Granularität
Einordnung der Muster anhand der Problemklassen
COMPOSITE PATTERN Zweck ...
COMPOSITE PATTERN Struktur
COMPOSITE PATTERN Teilnehmer
COMPOSITE PATTERN Interaction ...
COMPOSITE PATTERN Implementation (Bild)
COMPOSITE PATTERN Implementation
C++ Klassen (Vertiefung)
Selbstreferenz
Selbstreferenz
Pointer zu Member
Pointer zu Member: Beispiel (Klassendefinition)
Pointer zu Member: Beispiel (Implementation der Methoden)
Pointer zu Member: Beispiel (Hauptroutine)
Pointer zu Member: Beispiel (Output)
Referenzen und dynamische Objekte
Pointer und Referenzen: Argumente
Pointer und Referenzen: Returnwerte
Klassenvariablen und Klassenmethoden
Klassenvariablen und Klassenmethoden
Pointer auf Klassenmethoden
Pointer auf Klassenmethoden: Beispiel (Implementation)
Pointer auf Klassenmethoden
C++ Namespaces
Grundsätzliche Vorgehensweis
Definition von Namensbereiche
unbenannte Namensbereiche
Zugriff auf Elemente
Ein Beispiel
Mehr zu Vererbung (Mehrfach- und virtuelle Vererbung)
Mehrfachvererbung
Problem 1: Ambiguity
Ambiguity
Problem 2: SubObjekt mehrfach enthalten
SubObjekt der indirekten Basisklasse mehrfach enthalten
SubObjekt der indirekten Basisklasse mehrfach enthalten
Problem 3: Keine eindeutige Basisklasse
Keine eindeutige Basisklasse
Keine eindeutige Basisklasse
Virtuelle Vererbung
Virtuelle Basisklassen
Virtuelle Basisklassen
Problem 4: Mehrfacher Methoden-Aufruf
Mehrfacher Methoden-Aufruf (MultCall.h)
Mehrfacher Methoden-Aufruf (MultCall.cc)
Lösung: Mehrfacher Methoden-Aufruf
ein zweite Lösung: Mehrfacher Methoden-Aufruf
Nun gelöst: Mehrfacher Methoden-Aufruf
Konvertierung und RTTI
Konvertierung und RTTI
Implizite Konvertierung, Standardkonvertierungen
benutzerdefinierte implizite Konvertierung
benutzerdefinierte implizite Konvertierung
Explizite Konvertierung
Explizite Konvertierung
Upcasts und Downcasts
Upcasts und Downcasts
Upcasts und Downcasts (listing)
Upcasts und Downcasts (output)
Wozu dynamische Konvertierungen?
dynamische Konvertierungen
dynamische Konvertierungen
Dynamische abgesicherte (überprüfbare) Downcasts
Verfügbarmachen von dynamischen Typinformationen
Verfügbarmachen von dynamischen Typinformationen
Möglichkeiten der Typkonvertierung
Möglichkeiten der Typkonvertierung
Beispiel DCastExp
DCastExp.cc
DCastExp.cc2
DCastExp (output)
Mehr zu Streams
Manipulatoren
Manipulatoren ohne Argumente
Manipulatoren mit Argumenten
Manipulatoren mit Argumenten
Manipulatoren mit Argumenten
Persistenz von Klassen- bzw. Objekthierarchien (PKOH)
PKOH: stringorientiertes Streaming
PKOH: Hardcopy
PKOH: Abbildung der Objekte auf Datenbank
PKOH: Rekonstruktion von Objekt-Hierarchieen
PKOH: Erweiterung der abstrakten GeoObj ums Streaming
PKOH: NaivGeoO.cc
PKOH: operator>>
PKOH: Methoden ReadFrom und WriteOn
PKOH: Methoden ReadFrom und WriteOn
PKOH: Beispiel, Ausgabe
PKOH: Beispiel, Eingabe
PKOH: WriteOn der Klasse ZGeoObj
PKOH: ReadFrom der Klasse ZGeoObj
PKOH: Design-Fehler und Probleme
PKOH: Beispiele oNaivZGe/iNaivZGe
PKOH: Beispiele oNaivZGe/iNaivZGe
Objekt-Persistenz und Erzeuger-Pattern
Was sind Erzeuger-Pattern?
Name des Pattern: Abstract Factory
Struktur und Teilnehmer
Definition einer Klasse AbstractFactory
File: AbstFcry.h
Bemerkungen zu AbstractFactory
File: AbstFcry.cc
Bemerkungen zum Speichermanagement
Zuordnung zu den Elementen der Patternstruktur
Elementen der Patternstruktur
Weiterer Klassenentwurf
File: GeoObj.h
Weiterer Klassenentwurf
Definition der IOFactory-Klasse
File: IOFactry.h
Name des Pattern: Prototype
Bereitstellung von Prototypen
Verwaltung der Prototypen
File: IOFactry.h
Weiterer Klassenentwurf
IOFactory::CreateGeoObj
Veränderungen an GeoObj-Klasse
clone()-Methode
Test der IOFactory: Typbeschreibungen von cin
Test der IOFactory: Typbeschreibungen aus benanntem File
Streaming der Objekte
gemeinsamer Stream für Daten und Typbeschreibungen
mGeoFacG.cc
Fehlerbehandlung
Begriff der Invariante
Invariantentest in der Praxis
Implementation von Invariantentests
Implementation von Invariantentests
Standard Template Library
Grundlagen
Header File Konventionen
Grundkonzept
Verwendungsmöglichkeiten
Container
Container - Überblick
Wahl des geeigneten Containers
Wahl des geeigneten Containers (2)
Beispiele zur Containerverwendung
Sieb des E atosthenes
Literatur und Informationsquellen
Einführende Literatur
Weiterführende Literatur
verwandete Literatur
Internet
Praktikum
Praktikum 1
Praktikum 2a
Praktikum 2b
Praktikum 3a
Praktikum 3b
Praktikum 4a
Praktikum 4b
Praktikum 4c
Praktikum 4d
Praktikum 4e
Praktikum 4f
Praktikum 4g
Praktikum 4h
Praktikum 5a
Praktikum 5b
Praktikum 5c
Praktikum 5d
Praktikum 5e
Praktikum 6a
Praktikum 6b
Praktikum 7
Praktikum 8
Praktikum 9
Über dieses Dokument
Über dieses Dokument