dummies
 

Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur ebooks mit Firmenlizenz anzeigen:

 

Moderne C++ Programmierung - Klassen, Templates, Design Patterns

Ralf Schneeweiß

 

Verlag Springer-Verlag, 2006

ISBN 9783540459545 , 413 Seiten

Format PDF, OL

Kopierschutz Wasserzeichen

Geräte

6,99 EUR


 

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.