Moderne C++ Programmierung (eBook)

Klassen, Templates, Design Patterns
eBook Download: PDF
2006 | 2006
XII, 413 Seiten
Springer Berlin (Verlag)
978-3-540-45954-5 (ISBN)

Lese- und Medienproben

Moderne C++ Programmierung - Ralf Schneeweiß
Systemvoraussetzungen
6,99 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen

C++ ist eine objektorientierte Programmiersprache, neben der Objektorientierung gewinnt aber die generische Programmierung mittels parametrisierbaren Klassen oder Templates zunehmend an Bedeutung, da diese Methode große Vorteile gegenüber der objektorientierten aufweist, wenn es darum geht, wiederverwendbaren Code zu schreiben.

Dieses Buch liefert eine fundierte Darstellung des modernen Programmdesigns in C++ gemäß dem ANSI/ISO-Standard. Der Autor gibt dabei zunächst ein kompaktes Repetitorium der grundlegenden Sprachelemente von C++ und erläutert dann detailliert die klassische objektorientierte Modellierung sowie die modernen Techniken der generischen Programmierung mittels Templates und Design Patterns.

Vorwort 7
Danksagung 8
Inhaltsverzeichnis 9
1 Einführung 12
2 DieSprache C++ 16
2.1 Geschichte und Paradigmenwandel 16
2.2 Grundlagen 20
2.2.1 Bezeichner in C++ 23
2.2.2 Der Präprozessor 24
2.2.3 Variablen 32
2.2.4 Standarddatentypen 33
2.2.5 Literalkonstanten 36
2.2.6 Konstanten 37
2.2.7 Aufzählungen 38
2.2.8 Arrays 40
2.2.9 Zeiger 40
2.2.10 Referenzen 47
2.2.11 Typenkonvertierung 48
2.2.12 Ausdrücke 50
2.2.13 Operatoren 51
2.2.14 Anweisungen 55
2.2.15 Kontrollstrukturen 56
2.2.16 Funktionen 60
2.2.17 Funktionsüberladung 65
2.2.18 Funktions - Inlining 67
2.2.19 Makros 69
2.2.20 Dynamische Speicherallokation 70
2.2.21 Strukturen und Klassen 78
2.2.22 Typenkonvertierungmit Konstruktoren 102
2.2.23 Globale, automatischeund dynamische Instanziierung 105
2.2.24 Speicherklassen 111
2.2.25 Der Scope - Operator 117
2.2.26 Verschachtelte Typen 121
2.2.27 Die friend - Deklaration 122
2.2.28 StatischeMethoden und Attribute 123
2.2.29 Vererbung 125
2.2.30 Virtuelle Methoden und Polymorphismus 132
2.2.31 Operatoren der Typenkonvertierung 138
2.2.32 Mehrfachvererbung 145
2.2.33 Virtuelle Vererbung 149
2.2.34 Das Schlüsselwort const 152
2.2.35 Operatorüberladung 156
2.2.36 Exception Handling 166
3 Die Objektorientierte Programmierung mit C++ 184
3.1 Der Klassenbegriff 185
3.2 Die Rolle von Patterns und Idiomen 187
3.2.1 Der Iterator 189
3.2.2 Das Zustandsmuster 190
3.2.3 Das Singleton -Muster 198
3.3 Datenstrukturen und Containerklassen 208
3.3.1 Die Liste 209
3.3.2 Der Vektor 219
3.3.3 Dynamische Container und das Problemder Speicherfragmentierung 221
3.3.4 Verfeinerung des Zugriffs durch überladene Operatoren 222
3.4 Arbeitenmit Invarianten 224
4 Generische und generative Programmierung mit C++ 232
4.1 Templates 233
4.1.1 Funktionstemplates 234
4.1.2 Klassentemplates 237
4.1.3 Methodentemplates 238
4.1.4 Instanziierung von Templates 240
4.1.5 Member- Templates 241
4.1.6 Spezialisierung von Templates 242
4.1.7 Partielle Spezialisierung 243
4.1.8 Vorgabeargumentefür Templateparameter 246
4.1.9 Abhängige und qualifizierte Namen 247
4.1.10 Explizite Qualifizierung von Templates 252
4.1.11 Barton- Nackman- Trick 253
4.1.12 Das Schlüsselwort typename 255
4.1.13 Template - Templateparameter 258
4.1.14 Container mit Templates 262
4.1.15 Smart Pointer mit Templates 266
4.1.16 Projektorganisationmit Templates 272
4.2 Konzepte für den Einsatz von Templates 279
4.2.1 „Policy Based Design“ 281
4.2.2 Idiome für die Template - Programmierung 282
4.2.3 Compiletime - Assertions 283
4.3 Aspektorientierte Programmierung 284
5 Die C++ - Standardbibliothek 288
5.1 Die Geschichte der Standardbibliothek 288
5.2 Die Teilbereiche der Standardbibliothek 289
5.2.1 Die Streams 291
5.2.2 Formatierungen auf einem ostream 296
5.2.3 Die Manipulatoren 297
5.2.4 Die File - Streams 300
5.2.5 Die String- Streams 301
5.2.6 Die STL 303
5.2.7 Die Stringklasse std::string 337
5.2.8 Pseudocontainer für optimiertes Rechnen 343
5.2.9 Autopointer 353
6 Das Softwareprojekt mit C++ 358
6.1 Modularisierung eines C++ - Projekts 358
6.1.1 Der Umgang mit Headerdateien 359
6.1.2 Namensräume 364
6.1.3 Das argumentenabhängigeLookup - Verfahren 372
6.1.4 Einige Anmerkungen zumLinker 374
6.1.5 Überladen der Operatoren new und delete 378
6.2 Persistenz und Serialisierung 385
6.3 Systemprogrammierungmit C++ 388
6.3.1 Einfaches Objektpooling 388
6.3.2 Nebenläufige Programmierung 393
Literatur 406
Abbildungsverzeichnis 408
Listings 410
Index 420

4 Generische und generative Programmierung mit C++ (S. 221-222)

Mit der Einführung von Templates in C++ hielt auch gleich ein ganz anderes Programmier-Paradigma Einzug in die Sprache. Templates stellen nichts zur Verfügung, das die Objektorientierte Programmierung in irgendeiner Weise unterstützen würde. Man muss in der Templateprogrammierung mit Vorgehensweisen arbeiten, die nichts mit der Objektorientierung zu tun haben. Doch welche Vorgehensweisen sind es dann, die man in der Templateprogrammierung einsetzen kann?

Eisenäcker und Czarnecki haben diese Frage in ihrem Buch „Generative Programming. Methods, Tools and Applications." [CzarneckiEisenecker00] etwas genauer untersucht und einen theoretischen Unterbau erarbeitet. Deshalb seien an dieser Stelle einigewichtige Ideen aus der genannten Publikation dargestellt: DieTemplateprogrammierungwirdauch gerne als„generische" Programmierung oder als „generative" Programmierung bezeichnet. Dabei bezeichnen dieAdjektive generisch und generativ zwei unterschiedlicheAspekte.Generisch bezeichnet die Anpassbarkeit eines Moduls, einer Komponente oder einfach eines Stücks Software an unterschiedliche Gegebenheiten und Anforderungen.

Generativ dagegen bedeutet dieMöglichkeit, etwas automatisch erzeugen zu lassen. Die Entwicklung von Vorlagen zur Erzeugung weiteren Codes und deren Nutzung bezeichnet man als generative Programmierung. BeideAspekte sind Domänen der Templateprogrammierung mehr als der Objektorientierung.Während die Objektorientierung eine Technologie der Strukturierung von Software ist, ist die generische und die generative Programmierung eine Technologie umWiederverwendbarkeit von Code zu erreichen. Auch wennWiederverwendbarkeit als Schlagwort in fast allen Lehrbüchern zur Objektorientierung genannt wird, finden sich doch nur sehr wenige objektorientierte Techniken, die speziell die Wiederverwendbarkeit zum Ziel haben.DieWiederverwendbarkeit bleibt in objektorientierten Projekten meist auf dem Stand, auf dem sie in Projekten mit strukturierter Programmierung auch schon war.Anpassbare – generische – Codeteile sind zur Wiederverwendung geschrieben. Erzeugende – generative – Codeschablonen sind auch in ihrer Rolle zurWiederverwendung geschrieben. Da Templates in C++ zur Compilezeit abgearbeitet werden, beziehen sich sowohl die generischen wie auch die generativen Fähigkeiten auf diese Zeitphase.

Es ist in C++ grundsätzlich der Compiler, der die generischen und generativen Fähigkeiten besitzen muss, die mit den Templates genutzt werden. Wie man diese Fähigkeiten strukturiert nutzt, haben die Autoren von [CzarneckiEisenecker00] auch ein Stück weit erarbeitet.AndreiAlexandrescu ist mit seiner Publikation „Modern C++ Design. Generic Programming and Design Patterns Applied." [Alexandrescu01] auf diesem Weg noch ein Stück weiter gegangen und hat einigeMethoden vorgeschlagen,wie Templates nutzbringend in Framework- und Applikationsentwicklung einzusetzen sind. Eines seiner bekanntesten Konzepte ist das „Policy Based Design", das im Prinzip auf einem Template-basierten Strategiemuster beruht und einen aspektorientierten Ansatz in C++ einführt.

4.1 Templates

In diesem Abschnitt wird die Syntax der Template-Programmierung behandelt, ohne auf deren Bedeutung für den Systementwurf einzugehen. Diese Aufgabe übernimmt der Abschnitt 4.2 ab Seite 268. Hier werden also die wesentlichen Regeln für die Codierung aufgelistet und deren Syntax durchgesprochen, damit an späterer Stelle darauf verwiesen werden kann.DieTemplates waren noch nicht von Anfang an Bestandteil der Sprache C++. Sie wurden erst Anfang der 90er Jahre in die Beschreibung der Sprache aufgenommen. Die Unterstützung durch die damaligen Compiler war noch eine ganz andere Sache.Von Anfang an hatten man in der Template-Programmierung mit den unterschiedlichen Interpretationen durch die Compiler zu kämpfen – ein Problem, das auch heute nochaktuell ist.InAbschnitt 4.2 ist beschrieben,dass die Template-Programmierung die eigentliche Technik zum Erreichen der Wiederverwendbarkeit in C++ ist.

Erscheint lt. Verlag 27.9.2006
Reihe/Serie Xpert.press
Zusatzinfo XII, 413 S. 70 Abb.
Verlagsort Berlin
Sprache deutsch
Themenwelt Informatik Programmiersprachen / -werkzeuge C / C++
Mathematik / Informatik Informatik Software Entwicklung
Schlagworte Aspektorientierte Programmierung • Attribut • C++ • Design Patterns • Generische Programmierung • Instanziierung • Mehrfachvererbung • Objektorientierte Programmierung • Objektorientierung • Polymorphie • Programmiersprache C++ • Referenz • STL • Templates • Vererbung
ISBN-10 3-540-45954-5 / 3540459545
ISBN-13 978-3-540-45954-5 / 9783540459545
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)
Größe: 2,4 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das umfassende Handbuch

von Torsten T. Will

eBook Download (2024)
Rheinwerk Computing (Verlag)
49,90
Das umfassende Handbuch

von Jürgen Wolf; René Krooß

eBook Download (2023)
Rheinwerk Computing (Verlag)
49,90
C++ lernen - professionell anwenden - Lösungen nutzen

von Ulrich Breymann

eBook Download (2023)
Carl Hanser Fachbuchverlag
49,99