Embedded C++ Grundkurs

Embedded Programme sind oft durch besondere Einschränkungen (wie z.B. kleiner Speicher, man darf keinen Heap verwenden) und Anforderungen (hohe Geschwindigkeit, hohe Zuverlässigkeit usw.) gekennzeichnet.

Traditionellerweise werden embedded Programme oft in C geschrieben. Mit der Weiterentwicklung der Compiler haben die meisten Sprachelemente von C++ heute in Bezug auf Codegröße und Geschwindigkeit keine Nachteile mehr gegenüber C. Durch die neuen C++-Standards (C++11, C++14 und C++17) wurden neue Sprachelemente in C++ aufgenommen, die zu schnellerem und kleinerem Code führen als die C-Alternativen.

Eines der wichtigsten Argumente für C++ ist aber, dass embedded Programme immer komplexer und größer werden. Diese Komplexität ist mit den Mitteln von C oft nur noch schwer zu bewältigen. Hier bietet C++ enorme Vorteile, die Entwicklungskosten sparen und zur Zuverlässigkeit der Anwendungen beitragen.

Ziele des Seminars:

In diesem Seminar werden grundlegende Sprachelemente und -konzepte von C++ (z.B. objektorientierte Programmierung) unter dem Gesichtspunkt der besonderen Anforderungen an embedded Systeme vorgestellt und mit C-Alternativen verglichen. Ein Schwerpunkt liegt auf den neuen Sprachelementen von C++11, C++14 und C++17, die für embedded Systeme viele Vorteile haben. Zusammen mit den Sprachelementen werden auch die AUTOSAR C++14 und MISRA Regeln für sicherheitsrelevante Systeme vorgestellt.

Programm

  1. Embedded Systeme
    • Einsatzbereiche und Besonderheiten
    • spezielle Anforderungen bei Embedded Anwendungen
    • Überblick: C und C++ im Vergleich
  2. Elementare Datentypen und Anweisungen
    • Ganzzahldatentypen fester Breite
    • Trennzeichen bei Zahlliteralen und binäre Literale
    • Typ-Inferenz: Implizite Typzuweisungen mit auto
    • Sichere Konversionen mit Initialisierungslisten
    • inline Variablen, insbesondere static inline Datenelemente
    • Wert- und Referenzparameter
    • Konstanten mit const und constexpr
    • constexpr-Funktionen
    • Init statement für if/switch
    • Bedingte Kompilation mit if constexpr
    • Stark typisierte Aufzählungstypen
    • Arrays im Stil von C und std::array
  3. Zeiger und Smart Pointer
    • Schwächen von Zeigern im Stil von C
    • Gemeinsamkeiten von shared_ptr und unique_ptr
    • shared_ptr
    • unique_ptr
  4. Namespaces
  5. Überladene Funktionen und Operatoren
    • Mit überladenen new– und delete-Operatoren memory-leaks finden
  6. Objektorientierte Programmierung
    • Klassen
    • Elementfunktionen und der this-Zeiger
    • Datenkapselung
    • Konstruktoren und Destruktoren
    • Elementinitialisierer
    • Standardkonstruktor, Kopierkonstruktor, Zuweisungsoperator
    • Die Angaben =delete und =default
    • Konvertierende und explizite Konstruktoren
    • Statische Klassenelemente
    • Vererbung und Komposition
    • Verdeckte Elemente
    • Virtuelle Funktionen und Polymorphie
    • Rein virtuelle Funktionen und Interface-Klassen
    • R-Wert Referenzen und Move-Semantik

Weiteres:

Zielgruppe: Software-Entwickler in Firmen, die C++ für den professionellen Einsatz von embedded Anwendungen lernen wollen.

Sprache: Das Seminar kann in Deutsch oder Englisch gehalten werden.

Voraussetzungen: Gute C Kenntnisse.

Unterrichtsstil: Vortrag mit vielen Beispielen, die das Wesentliche auf den Punkt bringen. Eine ausgewogene Verbindung von Theorie und Praxis.

  • Zu Beginn eines neuen Themas wird zunächst ein Überblick über die Einsatzmöglichkeiten, Grundideen und die Syntax gegeben. Diese werden an sorgfältig ausgewählten und bewährten Beispielen illustriert.
  • Das Verständnis wird oft durch den Vergleich ähnlicher (auch älterer) Sprachelemente und ihrer Vor- und Nachteile vertieft. Dabei werden oft “best practises” empfohlen.
  • Falls die Teilnehmer ihr Wissen selbständig vertiefen wollen: Das Manuskript enthält zahlreiche praxisnahe Übungsaufgaben. Auf Wunsch können nach vorheriger Absprache auch Aufgaben aus der Arbeit der Seminarteilnehmer behandelt werden.

Flexibilität: Falls sich im Lauf des Seminars  zeigt, dass Grundlagen bei den Teilnehmern fehlen oder weitere Themen gewünscht werden, kann die Agenda auch noch während des Seminars an die Wünsche der Teilnehmer angepasst werden.

Manuskript: Ausführliche und detaillierte Schulungsunterlagen (ca. 200 Seiten) – Vollständiger Text, keine Powerpoint Folien, die nur Stichworte enthalten. Deshalb können die Kursunterlagen auch als Referenz bei der Arbeit verwendet werden.

Ort und Zeit: Dieses Seminar wird als Firmenseminar (inhouse) angeboten.

Dauer: 5 Tage

Dozent: Prof. Richard Kaiser führt seit vielen Jahren Seminare für Firmen durch, vor allem über Software-Entwicklung und die Programmiersprachen C#/C++/C. Zu seinen Kunden gehören renommierte Weltkonzerne und kleine und mittelständische Unternehmen. Er ist der Verfasser der Bücher „C++ mit Visual Studio 2017“ und „C++ mit Microsoft Visual C++ 2008“. Er war viele Jahre Mitglied im DIN Normierungsausschuss Informationstechnik NI-22.

Öffentliche Seminare von Prof. Kaiser finden Sie bei der Technischen Akademie Esslingen.

Beurteilungen der Seminare durch die Teilnehmer finden Sie hier.

Kontakt: Richard Kaiser, Schwärzlocher Straße 53, 72070 Tübingen, .img, .img@.img