C++ für Embedded Systeme
Zielgruppe:
Softwareentwickler/innen 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++ für die Anwendung in Embedded-Systemen kennen. Besonderer Wert wird dabei auf ein gutes Verständnis der objektorientierten Programmierung (OOP) und deren Einfluss auf die Systemressourcen gelegt. Zu diesem Zweck werden die Unterschiede der OOP im Vergleich zur klassischen C-Programmierung, sowie deren Auswirkungen auf den Speicherplatz- und Laufzeitbedarf detailliert erläutert. Außerdem zeigt der Kurs, wie Klassen und ihre Beziehungen mithilfe der Unified Modelling Language (UML) dargestellt werden und schafft somit eine wichtige Grundlage für einen guten objektorientierten Softwareentwurf. Schließlich behandelt der Kurs auch, wie Hardwarebausteine objektorientiert eingebunden und benutzt werden können. Die dazu gehörenden Übungen werden bei Präsenzkursen auf einer ARM-basierenden Target-Hardware, bei Onlinekursen mithilfe eines entsprechenden Softwareemulators durchgeführt. Die Spracheigenschaften dieses Grundlagenkurses basieren im Wesentlichen auf dem Sprachstandard C++98/03. Die Eigenschaften der neueren Sprachstandards (C++11, C++14, C++17, C++20) werden in dem weiterführenden Kurs "Modernes C++" behandelt.
Hinweis:
Der Kurs "C++ für Embedded Systeme" (C++/Embedded) setzt sich aus den folgenden Kursmodulen zusammen, die bei entsprechenden Vorkenntnissen auch einzeln gebucht werden können:
- "C++ als nicht-objektorientierte Spracherweiterung von C"
- "Objektorientierte Embedded-Programmierung mit C++"
- "Besonderheiten der C++-Embedded-Programmierung"
- "Objektorientierter Zugriff auf Hardware-Devices mit C++"
Inhalt:
Nicht-Objektorientierte Sprachmittel und I/O
- Datentyp bool
- Referenzen
- Funktionsüberladung
- Vorbelegungsparameter
- Dynamische Speicherverwaltung
- Überladung von Operatoren
- Ein-/Ausgabe (cin/cout)
- Cast-Operatoren
- Bereichsbasierte for-Schleife (C++11)
- Scoped Enumerations (C++11)
- nullptr (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
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
- Cast-Operatoren
Virtuelle Funktionen und Polymorphie
- Statische und dynamische Bindung
- Virtuelle Funktionen
- Abstrakte Funktionen und abstrakte Klassen
- Schnittstellen (Interfaces)
- Cast-Operatoren
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