Abbildungsverzeichnis
Tabellenverzeichnis
Abkürzungsverzeichnis
1 Einleitung
1.1 Einbettung und Motivation
1.2 Design
1.3 Codegenerierung
1.4 Gliederung
2 Die Mannheimer objektorientierte Analysemethode
2.1 Das statische Modell
2.1.1 Klassen
2.1.2 Attribute
2.1.3 Methoden
2.1.4 Vererbungsbeziehungen
2.1.5 Objektbeziehungen
2.1.6 Aggregationsbeziehungen
2.1.7 Kardinalitäten
2.1.8 Nachrichtenverbindungen
2.1.9 Subjekte
2.1.10 Beispiel Depotverwaltung
2.1.11 Klassenspezifikationen
2.2 Das dynamische Modell
2.2.1 Szenarios und Ereignisfolgediagramme
2.2.2 Zustandsdiagramme
2.3 Das funktionale Modell
3 Objektorientiertes Design für C++
3.1 Bezeichner
3.2 Datentypen
3.2.1 Datentypen der ODMG
3.2.2 Besonderheiten des ganzzahligen Datentyps int
3.2.3 Komplexe Datentypen
3.2.4 Abgeleitete Datentypen und typedef
3.2.5 Dynamische Felder
3.2.6 union
3.2.7 Eingabe von Datentypen
3.3 Nachrichtenverbindungen
3.4 Subjekte
4 Klassen
4.1 class
oder struct
4.2 Abstrakte Klassen
4.3 Reihenfolge der Zugriffsrechte
4.4 friend
-Deklarationen
4.5 Kanonische Form
4.6 Spezielle Eigenschaften
4.7 Eingebettete Typen
4.8 Parametrisierte Klassen
4.9 Header- und Implementationsdateien
4.10 Leere Klassen
4.11 Zusammenfassung
5 Attribute
5.1 Datentyp
5.2 Bitfelder
5.3 Initialisierung
5.4 static
5.5 const
5.6 Klassenkonstanten
5.7 mutable
5.8 volatile
5.9 Zugriffsrechte
5.10 Handle/body-Implementation
5.11 Abgeleitete Attribute
5.12 Zusammenfassung
6 Methoden
6.1 Name
6.2 Parameter
6.3 Typ des Rückgabewerts
6.4 Zugriffsrechte
6.5 inline
6.6 const
6.7 volatile
6.8 static
6.9 virtual
6.10 Überladene Funktionsnamen
6.11 Ausnahmespezifikationen
6.12 Implizite Methoden
6.12.1 Konstruktoren
6.12.2 Destruktor
6.12.3 Zuweisungsoperator
6.12.4 Compilergenerierte Elementfunktionen
6.12.5 Zugriffsfunktionen
6.13 Operatoren
6.13.1 Eigenschaften von Operatorfunktionen
6.13.2 Vorschläge zur Umsetzung überladener Operatoren
6.13.3 Additive Operatoren
6.13.4 Vergleichsoperatoren
6.13.5 Logische Operatoren
6.13.6 Ein- und Ausgabeoperatoren
6.13.7 Speicherverwaltung
6.13.8 Zeigerklassen
6.13.9 Kommaoperator
6.13.10 Funktionsaufrufoperator
6.13.11 Typumwandlungen
6.14 Member-Templates
6.15 Zusammenfassung
7 Vererbungsbeziehungen
7.1 Zugriffsspezifizierer für Basisklassen
7.2 Virtuelle Basisklassen
7.3 Virtuelle Elementfunktionen
7.4 Überladen und verdecken
7.5 Standardargumente
7.6 Vermeidung doppelter Funktionsaufrufe bei virtuellen Basisklassen
7.7 Auflösung von Namenskonflikten bei Mehrfachvererbung
7.8 Zusammenfassung
8 Aggregations-, Objekt- und Benutztbeziehungen
8.1 Individuelle versus standardisierte Programmierung von Beziehungen
8.2 Beziehungen zu einem Objekt
8.3 Beziehungen zu mehreren Objekten
8.4 Bidirektionale Beziehungen und referentielle Integrität
8.5 Abgrenzung von Aggregations-, Objekt- und Benutztbeziehungen
8.6 Praktische Schwierigkeiten
8.7 Ansätze zur Wiederverwendung von Beziehungsfunktionalität
8.8 Implementation
8.8.1 Unidirektionale Objektbeziehungen mit Kardinalität 0,1
8.8.2 Unidirektionale Objektbeziehungen mit
Kardinalität 0,n
8.8.3 Bidirektionale
Objektbeziehungen mit Kardinalität 0,1
8.8.4 Bidirektionale Objektbeziehungen mit Kardinalität
0,n
8.9 Zusammenfassung
9 Grafische Notation
9.1 Zugriffsrechte
9.2 Klassen
9.2.1 Spezielle Eigenschaften
9.2.2 Parametrisierte Klassen
9.2.3 Eingebettete Typen
9.2.4 friend
-Deklarationen
9.3 Attribute
9.4 Methoden
9.5 Vererbungsbeziehungen
9.6 Aggregations-, Objekt- und Benutztbeziehungen
9.7 Nachrichtenverbindungen
9.8 Subjekte
9.9 Anmerkungen
9.10 Filter
9.11 Zusammenfassung der Symbole
9.12 Depotbeispiel
10 Qualitätssicherung
10.1 Klasseninvarianten, Vor- und Nachbedingungen
10.2 Kritische Betrachtung
10.3 Checksummenberechnung als Klasseninvariante
10.4 Zusammenfassung
11 Allgemeine Anforderungen an C++-Codegeneratoren
11.1 Header-Dateien
11.2 Reihenfolge der Klassenelemente
11.3 Layout des generierten Programmcodes
11.4 Kommentare
11.5 Nachvollziehen des Programmablaufs
11.6 Compilereinschränkungen
11.7 Makefile
12 Prototyp des MAOOAM*TOOLS
12.1 Einbindung der Designsicht in die Benutzerschnittstelle des MAOOAM*Tools
12.2 Codegenerierung
13 Geplante Erweiterungen
13.1 Reverse-Engineering
13.2 Wiederverwendung von Klassen
13.3 Garbage-Collection
14 Zusammenfassung und Ausblick
Literaturverzeichnis
Index
Anhang