Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

C++ Schulung für Fortgeschrittene: Weiterführende Programmiertechniken für C++ Entwickler

Mit steigender Softwarekomplexität ist es in vielen Applikationen sinnvoll, fortgeschrittene C++ Konstrukte einzusetzen; gleichermaßen unterstützen Änderungen und Erweiterungen des aktuellen C++ Standards.

  • Inhalt
     
  • Ziele -
    Ihr Nutzen
  • Teilnehmer
     
  • Voraussetzungen
     

Sie wenden Templates und Exceptions effizient an. Sie haben fundierte Kenntnisse der Standard Template Library (STL). Sie realisieren fortgeschrittene objektorientierte Konzepte und Designs mit C++, auch zusammen mit C++ Multithreading. Sie sind in der Lage, bestehende und neue Applikationen in Bezug auf Performance und Verbrauchsverhalten zu optimieren.

Der C++ Kurs für Fortgeschrittene richtet sich an Programmierer, Software-Entwickler, Software-Designer und Software-Architekten.

Sie sollten die C++ Grundlagen, wie sie im Training "C++: Objektorientierte Programmierung" vermittelt werden, beherrschen.

Themeneinleitung

  • Historie zu C++
  • Prinzipielle Compiler-Funktionalität
  • Praxistipps: Wertvolle Links im Internet

Kurze Zusammenfassung der C++ Grundlagen

  • Variablen-Kategorien, Typen, Alignment
  • Klassen und Objekte
  • Konstruktor-Arten und Destruktor
  • Operatoren mit Überladung
  • Funktionszeiger in Klassen
  • Strings und Streams
  • Klassenrelationen: Assoziation, Selbst-Assoziation, Aggregation, Komposition, Vererbung, Mehrfachvererbung und Alternativen
  • Interface-Konzept mit rein virtuellen Funktionen
  • Neue Features der aktuellen Standards
  • Übung: Sie verstehen die vorgegebene SW-Architektur und lernen dabei das Builder-Pattern kennen, implementieren Klassen, Komposition und Vererbung und testen diese automatisiert nach dem TDD-Vorgehen (Test Driven Development).
  • Dabei berücksichtigen Sie Qualitätsaspekte wie objektorientierte Programmierung, Modularisierung, Wiederverwendbarkeit und Erweiterbarkeit

Exceptions

  • Erläuterung und Programmierung Exception Handling
  • Exception-Klassen und -Hierarchien
  • Benutzer-Exceptions
  • C++ Standard-Exceptions
  • Praxistipps: Konzepte, Richtlinien
  • Übung: Sie erweitern die Übungsapplikation um flexible Ausnahmebehandlung mit Exceptions

New Style Casts

  • Static, dynamic, const und reinterpret Cast
  • Die richtige Wahl beim Einsatz
  • Bezug zu RTTI und Exception Handling

Runtime Type Information (RTTI)

  • Erläuterung und Programmierung von RTTI
  • Klasse type_info
  • Verwendungsmöglichkeiten und Konsequenzen beim Einsatz

Lamda-Funktionen

  • Syntax und Anwendung
  • Closures
  • std::function
  • Binden von Parametern

Speichermanagement

  • Speichersegmente (BSS Block Started by Symbol, Heap, Stack)
  • Vergleich und Bewertung der Datensegmente
  • Dynamisches Speichermanagement mit new und delete
  • Überladen (lokal und global) von new und delete
  • Algorithmen
  • Virtueller Destruktor
  • Placement new
  • Bezug zu Exception Handling
  • Smart Pointer: unique_ptr, shared_ptr, weak_ptr
  • Casten von Smart-Pointern
  • Praxistipps: Risiken erkennen und Stolpersteine vermeiden

Template-Funktionen und Template-Klassen

  • Prinzipielle Funktionsweise
  • Template-Funktionen, Template-Klassen und deren Anwendung
  • Beispiele für Template-Klassen
  • Vererbung und Interfaces mit Template-Klassen
  • Container/Algorithmen im STL-Stil
  • Laufzeit- vs. Compilezeit-Polymorphismus
  • Type-Traits
  • Perfect Forwarding mit Templates
  • Variadic Template-Funktionen und Template-Klassen
  • Alias-Templates
  • Praxisbeispiele für Template-Klassen
  • Übung: Sie wenden das Observer-Pattern im Design der Applikation an und implementieren es basierend auf einer containerartigen eigenen Template-Klasse

STL Standard Template Library

  • Container, Container-Adapter
  • Iteratoren
  • Algorithmen, Funktionsobjekte
  • Speicher-Allocator-Klasse
  • Praxistipp: Übersicht über alle STL-Containerelemente und deren Zusammenhänge
  • Übung: Sie wenden das Observer-Pattern im Design der Applikation an und implementieren es basierend auf einer STL-Container-Klasse

Multithreading und Atomic-Datentypen

  • Multithreading-Grundkonzepte
  • Threads, Mutex, Condition Variable, Future
  • Anwendung der Mechanismen
  • Übung: Sie adaptieren die Applikation an einen Timer und steuern sie über einen Thread. Dabei nutzen Sie mit ihren Vorteilen eine zusätzliche Betriebssystem-Abstraktion mit Wrapper-Klassen.

Typische Fallstricke und verbreitete Idiome (PIMPL, RAII, NVI, ...)

  • RAII (Resource Acquisition Is Initialization), Ressourcen-Wrapper
  • NVI (Non-virtual Interfaces)
  • PIMPL (Pointer to Implementation)
  • Handling Self-Assignment in Assignment Operator
  • Praxistipps zu weiteren C++ Idiomen

Übungen im C++ Kurs für Fortgeschrittene

  • Für die Implementierung der durchgängigen Übung (Uhrenapplikation) verwenden Sie das Microsoft Visual Studio.

MicroConsult Plus:

  • Als Teilnehmer haben Sie die folgenden Möglichkeiten, um Ihre Übungen und die von MicroConsult entwickelten Lösungen aus dem Workshop mitzunehmen:
  • Sie nehmen die Dateien direkt auf einem von MicroConsult bereitgestellten kostenfreien USB-Stick mit, oder …
  • Sie senden sich die Dateien selbst per E-Mail zu, oder …
  • Sie erhalten auf Anfrage Zugriff auf die Dateien per Download.
  • Sie erhalten den C++ Programmcode sowie das UML-Modell der Uhrenapplikation.
  • Sie bekommen alle C++ Beispiele in elektronischer Form und können diese sehr einfach für Ihr Entwicklungsenvironment anpassen.
  • Sie bekommen eine hilfreiche Notationsübersicht für UML (Unified Modeling Language) im A3 Format.

Im Preis enthalten:
Mittagessen, Getränke, Trainingsunterlagen und Ihr Teilnahmezertifikat


ALL INCLUSIVE!

Verwandte Trainings

C++ Quick Refresh: Schnelleinstieg/Auffrischung
Anmeldecode: C++/REF

C++ Kurs: Objektorientierte Programmierung mit C++
Anmeldecode: C++

Modernes C++: Neuerungen durch C++11 und C++14 bei Sprachsyntax, Bibliothek und Templates
Anmeldecode: C++/MOD

C++: Standard- und Boost-Library Workshop
Anmeldecode: C++/LIB

C++ Standard Template Library: STL Container und Algorithmen
Anmeldecode: C++/STL

C++11 Multithreading
Anmeldecode: C++11-MT

OOP-Grundlagen: Sprachunabhängiger Einstieg in die objektorientierte Programmierung
Anmeldecode: OOP-G

Objektorientierte Softwareentwicklung: Spezielle Programmierprinzipien mit C++ - der Weg zum Clean Code
Anmeldecode: OOP-FORCPP

Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++
Anmeldecode: EC++/FOR


Verwandte Trainings

Offenes Training

Mit Durchführungsgarantie

TerminPreis *Dauer
09.12. – 13.12.20192.250,00 €4,5 Tage
23.03. – 27.03.20202.250,00 €4,5 Tage 
29.06. – 03.07.20202.250,00 €4,5 Tage 
26.10. – 30.10.20202.250,00 €4,5 Tage 
01.02. – 05.02.20212.250,00 €4,5 Tage 
Anmeldecode: C++/FOR
* Preis je Teilnehmer, in Euro zzgl. USt.


> Download Blanko-Anmeldeformular
> Trainingsbeschreibung als PDF

Onsite-Training

In maßgeschneiderten Workshops kombinieren wir Ihre konkreten Projektaufgaben mit unserem Trainingsangebot. Dabei berücksichtigen wir Ihre Anforderungen bezüglich Inhalt, Zeit, Ort, Dauer, technischem Umfeld und Vermittlungsmethodik.

Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.

> Trainingsbeschreibung als PDF

Coaching

Unsere Coaching-Angebote bieten den großen Vorteil, dass unsere Experten ihr Wissen und ihre Erfahrungen direkt in Ihren Lösungsprozess einbringen und damit unmittelbar zu Ihrem Projekterfolg beitragen.

Coaching: Programmiersprachen

C++ Schulung für Fortgeschrittene: Weiterführende Programmiertechniken für C++ Entwickler

Inhalt

Themeneinleitung

  • Historie zu C++
  • Prinzipielle Compiler-Funktionalität
  • Praxistipps: Wertvolle Links im Internet

Kurze Zusammenfassung der C++ Grundlagen

  • Variablen-Kategorien, Typen, Alignment
  • Klassen und Objekte
  • Konstruktor-Arten und Destruktor
  • Operatoren mit Überladung
  • Funktionszeiger in Klassen
  • Strings und Streams
  • Klassenrelationen: Assoziation, Selbst-Assoziation, Aggregation, Komposition, Vererbung, Mehrfachvererbung und Alternativen
  • Interface-Konzept mit rein virtuellen Funktionen
  • Neue Features der aktuellen Standards
  • Übung: Sie verstehen die vorgegebene SW-Architektur und lernen dabei das Builder-Pattern kennen, implementieren Klassen, Komposition und Vererbung und testen diese automatisiert nach dem TDD-Vorgehen (Test Driven Development).
  • Dabei berücksichtigen Sie Qualitätsaspekte wie objektorientierte Programmierung, Modularisierung, Wiederverwendbarkeit und Erweiterbarkeit

Exceptions

  • Erläuterung und Programmierung Exception Handling
  • Exception-Klassen und -Hierarchien
  • Benutzer-Exceptions
  • C++ Standard-Exceptions
  • Praxistipps: Konzepte, Richtlinien
  • Übung: Sie erweitern die Übungsapplikation um flexible Ausnahmebehandlung mit Exceptions

New Style Casts

  • Static, dynamic, const und reinterpret Cast
  • Die richtige Wahl beim Einsatz
  • Bezug zu RTTI und Exception Handling

Runtime Type Information (RTTI)

  • Erläuterung und Programmierung von RTTI
  • Klasse type_info
  • Verwendungsmöglichkeiten und Konsequenzen beim Einsatz

Lamda-Funktionen

  • Syntax und Anwendung
  • Closures
  • std::function
  • Binden von Parametern

Speichermanagement

  • Speichersegmente (BSS Block Started by Symbol, Heap, Stack)
  • Vergleich und Bewertung der Datensegmente
  • Dynamisches Speichermanagement mit new und delete
  • Überladen (lokal und global) von new und delete
  • Algorithmen
  • Virtueller Destruktor
  • Placement new
  • Bezug zu Exception Handling
  • Smart Pointer: unique_ptr, shared_ptr, weak_ptr
  • Casten von Smart-Pointern
  • Praxistipps: Risiken erkennen und Stolpersteine vermeiden

Template-Funktionen und Template-Klassen

  • Prinzipielle Funktionsweise
  • Template-Funktionen, Template-Klassen und deren Anwendung
  • Beispiele für Template-Klassen
  • Vererbung und Interfaces mit Template-Klassen
  • Container/Algorithmen im STL-Stil
  • Laufzeit- vs. Compilezeit-Polymorphismus
  • Type-Traits
  • Perfect Forwarding mit Templates
  • Variadic Template-Funktionen und Template-Klassen
  • Alias-Templates
  • Praxisbeispiele für Template-Klassen
  • Übung: Sie wenden das Observer-Pattern im Design der Applikation an und implementieren es basierend auf einer containerartigen eigenen Template-Klasse

STL Standard Template Library

  • Container, Container-Adapter
  • Iteratoren
  • Algorithmen, Funktionsobjekte
  • Speicher-Allocator-Klasse
  • Praxistipp: Übersicht über alle STL-Containerelemente und deren Zusammenhänge
  • Übung: Sie wenden das Observer-Pattern im Design der Applikation an und implementieren es basierend auf einer STL-Container-Klasse

Multithreading und Atomic-Datentypen

  • Multithreading-Grundkonzepte
  • Threads, Mutex, Condition Variable, Future
  • Anwendung der Mechanismen
  • Übung: Sie adaptieren die Applikation an einen Timer und steuern sie über einen Thread. Dabei nutzen Sie mit ihren Vorteilen eine zusätzliche Betriebssystem-Abstraktion mit Wrapper-Klassen.

Typische Fallstricke und verbreitete Idiome (PIMPL, RAII, NVI, ...)

  • RAII (Resource Acquisition Is Initialization), Ressourcen-Wrapper
  • NVI (Non-virtual Interfaces)
  • PIMPL (Pointer to Implementation)
  • Handling Self-Assignment in Assignment Operator
  • Praxistipps zu weiteren C++ Idiomen

Übungen im C++ Kurs für Fortgeschrittene

  • Für die Implementierung der durchgängigen Übung (Uhrenapplikation) verwenden Sie das Microsoft Visual Studio.

MicroConsult Plus:

  • Als Teilnehmer haben Sie die folgenden Möglichkeiten, um Ihre Übungen und die von MicroConsult entwickelten Lösungen aus dem Workshop mitzunehmen:
  • Sie nehmen die Dateien direkt auf einem von MicroConsult bereitgestellten kostenfreien USB-Stick mit, oder …
  • Sie senden sich die Dateien selbst per E-Mail zu, oder …
  • Sie erhalten auf Anfrage Zugriff auf die Dateien per Download.
  • Sie erhalten den C++ Programmcode sowie das UML-Modell der Uhrenapplikation.
  • Sie bekommen alle C++ Beispiele in elektronischer Form und können diese sehr einfach für Ihr Entwicklungsenvironment anpassen.
  • Sie bekommen eine hilfreiche Notationsübersicht für UML (Unified Modeling Language) im A3 Format.

Merkzettel


Sie haben derzeit keine Trainings auf dem Merkzettel.