Îçҹ̽»¨

Objektorientierte Programmierung mit C++

Diese Vorlesung führt in die objekt-orientierte Programmierung mit C++17 ein. Hierbei stehen nach einer Einführung die Techniken im Vordergrund, die von anderen objekt-orientierten Programmiersprachen wie insbesondere Java nicht unterstützt werden. Dazu gehören insbesondere der statische Polymorphismus und die Meta-Programmierung, die viele Entscheidungen und Anpassungen in die Übersetzzeit verlagern. Zielsetzung ist die Erlernung objekt-orientierter Modellierungstechniken, die ein hohes Maß an Abstraktion, Flexibilität und Wiederanwendbarkeit ermöglichen, ohne dabei Kompromisse zu Lasten der Performance eingehen zu müssen. Die Vorlesung bietet daher eine Grundlage für die Anwendung von C++ im Bereich des High Performance Computing. Im SS 2019 gibt es im Anschluss die Vorlesung Parallele Programmierung mit C++.

Inhalt

  • Einführung in OO-Design, UML und Design by Contract
  • Einführung in C++
  • Dynamischer Polymorphismus in C++
  • Generische Module auf Basis von Templates
  • Statischer Polymorphismus auf Basis von Templates
  • Metaprogrammierung, Funktionsobjekte und λ-Ausdrücke
  • STL-Bibliothek, iostreams-Bibliothek
  • Potentiale und Auswirkungen optimierende Übersetzer bei C++

Termine

  • Vorlesung: Dienstag, 14–16 Uhr, Helmholtzstraße 22, Raum E.03
  • ܲú³Ü²Ô²µ±ð²Ô: Donnerstag, 16–18 Uhr, Helmholtzstraße 18, Poolraum E.44
  • Die erste Vorlesung findet am Dienstag, den 17. April 2018, statt.

Die ܲú³Ü²Ô²µ±ð²Ô am 19. Juli finden in der Helmholtzstraße 22, Raum E.03, statt.

Voraussetzungen

Vorausgesetzt werden die Kenntnisse aus einer Grundvorlesung für Informatik. Insbesondere sollten elementare Algorithmen und Datenstrukturen bekannt sein und praktische Erfahrungen mit einer Programmiersprache bestehen (z.B. Java). In den ܲú³Ü²Ô²µ±ð²Ô wird auf der Kommandozeile unter UNIX bzw. Linux gearbeitet. Entsprechende Kenntnisse wären vorteilhaft.

±Ê°ùü´Ú³Ü²Ô²µ±ð²Ô

Die Vorlesung ist ein Wahlpflichtmodul im Modulhandbuch der Master-Studiengänge Informatik, Mathematik, Wirtschaftsmathematik und Computational Science and Engineering. Teilweise ist die Vorlesung in den Modulhandbüchern der entsprechenden Bachelor-Studiengänge. Vorleistungen gibt es keine. Zu den folgenden Terminen werden schriftliche ±Ê°ùü´Ú³Ü²Ô²µ±ð²Ô angeboten:

  • Freitag, den 3. August 2018, 10:00 bis 12:00 Uhr, N24, Hörsaal H12
  • Montag, den 1. Oktober 2018, 08:00 bis 10:00 Uhr, Helmholtzstraße 18, Raum 1.20

Es steht eine zur Verfügung, die ich aber in der letzten Vorlesungswoche noch etwas an die aktuelle Vorlesung anpassen werde.

Vorlesungen

Folien aus der Vorlesung:

  • 17. April 2018:
  • 19. April 2018:
  • 24. April 2018:
  • 8. Mai 2018:
  • 15. Mai 2018:
  • 22. Mai 2018:
  • 29. Mai 2018:
  • 5. Juni 2018:
  • 12. Juni 2018:
  • 19. Juni 2018:
  • 26. Juni 2018:
  • 3. Juli 2018: Beispiele: (kleine Sprache mit Value als varianter Datenstruktur), (kleine Sprache mit einer Typhierarchie zu Value), (doppelt verkettete Liste mit intelligenten Zeigern)
  • 10. Juli 2018: Beispiel: ,
  • 17.  Juli 2018:
  • (Stand: 17. Juli 2018)

ܲú³Ü²Ô²µ±ð²Ô

  • Melden Sie sich bitte für die Teilnahme in den ܲú³Ü²Ô²µ±ð²Ô bei  an.
  • Die ܲú³Ü²Ô²µ±ð²Ô sind zeitintensiv und integraler Teil einer praxisorientierten Vorlesung.

Übungsaufgaben und -sitzungen:

  • 19. April 2018:
  • 26. April 2018: (Erste Erfahrungen mit Klassen in C++), µþ±ð¾±²õ±è¾±±ð±ô±ôö²õ³Ü²Ô²µ±ð²Ô: und
  • 3. Mai 2018:
  • 17. Mai 2018: (Erstellung eines UML-Klassendiagramms) und , Beispiellösung: und
  • 24. Mai 2018: (Entwicklung einer abstrakten Klasse und zugehöriger polymorpher Implementierung mit dynamischen Nachladen), Beispiellösung: (aktualisiert am 4. Juli: Makefile unterstützt jetzt auch Linux und macOS)
  • 7. Juni 2018: und (Entwicklung einer Template-basierten Container-Klasse) und , µþ±ð¾±²õ±è¾±±ð±ô±ôö²õ³Ü²Ô²µ±ð²Ô: Blatt 4: , Blatt 5:
  • 14. Juni 2018: (Virtuelle Container) und µþ±ð¾±²õ±è¾±±ð±ô±ôö²õ³Ü²Ô²µ±ð²Ô: ,
  • 21. Juni 2018: (Lambda-Ausdrücke, Vorlage: ) und , Beispiellösung:
  • 28. Juni 2018:
  • 5. Juli 2018:
  • 12. Juli 2018: (Metaprogrammierung, Vorlage: ) und , Beispiellösung:

Materialien

Kontakt

Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.23