Schneeweiß | Moderne C++ Programmierung | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 413 Seiten, Web PDF

Reihe: Xpert.press

Schneeweiß Moderne C++ Programmierung

Klassen, Templates, Design Patterns
1. Auflage 2006
ISBN: 978-3-540-45954-5
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark

Klassen, Templates, Design Patterns

E-Book, Deutsch, 413 Seiten, Web PDF

Reihe: Xpert.press

ISBN: 978-3-540-45954-5
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark



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.

Schneeweiß Moderne C++ Programmierung jetzt bestellen!

Zielgruppe


Professional/practitioner


Autoren/Hrsg.


Weitere Infos & Material


Der Präprozessor.- Standarddatentypen.- Zeiger.- Arrays.- Referenzen.- Typenkonvertierung.- Operatoren.- Funktionsüberladung.- Inlining.- Klassen.- Attribute.- Methoden.- Konstruktoren.- Destruktoren.- Grundregeln zur Klassendeklaration.- Verschachtelte Typen.- Der Scope-Operator.- "friend"-Deklarationen.- Statische Methoden und Attribute.- Vererbung.- Virtuelle Funktionen und Polymorphismus.- Mehrfachvererbung.- Virtuelle Vererbung.- Operatorüberladung.- Zugriffsoperatoren.- Die Operatoren new und delete.- Exception Handling.- Die Rolle von Patterns und Idiomen.- Modularisierung eines C++ Projektes.- Namensräume.- Generische Programmierung in C++.- Funktionstemplates.- Klassentemplates.- Templatespezialisierung.- Methodentemplates.- Templatestrategien.- Aspektorientierte Programmierung.- Die C++ Standardbibliothek.- Die Streams.- Die STL.- Container, Iteratoren und Algorithmen.- List.- Vector.- Map.- Containeradapter.- Allokatoren.- Die Stringklasse std::string.- Autopointer.


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.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.