Objektorientiertes Design für C++ von Stefan Kuhlins | Entwicklung eines CASE-Tools mit C++ -Codegenerierung | ISBN 9783642592416

Objektorientiertes Design für C++

Entwicklung eines CASE-Tools mit C++ -Codegenerierung

von Stefan Kuhlins
Buchcover Objektorientiertes Design für C++ | Stefan Kuhlins | EAN 9783642592416 | ISBN 3-642-59241-4 | ISBN 978-3-642-59241-6

Objektorientiertes Design für C++

Entwicklung eines CASE-Tools mit C++ -Codegenerierung

von Stefan Kuhlins

Inhaltsverzeichnis

  • 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.2 Das dynamische Modell.
  • 2.3 Das funktionale Modell.
  • 3 Objektorientiertes Design für C++.
  • 3.1 Bezeichner.
  • 3.2 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.13 Operatoren.
  • 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.4Bidirektionale 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ä.
  • 8.8 Implementation.
  • 8.9 Zusammenfassung.
  • 9 Grafische Notation.
  • 9.1 Zugriffsrechte.
  • 9.2 Klassen.
  • 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 MAOOM ? Tools.
  • 12.1 Einbindung der Designskht in die Benutzerschnittstelle des MAOOAM? Tools.
  • 12.2 Codegenerierung.
  • 13 Geplante Erweiterungen.
  • 13.1 „Reverse-Engineering“.
  • 13.2 Wiederverwendung vo Klassen.
  • 13.3 „Garbage-Collection“.
  • 14 Zusammenfassung und Ausblick.