Dietmar Herrmann C++für Naturwissenschaftler Beispielorientierte Einführung ADDISON-WESLEY An imprint of Addison Wesley Longman, Inc. Bonn Reading, Massachusetts Menlo Park, California New York Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam
Vorwort 11 1 Einleitung 15 1.1 1.2 1.3 1.4 1.5 1.6 Was ist OOP? Warum C++? Die Entwicklung von C++ Java als C++-Derivat Einführendes Beispiel einer Klasse Vergleichendes Beispiel in Turbo Pascal 15 19 20 23 25 28 2 Lexikalische Elemente und Datentypen 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 Zeichensatz und Operatoren Definition und Deklaration Einfache Datentypen Der Aufzählungstyp enum Abgeleitete Datentypen Konstanten Zeiger Referenzen Typumwandlungen Reihungen Der struct-typ Speicherklassen 3 Ausdrücke und Anweisungen 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Arithmetische Ausdrücke Logische Operatoren Bitoperatoren Zuweisungen Anweisungen Bedingte Anweisungen Wiederholungsanweisungen Die Transfer-Funktionen Das assert()-macro 31 31 34 34 38 39 39 39 41 42 43 44 45 49 49 50 51 52 55 55 57 60 60
4 Funktionen 65 4.1 Deklaration und Definition 65 4.2 Standardfunktionen 66 4.3 Rekursive Funktionen 70 4.4 Die Funktion main() 71 4.5 Call-by-value 72 4.6 Call-by-reference 73 4.7 Zeiger auf Funktionen 74 4.8 Default-Argumente 76 4.9 Inline-Funktionen 76 4.10 Überladen von Funktionen 77 4.11 Template-Funktionen 77 5 Klassen 81 5.1 Definition und Deklaration 81 5.2 Konstruktoren 85 5.3 Destruktoren 89 5.4 Beispiel zur Datenkapselung, 91 5.5 Klasse mit Array 92 5.6 Klasse mit dynamischem Array 93 5.7 Statische Datenelemente 94 5.8 Überladen von Operatoren 96 5.9 Friend-Funktionen 102 5.10 Der this-zeiger 105 5.11 Benutzerdefinierte Ausgabe 108 5.12 Klasse mit Funktionszeiger 109 5.13 Klasse mit Invarianten 111 6 Friend-Klassen 113 6.1 Beispiel aus der Analytischen Geometrie 113 6.2 Beispiel aus der Analysis 116 7 Vererbung 121 7.1 Zugriffsmöglichkeiten 122 7.2 Konstruktoren und Destruktoren 123 7.3 - Beispiele für Sichtbarkeit 125 7.4 Virtuelle Funktionen 127 7.5 Abstrakte Basisklassen 129 7.6 Beispiel aus der Biologie 132 7.7 Beispiel aus der Physik 133 7.8 Mehrfache Vererbung 136 7.9 Virtuelle Basisklassen 139
8 Ein-/Ausgabestrom 8.1 8.2 8.3 8.4 8.5 Die Basisklasse ios Ausgabe Manipulatoren Eingabe Dateibehandlung 9 Relationen zwischen Klassen 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10 Die Assoziation Das Aggregat Die Using-Relation Wechselseitig enthaltende Objekte Die Vererbung Die Instantiation Metaklassen Verschachtelte Klassen Eine Container-Klasse Eine Iterator-Klasse 10 Template-Klassen 10.1 10.2 10.3 10.4 10.5 Template-Klasse Queue Template-Klasse Stack Template-Klasse Polynom Standard Template Library (STL) Numerische Parameterwerte 143 143 144 147 150 153 157 158 159 162 164 166 167 167 167 169 172 175 176 178 180 183 185 11 Ausnahmebehandlung 189 11.1 Eine Probedivision 190 11.2 Ausnahme-Klassen 192 11.3 Ein sicheres Array 194 12 Graphik 197 12.1 Hofstadter-Schmetterling 198 12.2 Der Ikeda-Attraktor 201 12.3 Orthogonale Trajektorien 202 12.4 Ljapunow-Diagramm 206 12.5 Iterierte Funktionssysteme (IFS) 208 13 Programme zur Statistik 213 13.1 Die Binomialverteilung 213 13.2 Die Poisson-Verteilung 215
13.3 Hypergeometrische Verteilung 217 13.4 Normalverteilung 219 13.5 Die t-verteilung 221 13.6 Die x 2 -Verteilung 224 13.7 F-Verteilung 228 13.8 Lineare Regression 230 13.9 Auswertung einer Sterbetafel 234 14 Numerikprogramme 239 14.1 Die Regula falsi 239 14.2 Die Newton-Iteration 242 14.3 Die Richmond-Iteration 245 14.4 Numerische Differentiation 247 14.5 Adaptive Simpson-Formel 249 14.6 Integration nach Gauß 251 14.7 Integration von Tabellenfunktionen 254 14.8 Romberg-Integration 256 14.9 Rutta-Kutta-Fehlberg 258 14.10 Verfahren von Dormand-Prince 260 14.11 Adams-Moulton-Verfahren 262 14.12 Tschebyschew-Approximation 265 14.13 Eine Klasse zur Matrizenrechnung 268 15 Physikprogramme 273 15.1 Gleichgewichtstemperatur der Erde 273 15.2 Energieanteil eines schwarzen Strahlers 276 15.3 Einschaltstrom einer Drosselspule 278 15.4 Die Lorenz-Gleichungen 280 15.5 Das Drei-Körper-Problem 284 15.6 Massenformel von Weizäcker 287 15.7 Dampfdruckkurve 290 15.8 Zustandsgrößen eines Sterns 294 16 Simulationen 16.1 16> 16.3 16.4 16.5 16.6 Räuber-Beute-Modell Epidemie Carnot-Prozeß Gendrift Waldsterben Regierungsspiel 299 300 304 307 310 313 317
Literaturverzeichnis A Internet-Adressen A.l A.2 A.3 A.4 A.5 ANSI C++-Draft FAQ Tools Allgemeines User-Gruppen 321 325 Stichwortverzeichnis 327