C++ Programmierung

Objektorientiertes Programmieren in C++

Die weitverbreitete multi-paradigmen (generisch, imperativ, objektorientiert, prozedural, strukturiert, funktional) Programmiersprache C++ eignet sich vor allem zum Entwickeln hocheffizienter Software für technisch-wissenschaftliche und für hardwarenahe Aufgaben. Für C++ (2003 ISO normiert) existieren viele umfangreiche, plattformunabhängige und hochwertige Klassenbibliotheken. C++ erlaubt es als eine "hybride" Erweiterung der Programmiersprache C, (bestehende) C-Programme einzubinden.

Dieser Kurs legt viel Aufmerksamkeit auf das Verstehen und praktische Üben der Objekt-Orientierungsgrundlagen (Delegation, Datenkapselung, Vererbung, Polymorphie, dynamisches Binden). Wichtige "eher technisch orientierte Themen" wie z.B. "Zeiger", "wohin zeigt der this-Zeiger?" und "dynamisches Binden realisiert durch vtables", kommen dabei nicht zu kurz. Es soll nicht verschwiegen werden, dass C++ eine komplexe Sprache ist, die einen hohen Lernaufwand erfordert. Dieser Kurs legt solide Grundlagen für die Mitarbeit an bestehenden C++ Projekten.

Eine weitere Stärke von C++ liegt in der generischen Programmierung (Templates), um Code wiederzuverwenden. Dafür legt dieser Kurs ebenfalls die Grundlagen.

Trainer und Dozenten

Jacek Galowicz ist Autor des C++17 STL Cookbook, Editor des Buches C++17 in Detail sowie Lehrbeauftragter für qualitätssichernde Software-Entwicklungsprozesse an der FH Münster. Mit mehr als zehn Jahren Erfahrung in low-level Programmierung von Betriebssystemen, Anwendungen und Template Meta-Programming sowie Build-Systemen und Projekt-Architektur vermittelt er den Kursteilnehmern alles Wichtige von den ersten Schritten bis hin zum Ausblick auf skalierende Projekt- und Produktentwicklung im Team.

Voraussetzungen

Dieser Kurs richtet sich an Einsteiger und Sprachumsteiger. Als Voraussetzung für diesen Kurs sollten Sie über grundlegende Kenntnisse in einer (prozeduralen) Programmiersprache (wie c, PHP, Perl, Shell, Python, Javascript, Java, Pascal, Delphi, Fortran) verfügen. Grundlegende Kenntnisse (Variablen, Ausdrücke, Anweisungen) in einer solchen Sprache reichen vollkommen aus.

Inhalt

  • Datentypen
  • Zeiger, der Adress-Operator und void*
    • Tabellen (Zeiger und Zeigerarithmetik)
  • C++-Referenzen ("Zeiger mit Tarnkappe")
  • for-Schleifen und range-based for
  • C-Strings und die Klasse string der STL
  • Funktionen
    • "Call by reference" versus "Call by value"
    • Lambda Expressions
  • Vektoren, Listen, Hashmaps/Assoziativdatenstrukturen
  • I/O Streams für die Eingabe/Ausgabe von/in Dateien und Terminal
  • Strukturen, Klassen, Enums und Objekte
  • Objektverbindungen - 1:1-Verbindungen, 1:n-Verbindungen
  • Operationen, Methoden und der this-Zeiger
  • Konstruktoren/Destruktoren
    • Memberinitialisierungsliste
    • Copy-Konstruktor
    • The rule of three/five/zero
  • Objekte und Tabellen dynamisch erzeugen und entfernen (new und delete)
  • RAII (Resource Acquisition Is Initialization)
    • Smart Pointer: unique_ptr, shared_ptr
  • Klassenvariablen und -funktionen (static Elemente)
  • Callable Objects
  • Überladen von Operatoren (insbes. = und ==)
  • Vererbung
  • Private Vererbung ("Implementierungsvererbung")
  • Polymorphie
    • Virtuelle Funktionen und yynamisches Binden
    • Die VTbl-Struktur
    • Rein virtuelle Funktionen und abstrakte Klassen (Interfaces)
  • Mehrfachvererbung
  • C++ Projekte bauen mit CMake
    • Externe Bibliotheken korrekt einbinden
    • Eigene Bibliotheken einbindbar machen
  • Unit-Tests mit Catch2
  • Undefined Behavior und Sanitizers
  • Iteratoren
    • Iterator Kategorien
    • Iterator Sentinels
    • STL Algorithmen auf Ranges
  • Exceptions
  • Generische Datentypen (C++ Templates)
  • constexpr if

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An den Kurstagen dann von 9-18 Uhr (mit 2 Kaffee- und 1 Mittagspause) etwa 60% Schulungen und 40% Übungen. Selbstverständlich arbeitet jeder Teilnehmer am von uns gestellten Notebook oft parallel zum Referenten mit.

Anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.