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