Embedded C++ für Umsteiger
Zielgruppe:
Softwareentwickler/innen mit Programmiererfahrung, die sich in die Eigenschaften der Programmiersprache C++ - mit Fokus auf deren möglichst effiziente Anwendung in ressourcelimitierten Embedded-Systemen - einarbeiten müssen.
Vorkenntnisse:
Kenntnis mindestens einer objektorientierten Programmiersprache, wie z.B. Java oder C#.
Dauer:
3 Tage (erweiterbar um praktische Übungen)
Beschreibung:
Dieser Kompaktkurs zeigt, was nötig ist, um Applikationen für Embedded-Systeme effizient in der Programmiersprache C++ entwickeln zu können. Er eignet sich ideal für Softwareentwickler/innen, die das objektorientierte Programmiermodell im Umgang mit anderen Programmiersprachen bereits kennengelernt, aber noch keine Erfahrung mit C++ und den besonderen Anforderungen der Embedded-Programmierung gemacht haben. Um den Kursumfang möglichst kompakt halten zu können, werden die Spracherweiterungen der Sprachstandards ab C++11 hier nicht berücksichtigt, sondern in dem Aufbaukurs "Modernes C++" behandelt.
Inhalt:
C-GRUNDLAGEN
- Speicherarten
- Datentypen
- Ausdrücke und Operatoren
- Implizite und explizite Typumwandlung
- Makros
- Kontrollstrukturen
- Pointer
- Aufzählungsdatentypen
- Arrays
- Strings
- Strukturen
- Funktionen
Nicht-Objektorientierte Spracheigenschaften
- Datentyp bool
- Referenzen
- Funktionsüberladung
- Vorbelegungsparameter
- Dynamische Speicherverwaltung
- Operatorüberladung
- Ein-/Ausgabe (cin/cout)
- Cast-Operatoren
Klassen und Objekte
- Datenelemente, Attribute
- Elementfunktionen, Methoden
- Inlining
- Statische/nicht-statische Elemente
- this-Pointer
- Zugriffsrechte public und private
- Konstruktoren und Destruktoren
- Methodenbasierte Operatorüberladung
- Konstante Methoden
Vererbung
- Basisklassen und abgeleitete Klassen
- Auswirkungen auf Konstruktion und Destruktion
- Zugriffsrecht protected
- Ableitung mit Einschränkung der Zugriffsrechte
Virtuelle Funktionen und Polymorphie
- Statische und dynamische Bindung
- Virtuelle Funktionstabelle
- Abstrakte Funktionen und abstrakte Klassen
- Interfaces (Interfaces)
Templates
- Template-Funktionen
- Template-Parameter
- Spezialisierung
- Klassen-Templates
- Templates und Vererbung
- Explizite Template-Instanziierung
- Statische Polymorphie
- Meta-Programmierung
Objektorientierter Zugriff auf hardwarebausteine
- Memory-Mapped-/Port-Mapped-I/O
- Traditionelle Registerzugriffsmethoden
- Objektorientierter Zugriff auf Hardwareregister
- Interruptbehandlung
Kostenanalyse der Sprachelemente
- Objektmodell
- Temporäre Objekte
- Vererbung
- Virtuelle Funktionen
- Dynamische Speicherverwaltung