C++ Deeply Embedded (Deutsch)/(English)

Kursbeschreibung

Aus den Themen wird man entnehmen, dass es sich bei diesem Kurs nicht um einen Einsteigerkurs handelt. Vielmehr bedarf es schon einiger C++ Vorkenntnissen und einer gewissen Erfahrung mit C++. Die generische Programmierung mit Templates ist der „Zauberkasten“ der C++ Programmierung. Sie erlaubt es, klassische Probleme einer neuen, erstaunlich flexiblen und wegen der besonderen Unterstützung durch den Compiler performanteren und speichersparenden Lösung zuzuführen.

Daher steht als erster und wichtigster Punkt die Template Programmierung im Vordergrund. Viele Programmierer benutzen zwar Templates, aber meist ohne sie wirklich bis ins Detail zu verstehen und selbst implementieren zu können.

Wir haben in diesem Kurs einige zentrale Probleme (nicht nur) der Programmierung für den embedded Bereich zusammengestellt. Fast alle werden durch Templates einer neuen, flexiblen, performanten und erfrischend neuen Lösung zugeführt.

Obwohl wir in diesem Kurs mit Windows als Betriebssystem und dem Visual Studio arbeiten, können alle Themen problemlos auf andere Plattformen umgesetzt werden. Sie sind mit verschiedenen Compilern und Betriebssystemen getestet. Und selbst in den Bereichen, wo kein Betriebssystem vorhanden ist, lassen sich die meisten dieser allgemeinen Konzepte nutzbringend anwenden.

Wegen der zum Teil hohen Komplexität der Beispiele können nur für einige der Themen Übungen durchgeführt werden, schwerpunktmäßig bei den ersten Kapiteln. Die komplexen Sachverhalte werden dann durch eine Vielzahl von fundierten Beispielen dargestellt.

Die Beispiele werden auf Datenträger (DVD) den Teilnehmern zur Verfügung gestellt.

Der vorgesehene Zeitrahmen von 4 Tagen für diese Schulung bedingt bei der Vielzahl und Komplexität der Themen eine „straffe“ Durchführung und stellt daher teils hohe Anforderungen an die Auffassungsfähigkeit der Teilnehmer. Dennoch ist dafür gesorgt, dass genügend Spielraum für zusätzliche Fragen und Erklärungen auch von Randproblemen vorhanden ist. Der Kurs basiert auf dem Betriebssystem Microsoft Windows und dem Visual Studio als Entwicklungswerkzeug.

Themenschwerpunkte

  • Generische Programmierung mit C++ Templates
    • Template Funktionen
    • Template Klassen
    • Traits
    • Policies
  • Functionpointer
    • Aufruf globaler Funktionen mit Function pointern wie in C
    • Wie erfolgt der Zugriff auf Klassen- u. Objektmethoden?
    • Aufruf von (statischen) Klassenmethoden
    • Aufruf von Objektmethoden
  • Delegates (Variante des Observer Design Patterns mit Template Klassen)
    • Delegate Klasse für globale Funktionen und Klassenmethoden
    • Delegate Klasse für Objektmethoden
  • Alternative zu STL Containern: intrusive Liste
    • Betrachtung der STL Container
    • Intrusive double ended queue
  • Multithreading und Thread-Synchronisation
    • Erstellen einer eigenen Thread Klasse
    • Notwendigkeit der Synchronisation
    • Synchronisationswerkzeuge
    • Synchronisations-Design patterns
    • Synchronisation scheinbar atomarer Anweisungen
  • „gültiger“ pointer auf ungültiges Object
    • Kann auf den Speicherbereich eines ungültigen (gelöschten) Objektes zugegriffen werden?
    • Wie kann ich erkennen, ob an der Stelle, auf die der Pointer zeigt, sich ein gültiges Objekt befindet?
    • Möglichkeiten, wie verhindert werden kann, dass ein Objekt „abhanden kommt“
  • Dynamisches Allokieren von Speicher
    • Im embedded- und Echtzeit-Bereich
    • malloc und free oder new und delete?
    • manueller Konstruktor-/Destruktor-Aufruf
    • Überladen von new-und delete Operatoren
  • Speicherlücken
    • Entstehung und Auswirkung von Speicherlücken
    • Gegenmaßnahmen
  • Eigener, echtzeitfähiger Speichermanager für dynamische Allokierung von Objekten fixer Größe
    • Mit umgeleitetem new/delete Operator
    • Verwendung als Allocator für die STL Container
    • Variante für unterschiedliche Speichergrößen
  • Objects on demand – das Factory Design Pattern für Objekterzeugung
    • Serialisierung und Deserialisierung
  • Singleton Design Pattern
    • Klassische Vorgehensweise
    • Templates als Ersatz für fixe Singleton Implementierung
    • Wrapper Template Variante

Voraussetzungen

Gute bis sehr gute Kenntnisse in C++.

Zielgruppe

Dieser Kurs legt seinen Schwerpunkt auf die Vermittlung von Techniken, die zwar größtenteils aus dem embedded-Bereich kommen und dort seit Jahren erfolgreich eingesetzt werden, die aber natürlich auch in anderen Bereichen eingesetzt werden können - überall dort, wo es auf robuste Effizienz, Performance, ökonomischen Umgang mit Speicher und Zuverlässigkeit geht. Daher ist er für alle Programmierer geeignet, die diese fortgeschrittenen Techniken in eigenen Projekten einsetzen wollen.

Begleitendes Kursmaterial

  • Kursordner (deutsch)

Termine

FlexyTrain: Unsere Flexibilität – Ihr Plus

Keinen passenden Termin gefunden? Kein Problem: Bei der Planung unserer Kurstermine bieten wir Ihnen ein Höchstmaß an Flexibilität. Im Klartext: Gemeinsam mit Ihnen finden wir einen geeigneten Termin. Sprechen Sie uns an!