slider04

Effiziente Anwendung von C++ in Embedded Systemen


Zielgruppe:

Software-Entwickler, die ihre C++ -Kenntnisse in Embedded Systemen anwenden müssen.

Vorkenntnisse:

Programmierkenntnisse, die dem Inhalt des Kurses Objektorientierte Programmierung mit C++ entsprechen.

Dauer:

3 Tage (mit praktischen Übungen)

Beschreibung:

Die Anwendung von C++ in Embedded Systemen erfordert ein genaues Verständnis der vielfältigen Möglichkeiten der Sprache und der daraus resultierenden Anforderungen an die Ressourcen des Systems. Dieser Kurs untersucht die einzelnen Sprachkonstrukte von C++ anhand von anschaulichen Beispielen unter dem Gesichtspunkt des Speicherplatz- und Laufzeitbedarfs, den beiden wichtigsten Kriterien in Embedded- und/oder Echtzeit-Systemen. Dabei werden nicht nur Gefahren aufgezeigt, sondern auch Lösungsmöglichkeiten besprochen. Die Ergebnisse der Analyse bilden eine fundierte Grundlage für die Entscheidung, welche Implementierung für den jeweiligen Anwendungsfall die günstigste ist. Im Übrigen behandelt dieser Kurs auch den objektorientierten Umgang mit Hardwarebausteinen. Für die Durchführung der dazu gehörenden Übungen wird eine ARM-basierende Target-Hardware verwendet.


Inhalt:

Analyse der Sprachmittel

  • Objektmodell
  • Erzeugung von Objekten
  • Zerstörung von Objekten
  • Vererbung
  • Virtuelle Funktionen
  • Dynamische Speicherverwaltung

Objektorientierte Abbildung von Hardwarebausteinen

  • Traditionelle Lösungen
  • Lösung mithilfe einer Struktur
  • Hardwarebaustein als Objekt einer Klasse
  • Interruptbehandlung

PRAKTIsche Übungen

 

Nicht genau was Sie suchen?

C++ für Embedded Systeme


Zielgruppe:

Entwickler mit C-Kenntnissen, die Anwendungen objektorientiert in C++ für Embedded Systeme erstellen wollen.

Vorkenntnisse:

Gute Programmiererfahrung in C.

Dauer:

5 Tage (mit praktischen Übungen)

Beschreibung:

In diesem Kurs lernen Sie die Programmiersprache C++ und die Konzepte der objektorientierten Programmierung, spezialisiert auf den Einsatz in Embedded Systemen, kennen. Besonderes Gewicht wird dabei auf die Bewertung der einzelnen Mechanismen in Bezug auf Speicherplatz- und Laufzeitbedarf gelegt. Als weitere Besonderheit behandelt dieser Kurs auch den objektorientierten Umgang mit Hardwarebausteinen. Die dazu gehörenden Übungen werden auf einer ARM-basierenden Target-Hardware durchgeführt.
Der Kursinhalt basiert prinzipiell auf dem Sprachstandard C++98/03, der momentan am weitesten verbreitet ist. Die mit C++11 markierten Elemente sind nur bei Einsatz eines Compilers verwendbar, der diesen neueren Sprachstandard unterstützt. Aus diesem Grund können diese Inhalte optional gebucht werden. Die neuen Spracheigenschaften der C++11/C++14/C++17/C++20-Standards werden im Kurs "Modernes C++" behandelt.


Inhalt:

Nicht-Objektorientierte Sprachmittel und I/O

  • Datentyp bool
  • Referenzen
  • Funktionsüberladung
  • Vorbelegungsparameter
  • Dynamische Speicherverwaltung
  • Überladung von Operatoren
  • Ein-/Ausgabe (cin/cout)
  • Bereichsbasierte for-Schleife (C++11)
  • Scoped Enumerations (C++11)
  • nullptr (C++11)
  • Automatische Typableitung mit auto (C++11)
  • constexpr (C++11)
  • Alias-Typdefinition mit using (C++11)

Von der Struktur zur Klasse

  • Datenelemente, Attribute
  • Elementfunktionen, Methoden
  • Statische/nicht-statische Elemente
  • this-Pointer
  • Zugriffsrechte public und private
  • Klasse

Konstruktoren und Destruktoren

  • Standard- und Kopierkonstruktor
  • Bei globalen und statischen Objekten und Arrays
  • Bei Objekten, die Objekte enthalten
  • Vereinheitlichte Initialisierung (C++11)
  • Direkte Initialisierung von Datenelementen (C++11)
  • Konstruktor-Delegation (C++11)

Operatoren als Klassenelemente

  • Zuweisungsoperator
  • Auswahloperator
  • Typumwandlungsoperator

Vererbung und Aggregation

  • Basis- und abgeleitete Klassen
  • Vorteile der Vererbung gegenüber der Aggregation
  • Modellierung der Basisklassenfunktionalität
  • Auswirkungen auf Konstruktion und Destruktion
  • Zugriffsrecht protected
  • Ableitung mit Einschränkung der Zugriffsrechte
  • Konstruktorvererbung (C++11)

Virtuelle Funktionen und Polymorphie

  • Statische und dynamische Bindung
  • Virtuelle Funktionen
  • Abstrakte Funktionen und abstrakte Klassen
  • Interfaces
  • override und final (C++11)

Bewertung der Sprachmittel

  • Objektmodell
  • Erzeugung und Zerstörung von Objekten
  • Temporäre Objekte
  • Vererbung
  • Virtuelle Funktionen
  • Dynamische Speicherverwaltung

Objektorientierte Abbildung von Hardwarebausteinen

  • Traditionelle Lösungen
  • Lösung mithilfe einer Struktur
  • Hardwarebaustein als Objekt einer Klasse
  • Interruptbehandlung

Praktische Übungen

 

Der Kursinhalt entspricht nicht ganz dem, was Sie suchen?

Modernes C++

 --- Neue Eigenschaften in C++11, C++14, C++17 und C++20 ---


Zielgruppe:

Softwareentwickler, die die neuen Spracheigenschaften der Standards C++11, C++14, C++17 und C++20 kennenlernen wollen.

Vorkenntnisse:

Gute Programmiererfahrung in "klassischem C++" (Spracheigenschaften von C++98/03, einschließlich Templates). Eventuell noch fehlendes Vorwissen kann auf Wunsch durch eine entsprechende Kombination von Kurskomponenten vorab aufgebaut werden. (Siehe Kurs "C++-Auffrischung").

Dauer:

3 Tage

Beschreibung:

Durch die neuen Sprachstandards seit C++11 hat sich der Umfang der Programmiersprache C++ stark vergrößert. Neben vielen Neuerungen, die im Wesentlichen das Lesen und Schreiben von Programmen erleichtern, wurden auch wichtige neue Konzepte eingeführt, deren vorteilhafte Anwendung ein gutes Verständnis der Zielsetzung und Verhaltensweise erforderlich machen. Dieser Kurs geht von klassischen C++-Kenntnissen aus und zeigt, welche  Spracheigenschaften mit C++11, C++14, C++17 und C++20 neu eingeführt wurden. Darüber hinaus werden auch Smart-Pointer, als Teil der C++-Standardbibliothek, vorgestellt. Weitere Neuerungen der C++-Standardbibliothek werden in anderen Kursen, wie z.B. C++-Multithreading behandelt.


Inhalt:

  • Vereinheitlichte Initialisierung
  • Bereichsbasierte Schleifen
  • Automatische Typableitung (auto, decltype)
  • Streng typisierte Aufzählungen
  • Rvalue-Referenzen und Move-Semantik
  • Konstante Ausdrücke (constexpr)
  • Lambda-Funktionen und Lambda-Captures
  • Spezielle Member-Funktionen
  • Konstruktor-Delegation
  • Konstruktorvererbung, override und final
  • Variadische Templates
  • Perfect Forwarding
  • Smart-Pointer (unique- /shared- /weak_ptr)
  • Binäre Literale und Zifferntrennung
  • Raw-String-Literale
  • Benutzerdefinierte Literale
  • Explizite Typkonvertierung
  • noexcept
  • static_assert
  • Attribute
  • Variablen-Templates
  • Typableitung bei Template-Klassen
  • Variableninitialisierung bei if und switch
  • Datentyp byte
  • Type Traits
  • constexpr if
  • Neue Arten von Non-Type-Template-Parametern
  • Template-Parameterliste für generische Lambdafunktionen
  • Designierte Initialisierer
  • Konzepte (Concepts)
  • Vergleichsoperatoren (Spaceship-Operator)
  • Module
  • Erweiterungen der Compile-Time-Unterstützung

Der Kursinhalt entspricht nicht ganz dem, was Sie suchen?

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.