Objektorientierte Programmierung mit C++

Diese Vorlesung führt in die objekt-orientierte Programmierung mit C++14 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 Grad 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 2017 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 10–12 Uhr, Helmholtzstraße 22, Raum E.04
  • Übungen: Donnerstag 16–18 Uhr, Helmholtzstraße 18, Raum E.20

Die Vorlesung am 10. Januar fällt krankheitsbedingt aus.

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 Übungen wird auf der Kommandozeile unter UNIX bzw. Linux gearbeitet. Entsprechende Kenntnisse wären vorteilhaft.

Prüfungen

Die Vorlesung ist ein Wahlpflichtmodul im Modulhandbuch der Master-Studiengänge Informatik, Mathematik und Wirtschaftsmathematik. Die schriftlichen Prüfungstermine sind am Donnerstag, den 2. März 2017, 14:00 Uhr, im H12 und am Donnerstag, den 6. April, 14:00 Uhr, ebenfalls im H12. Die Prüfungszeit beträgt jeweils 120 Minuten. Hilfsmittel sind nicht zugelassen mit der Ausnahme von bis zu fünf handgeschriebenen Zetteln (bis zu ISO A4, beidseitige Beschriftung ist ok). Bitte melden Sie sich für die Prüfungen im Uniportal an.

Für die Vorbereitung auf die schriftliche Prüfung steht eine Probeklausur zur Verfügung, die in der Vorlesung am 14. Februar 2017 besprochen werden wird.

Vorlesungen

Begleitend zur Vorlesung werden hier die verwendeten Vorlesungsfolien und Beispiele veröffentlicht:

  • 25. Oktober 2016: Folien (Syllabus, Einführung in OO-Techniken)
  • 3. November 2016: Folien (Einführung in C++)
  • 8. November 2016: Folien (Einführung in UML, design by contract)
  • 15. November 2016: Folien (Einführung zu Klassen in C++, RAII)
  • 22. November 2016: Folien (Dynamische Datenstrukturen, dynamischer Polymorphismus)
  • 29. November 2016: Folien (Generische Deklarationen)
  • 6. Dezember 2016: Folien (Statischer Polymorphismus I)
  • 13. Dezember 2016: Folien (Statischer Polymorphismus II)
  • 20. Dezember 2016: Folien (Ausnahmenbehandlungen)
  • 17. Januar 2017: Folien (Intelligente Zeiger)
  • 24. Januar 2017: Folien (Funktionsobjekte und λ-Ausdrücke)
  • 31. Januar 2017: Folien (Einführung in die STL)
  • 7. Februar 2017: Folien (Fortgeschrittene Template-Techniken)
  • Alle Folien in einer PDF-Datei einschließlich einer Navigation (Stand: 7. Februar 2017)

Übungen

  • Melden Sie sich bitte für die Teilnahme in den Übungen bei SLC an.
  • Die Übungen sind zeitintensiv und integraler Teil einer praxisorientierten Vorlesung.

Übungsblätter:

 

BlattAusgabeAbgabePDFMaterialLösung
127. Oktober 20163. November 2016blatt01.pdf
23. November 201610. November 2016blatt02.pdfNim
3 10. November 201617. November 2016blatt03.pdfclassdiag.pdf
417. November 201624. November 2016blatt04.pdfEinfacher Stack: In C++ und im C-StilStack
524. November 20161. Dezember 2016blatt05.pdfDynfunctions und ein Mini-Beispielnim2player
61. Dezember 20168. Dezember 2016blatt06.pdftrie
78. Dezember 201615. Dezember 2016blatt07.pdftrie2 (Aufgabe 8), trie3 (Aufgabe 9)
815. Dezember 201622. Dezember 2016blatt08.pdfconcatenated
922. Dezember 201612. Januar 2017blatt09.pdfMemObj
1012. Januar 201719. Januar 2017blatt10.pdfMandelbrot
1119. Januar 201726. Januar 2017blatt11.pdftrie4
1226. Januar 20172. Februar 2017blatt12.pdflambda.tar.gzparser.cpp
132. Februar 20179. Februar 2017blatt13.pdfmovies.latin1, movies.utf8movies.tar.gz
149. Februar 201716. Februar 2017blatt14.pdfnim.tar.gznim-loesung.tar.gz

 

 

Kontakt

Dr. Andreas F. Borchert
Helmholtzstr. 20
Raum 1.22

Dr. Michael Lehn
Helmholtzstr. 20
Raum 1.07