Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML (Seminar)
Datum:
22.06.2026 - 25.06.2026
Veranstaltungsort:
München, MicroConsult
Beschreibung:
MicroConsult Academy GmbH
Meistern Sie die Herausforderung bei der Softwareentwicklung für Hard-Realtime-Systeme: Die heutigen Embedded-Systeme mit komplexen Mikrocontroller- und Prozessorarchitekturen enthalten immer mehr Software, die aber in immer kürzerer Zeit geplant und realisiert werden muss. Häufig sind Vorgaben zu erfüllen, in denen Normen und sicherheitskritische Aspekte berücksichtigt werden müssen. Echtzeitfähigkeit, Wiederverwendbarkeit, Anpassbarkeit an veränderte Rahmenbedingungen und leichte Lesbarkeit der Software spielen eine immer größere Rolle.
Sie kennen nach dem EC++ Workshop die Möglichkeiten, die ein objektorientierter Ansatz bietet, um auch in der Embedded-Welt in kürzerer Zeit qualitativ hochwertige Software zu entwickeln. Der vermittelte Überblick über den gesamten Entwicklungsprozess von Embedded-Realtime-Systemen - Software-Analyse, Software-Design, Software-Implementierung und Unit-Test - gibt Ihnen das Rüstzeug, um Projekte mit EC++ zu erstellen. Sie wissen, wie Sie das Design von Software-Systemen mithilfe der UML und der Implementierung in der Programmiersprache C++ gestalten. Damit verfügen Sie über die Wissensbasis zur Erfüllung besonderer Anforderungen an die Software-Qualität von Embedded-Systemen, z.B. im Hinblick auf Laufzeit und Codeeffizienz. Ferner vermeiden Sie mithilfe von Programmierrichtlinien, z.B. dem MISRA-C++ Standard, frühzeitig Programmierfehler. Sie entwickeln mit modernen objektorientierten Techniken qualitativ hochwertige und komplexe Softwaresysteme und sparen dabei Zeit und Geld.
Inhalt
Einführung in die objektorientierte Begriffswelt
Klasse und Objekt
Attribut, Operation, Methode
Kapselung
Relation (Beziehung) zwischen Klassen
Nutzen und Vorteile der objektorientierten Softwareentwicklung
Demonstration des objektorientierten Ansatzes an einem Hardwaretreiber-Beispiel
Objektorientiertes Programmieren in C
Klassen, Attribute, Operationen und Objekte
Möglichkeiten der Kapselung in C
Assoziation, Aggregation, Komposition und Vererbung
Praxistipps mit bewährten Umsetzungsmöglichkeiten
Einführung in die Programmiersprache C++ (EC++)
Migration von objektorientierter Programmierung mit C zu C++/EC++
Klasse, Attribute, Operationen und Objekte
Möglichkeiten der Kapselung in C++
Konstruktoren, Destruktor, Überladen
Modifizierer für Daten, Operationen und Objekte
Speichermanagement für Objekte
Weitere C++ spezifische Mechanismen und Konstrukte
Assembleranalysen von C++ Konstrukten
Speicher- und laufzeitorientierte Einschätzung und Optimierung
Vergleich zu C
Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
Risiken erkennen, Stolpersteine vermeiden
Übung: Sie implementieren, instanziieren und testen eine Klasse
Relationen zwischen Klassen und deren Programmierung mit C++
Assoziation
Aggregation
Komposition
Vererbung
Richtige Relationsauswahl im Design treffen
Varianten der Implementierung mit C++
Ansätze der Implementierung in C
Assembleranalysen von C++ Konstrukten
Speicher- und laufzeitorientierte Einschätzung und Optimierung
Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
Übung: Sie implementieren die Relationen Assoziation, Vererbung und Komposition in der Applikation und bei der Anwendung des Builder-Patterns
Virtuelle Methoden und Interfaces mit C++
Dynamische (späte) Bindung
Rein virtuelle Funktionen/ Operationen
Polymorphismus
Von der abstrakten Klasse zur Interface-Klasse
Software-Architektur mit Interfaces
Nutzen, Vorteile und Nachteile von Interface-Klassen
Implementierung mit C++
Assembleranalysen von C++ Konstrukten
Speicher- und laufzeitorientierte Einschätzung und Optimierung
Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
Übung: Sie programmieren eine Interface-Klasse mit rein virtuellen Funktionen, implementieren diese und greifen darauf zu
C++ für Embedded-Applikationen
Anwendung von C++ in der Embedded-Softwareentwicklung
Historie
Empfehlungen und Regelwerke
C++ Compiler-Prinzipien
C++ Klassenbibliotheken
Statische versus dynamische Klassenbibliotheken
Erzeugung und Einbindung von Klassenbibliotheken
Vor- und Nachteile bei der Verwendung in Embedded-Software
Demonstration eines Beispiels
Zustandsautomaten mit C++
Prinzipielle Möglichkeiten der Implementierung
Vorstellung der Tabellen-basierten Abarbeitung von Zustandsautomaten
Demonstration eines Beispiels
Hardwaretreiber und Interrupts mit C++
Typische Embedded-SW-Architekturen und deren Darstellung (Schichtenmodell, Interfaces)
Objektorientierte Callback-Strukturen
Hardwaretreiber mit Peripherie-Registerzugriff objektorientiert in C++
Interrupt-Konzepte und Interrupt-Service Routinen objektorientiert mit C++
Programmieren von Zustandsautomaten
Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
Übung: Sie wenden einen objektorientierten Timer-Treiber zusammen mit einem Timer-Interrupt in Ihrer Übungsapplikation an
Übersicht Embedded-Software-Test
Software-Implementierung und -Test
Testprozess
Checkliste zum Test objektorientierter Software
Grundlegende Notationen mit der UML (Unified Modeling Language)
Darstellung von Klassen, Objekten und Relationen mit der UML
Use-Case-, Sequenz-, Aktivitäten- und Zustandsfolge-Diagramm
Demonstration der Übung im UML-Modell - Aspekt: Diagramme
Von der Projektplanung bis zur Implementierung
Software-Entwicklungsprozess
Qualität von Embedded-Softwaresystemen
Praxisgerechte Modellierung einer Embedded-Applikation mit der UML
Demonstration der Übung im UML-Modell - Aspekt: Modellentstehung und Aufbau
Praktische Übungen im Workshop
Für die durchgängige Übung (Uhrenapplikation) verwenden Sie das Arm Keil MDK (Microcontroller Development Kit) zusammen mit einer realen Hardware basierend auf einem Arm Cortex® M3 Mikrocontroller.