ebook img

Die Kunst der Programmierung mit C++: Exakte Grundlagen für die professionelle Softwareentwicklung PDF

1055 Pages·2002·19.789 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Die Kunst der Programmierung mit C++: Exakte Grundlagen für die professionelle Softwareentwicklung

Martin Aupperle Die Kunst der Programmierung mit C++ Aus dem Bereich IT erfolgreich gestalten ...... r-------------------~------------------------------~!--------__" Grundkurs JAVA Projektkompass von Dietmar Abts Softwareentwicklung von Carl Steinweg und Stephen Fedtke Verteilte Systeme von Günther Bengel Datenbankentwurf von Helmut Jarosch OhneCzuC++ I von Peter P. Bothner Das neue PLII für PC, Workstation und Wolf-Michael Kähler und Malnframe von Eberhard Sturm Software Engineering von Reiner Dumke Prozedurale Programmierung von Roland Schneider Kompaktkurs Mikrocontroller von Silvia Limbach Grundkurs Algorithmen und Datenstrukturen In JAVA Team Excellence effizient von Andreas Solymosi und Ulrich Grude und verständlich von Franz J. Linnenbaum Die Kunst der Programmierung mitC++ Der CMs-Guide von Martin Aupperle von Jürgen Lohr und Andreas Deppe Effizient Programmieren mit C#und.NET von Andreas Solymosi und Peter Solymosi 1'·" www.vieweg-it.de Martin Aupperle Die Kunst der Programmierung mitC++ Exakte Grundlagen für die professionelle Softwareentwicklung 2., überarbeitete Auflage IJ vleweg Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein Titeldatensatz fUr diese Publikation ist bei Der Deutschen Bibliothek erhăltlich. 1. Auflage Januar 1997 Die erste Auflage ist unter dem Titei "Die Kunst der objektorientierten Programmierung mit C++" erschienen. 2., uberarbeitete August 2002 Alle Rechte vorbehalten © Springer Fachmedien Wiesbaden 2002 Ursprlinglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweiglWiesbaden 2002 www.vieweg.de Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschlitzt. Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulăssig und strafbar. Das gilt insbesondere fur Vervielfăltigungen, Obersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wăren und daher von jedermann benutzt werden dlirften. Hochste inhaltliche und technische Qualităt unserer Produkte ist unser ZieI. Bei der Produktion und Auslieferung unserer Bucher wollen wir die Umwelt schonen: Dieses Buch ist auf săurefreiem und chlorfrei gebleichtem Pa pier gedruckt. Die EinschweiBfolie besteht aus Polyăthylen und damit aus organischen Grundstoffen, die weder bei der Herstellung noch bei der Verbrennung Schadstoffe freisetzen. Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de Umschlagbild: Nina Faber de.sign, Wiesbaden ISBN 978-3-528-15481-3 ISBN 978-3-663-07766-4 (eBook) DOI 10.1007/978-3-663-07766-4 Vorwort Noch ein C++ - Buch? Ist das notwendig? Heute geht es doch um Ja va, Net-Services, C#, Mobile Devices oder wie die Buzzwords des Jah res 2002 noch alle heißen mögen. Ist C++ nicht überkommen? Hört man nicht Grausames über Projekte, die mit C++ realisiert wurden? Ja, alles richtig. Trotzdem gibt es einige gewichtige Gründe, die mich dazu veranlasst haben, dieses Buch zu schreiben. Da wäre zunächst die große Nachfrage aus der Leserschaft des Vorgängers Die Kunst der Objektorientierten Programmierung mit C++, die sich ein Nach folgewerk wünschten. Dies wurde mir in zahllosen emails sowohl von Lesern, neuen Interessenten als auch vom Verlag mitgeteilt. Zum zweiten ist der Trend zum Einsatz von C++ in der Praxis un gebrochen. Noch immer ist C++ die am meisten eingesetzte und da mit wohl wichtigste Programmiersprache zur Erstellung neuer Soft ware. Die Stellenanzeigen (z.B. in EDV-Fachzeitschriften) sprechen eine deutliche Sprache: mehr als Java-Kenntnisse werden fundierte C++ Kenntnisse nachgefragt (Spezialprojekte einmal ausgenommen). Dies kann ich auch aus verschiedenen Consulting-Projekten bestäti gen: in nahezu allen größeren Vorhaben waren die zentralen Ge schäftsprozesse in C++ realisiert. Java oder andere Sprachen wurden meist für Spezialbereiche wie z.B. die Präsentationslogik verwendet. Befindet man sich in einem solchen Projekt, hat man es schnell mit einer halben Million Codezeilen zu tun, in denen sich die unter schiedlichsten Stile finden lassen - man findet Perlen, aber auch wil de Konstruktionen, die eher aus langen Versuch- und Irrtum-Sit zungen zu entstammen scheinen als aus ingenieurmäßigem Vorge hen. Und genau hier sehe ich den Bedarf für ein gutes Buch: Zur pro fessionellen Programmierung mit C++ benötigt man professionelles Handwerkszeug. Dies umfasst einmal die Kenntnis der Sprachmittel, die C++ für den Programmierer bereithält. Dies allein ist jedoch nicht ausreichend, wie die große Anzahl teurer, schlecht wartbarer oder fehleranfälliger Programme zeigt. Was oft vernachlässigt wird, ist die Kenntnis über die korrekte Anwendung eines Sprachmittels zur Lö sung einer gegebenen Aufgabe. Die ungeeignete Herangehensweise ist oft der Grund für mangelnde Softwarequalität. VI Vorwort Der Einsteiger ist nach der Lektüre eines Lehrbuches oder nach dem Besuch eines Kurses überwältigt von der Fülle der Ausdrucksmög lichkeiten, die die Sprache bietet. Die Erfahrung zeigt, dass dann Konstruktionen wie Überladen von Funktionen, selbstdefinierte Ope ratoren etc. viel zu häufig und undifferenziert eingesetzt werden - eben weil man das neu Gelernte auch anwenden will. Ich habe versucht, mit diesem Buch der Gefahr zu begegnen. Das Buch beschreibt daher nicht nur die Sprachelemente der Sprache C++ sorgfältig und vollständig, sondern gibt zu jedem Konstrukt auch Hinweise für den Einsatz. Fallstudien und ein durchgängiges Projekt unterstützen die Anwendung. Dadurch wird dem ernsthaften Pro grammierer das Handwerkszeug vermittelt, qualitativ hochwertige Programme mit professioneller Technik zu entwickeln. Meiner Beurteilung nach wird die Bedeutung der Sprache C++ zur industriellen Softwareentwicklung tendenziell weiter zunehmen. Gründe dafür sind u.a. das Abflauen des Java-Hypes, aber vor allem die überaus erfolgreiche Standardisierung der Sprache, die nach nur 8 Jahren im Jahre 1998 abgeschlossen werden konnte. Die Standardisie rung verhindert einen Wildwuchs an Erweiterungen, Dialekten etc., die z.B. wesentlich zum Misserfolg der Sprache PL/1 beigetragen ha ben. Compilerbauer wissen nun, was sie zu tun haben. Projektmana ger können den Compilerhersteller wechseln, ohne gleich das ganze Projekt zu gefährden. Die Erstellung allgemeinverwendbarer Biblio theken wird einfacher. Die Ausbildung wird einfacher, und nicht zu letzt bilden sich Standard-Vorgehensweisen zur Lösung von Standard Aufgabenstellungen heraus (sog. patterns, deutsch etwa: Muster). Ursprünglich war dieses Buch als Nachfolger der Kunst der Objektori entierten Programmierung mit C++ geplant. Als Ziel hatte ich mir vorgenommen, auch die nicht-objektorientieren Aspekte der Sprache zu berücksichtigen - schließlich ist C++ eine hybride Programmier sprache, in der man auch prozedural programmieren kann. Als Re sultat sind im vorliegenden Buch 16 Kapitel hinzugekommen, die vor allem die klassischen "Brot&Butter"-Elemente der Sprache behandeln. Auf Grund der Fülle des Materials ist nun aber eine Zweiteilung er forderlich geworden. In diesem Buch werden die Sprachmittel der Sprache vorgestellt und mit Beispielen und Fallstudien unterlegt. In einem weiteren Band geht es dann um die Standardbibliothek sowie um den gesamten Themenkreis der Programmiertechniken. Insofern VII sind beide Bände unabhängig voneinander verwendbar, bilden aber trotzdem ein Ganzes. Ich möchte mich an dieser Stelle bei den Personen, die mich in den letzten Jahren in irgendeiner Weise bei der Erstellung des Buches un terstützt haben, bedanken. Zunächst einmal wäre hier meine Familie zu nennen, die auf mich länger verzichten musste als es ihr und mir lieb war, und die mir den Rückhalt und den freien Kopf für ein Un terfangen dieser Größenordnung gegeben hat. Als nächstes möchte ich mich bei meinen Reviewern bedanken, die zahllose kleinere und größere Fehler und Unstimmigkeiten aufgedeckt haben. Weiterer Dank gebührt den vielen aktiven Mitgliedern der Newsgroups comp.lang.c++.moderated und comp.std.c++.moderated, die sich die Zeit genommen haben, meine teils sehr speziellen Fragen zu beant worten. Insbesondere die Diskussionen in diesen Newsgroups haben meine Kenntnisse der Materie wesentlich erweitert. Schließlich ver dienen auch die zahlreichen Softwerker Erwähnung, die mir mit ihrer Sichtweise bis dahin unbekannte Einblicke in Vorgänge bei der Ent wicklung von Software ermöglicht haben. Erwähnen möchte ich auch den Support der Fa. Comeau Computing, die einige knifflige Fragen zur Standardkonformität bestimmter Programmkonstruktionen beant worten konnte. Zu guter letzt geht mein Dank an den Verlag Vieweg, der mir die Möglichkeit gab, mehrere zugesagte Abgabetermine zu überziehen um so das bestmögliche Ergebnis erzielen zu können. VIII Vorworl Inhaltsverzeichnis VORWORT V INHALTSVERZEICHNIS IX EINFÜHRUNG Inhalt 2 Schwerpunkt 4 C++ und C 5 C++ und Java 6 C++und C# 8 Sprache und Bibliothek 9 Compilerversionen 9 Sprachversionen 10 Pre-Standard und Standard 12 Voraussetzungen 12 Support über das Internet 12 Literatur 13 Einige Anmerkungen 16 C++ ist nichts anderes als C mit einigen Verbesserungen 16 Java/C/Basic/Smalltalk/PerllDelphi/Lisp ist besser als C++! 16 Aber C++ ist so komplex! 17 Aber C++ ist langsam! 18 Aber C++ ist nicht plattformunabhängig! 19 1 DAS ERSTE PROGRAMM 21 Hello, world! 21 Im Einzelnen 22 Eigene Experimente 26 2 HINTER DEN KULISSEN 27 Der Übersetzungsvorgang 27 Der Begriff "Übersetzungseinheit" 27 Übersetzungseinheiten und Dateien 28 Der Präprozessor 28 Separate Übersetzung und der Binder 30 Die Aufgabe des Binders 32 x Inhaltsverzeichnis Statisches und dynamisches Binden 32 Native und CFront-Compiler 35 Vorübersetzte Reader 36 3 FUNDAMENTALE TYPEN 39 Übersicht 39 Integrale- und Fließkomma-Typen 40 Ganzzahlige Typen 40 Die Spezifizierer short und long 41 Die Spezifizierer signed und unsigned 42 Literale 44 Literale im Oktal-und Hexadezimalsystem 45 Spezifizierer für Literale 46 Fließkomma-Typen 47 Der Spezifizierer long 48 Rundungseffekte 48 Spezielle Fließkommawerte 51 Literale 52 Zeichentypen 53 Die Spezifizierer signed und unsigned 53 Größe eines char und Sprachvarianten 55 Unicode und wchar_t 55 Literale 56 Spezielle Literale ("Escape-Sequenzen ") 56 Zeichenketten 59 Zeichenketten-Literale 59 Zusammenfassung von String-Literalen 62 Fortsetzung von String-Literalen 62 Unicode (wide-character )-String-Literale 63 Wahrheitswert-Typ 63 Wahrheitswerte und numerische Typen 64 Größen und Grenzwerte fundamentaler Typen 64 Der Operator sizeof 65 Das Verhältnis der Größen 66 Wertebereiche 67 Repräsentation von Fließkommanwerten 69 Die Dateien limits.h undjloat.h 69 Die Datei limits 70 Spezielle Werte für Fließkommatypen 71 Weitere Datentypen 72 Typen unter anderen Namen 72 Compilerspezifische Typen 74

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.