C++ Einführung und professionelle Programmierung von Ulrich Breymann 8., erweiterte Auflage Hanser München 2005 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 40253 9 schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
C++ Ulrich Breymann Einführung und professionelle Programmierung ISBN 3-446-40253-5 Vorwort Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40253-5 sowie im Buchhandel
Vorwort Historisches C++ wurde etwa ab 1980 von Bjarne Stroustrup als objektorientierte Sprache entwickelt, damals»c mit Klassen«genannt; die Bezeichnung C++ existiert seit 1983. 1998 wurde C++ von der ISO standardisiert. C++ steht für eine evolutionäre Entwicklung von C. ++ ist der Inkrement-Operator in C, der den Wert einer Variablen um 1 erhöht. C ist eine der am weitesten verbreiteten Programmiersprachen. Wenn in technischen Bereichen Kenntnisse einer Programmiersprache gefragt sind, wird meistens Erfahrung in C++ als Nachfolgesprache von C gewünscht. C++ enthält den größten Teil von C als Untermenge. C++ unterstützt die rechnerinterne Darstellung von Objekten der realen Welt sowie die Wiederverwendbarkeit von Software. Viele große und kleine Firmen setzen C++ ein. Für wen ist dieses Buch geschrieben? Dieses Buch ist für alle geschrieben, die einen kompakten und gleichzeitig gründlichen Einstieg in die Konzepte und Programmierung mit C++ suchen. Es ist für Anfänger 1 gedacht, die noch keine Programmiererfahrung haben, aber auch für Programmierer, die diese Programmiersprache kennen lernen möchten. Nach dem Einstieg in die objektorientierte Programmierung werden auch fortgeschrittene Konzepte von C++ beschrieben und an Beispielen demonstriert. Ziel des Buchs Das Buch soll eine Einführung in die C++-Programmiersprache und die Benutzung der C++-Standardbibliothek bieten. Das Ziel des Buchs ist es, C++ so darzustellen, dass möglichst bald ein Verständnis des objektorientierten Ansatzes entwickelt wird und rasch programmiert werden kann. Gleichzeitig soll die Darstellung möglichst kompakt sein, ohne dass die Lesbarkeit leidet. C++ wird als standardisierte Programmiersprache unabhängig von speziellen Produkten beschrieben. Es wird nicht von C ausgegangen und C-Kenntnisse werden nicht vorausgesetzt. Das auf der beiliegenden CD-ROM vorhandene C++-Entwicklungssystem bietet eine Dokumentation als Hilfestellung zur Handhabung. Das Buch eignet sich auch als Begleitbuch zu einer Vorlesung oder zu Kursen. Fortgeschrittenen und professionellen Programmierern dient das Buch als Nachschlagewerk bei der täglichen Arbeit, was durch die Referenz zur C++-Standard- 1 Geschlechtsbezogene Formen meinen hier und im Folgenden stets Männer und Frauen.
8 Vorwort bibliothek (Teil 2 des Buchs), ein detailliertes Inhaltsverzeichnis und ein umfangreiches Stichwortverzeichnis unterstützt wird. Die beiliegende CD-ROM enthält eine ausführliche Dokumentation des Autors zur C++-Standard Template Library (ca. 300 Seiten). Aufbau Im Maschinenbau und in der Elektrotechnik sind Bauelemente die Grundlage der Konstruktion. Objekte in C++ werden als Bauelemente zur Konstruktion von Software verstanden (Software-»Lego«). Die Objekte selbst bestehen aber auch aus Bauelementen, nämlich aus Daten und den Operationen, auch Funktionen oder Methoden genannt, die mit diesen Daten arbeiten. Daher werden erst diese Bauelemente behandelt, um danach Objekte als Bauelemente auf höherem Niveau konstruieren zu können. Aus didaktischen Gründen werden grundlegende Standardbausteine, nämlich die abstrakten Typen vector und string der C++- Standardbibliothek, früh eingeführt. Diese Elemente erlauben sinnvolle Beispiele einiger Komplexität, ohne dass Kenntnisse über ihre Implementierung oder über Zeiger vorliegen müssen. Durchaus wichtige, aber sehr niedrigsprachliche C- Konstruktionen wie Zeiger und C-Arrays können daher zugunsten von programmiersprachlichen Konzepten und der Objektorientierung nach hinten geschoben werden. Die Wirkungsweise vieler Klassen der C++-Standardbibliothek wird an vereinfachten Beispielen demonstriert. Daraus ergibt sich der grundlegende Aufbau des Buchs: Nach einer Einführung, die die Objektorientierung kurz streift, werden die Grundlagen beschrieben, nämlich Datenstrukturen und Funktionen, um dann gezielt auf die Objektorientierung einzugehen. Anschließend werden die besprochenen Themen erweitert und vertieft. Es wird versucht, den Stoff einschließlich der Beispiele hierarchisch möglichst so anzuordnen, dass Verweise auf noch nicht behandelte Teile nur selten nötig sind. Dadurch etwas»unelegant«geratene Beispiele werden später wieder aufgegriffen, um zu zeigen, wie man es besser machen kann. Tipp Wo finden Sie was? Programmieren lernt man nicht nur durch Lesen, sondern vor allem durch Programmieren, also durch eigenes Tun! Es wird Ihnen daher ans Herz gelegt, die Beispiele zu bearbeiten und zu verstehen sowie selbst Beispiele zu programmieren. Dabei wird häufig das Problem auftauchen, in diesem nicht ganz dünnen Buch auf unbekannte Ausdrücke zu stoßen. Es gibt die folgenden Hilfen: Erklärungen zu Begriffen aus der objektorientierten Programmierung sind zusätzlich im Glossar (Seite 715) aufgeführt. Es gibt ein recht umfangreiches Stichwortverzeichnis (ab Seite 723) und ein sehr detailliertes Inhaltsverzeichnis. Die Referenz zur C++-Standardbibliothek (Teil 2 des Buchs) ist zusätzlich als elektronischer Hypertext auf der CD-ROM vorhanden, sowie eine ausführliche Dokumentation zur C++-Standard Template Library als PDF-Datei.
Vorwort 9 Anregungen und Kritik sind erwünscht. Wenn Sie Fehler mitteilen oder Anregungen und Kritik äußern möchten, können Sie den Autor über den Verlag oder direkt über E-Mail erreichen (breymann@hs-bremen.de oder mail@ubreymann.de). Zu guter Letzt An einem Lehrbuch sind immer mehrere beteiligt: Vom Autor werden viele Elemente zusammengetragen, variiert und verbunden, um ein Thema geschlossen darstellen zu können. Die Mitarbeit im DIN-Arbeitskreis zur Standardisierung von C++ trug wie die im Text und im Literaturverzeichnis genannten Quellen dazu bei. Den Autoren sei an dieser Stelle herzlich gedankt, ebenso den Menschen, die diese und die vorhergehenden Auflagen des Buchs durch Hinweise und Anregungen verbessern halfen. Insbesondere danke ich Prof. Dr. Ulrich Eisenecker von der Universität Leipzig, Herrn Johannes Knaupp von der Berufsakademie Stuttgart, meinem Kollegen Prof. Dr. Jürgen Lübcke von der Hochschule Bremen, Prof. Dr. Bodo Bartning von der FHO Emden, sowie Herrn Ansgar Steinkamp von der Universität Dortmund für sachkundige Kritik und Anregungen. Frau Margarete Metzger und Frau Irene Weilhart vom Hanser Verlag danke ich für die gute Zusammenarbeit.