Zum Campus
Videokurs

Software-Design und Design Patterns mit modernem C++

Lerne, wie Vererbung richtig funktioniert und wie du mit Design Patterns und Type Erasure besseren Code entwickelst

LERNZIELE

  • Du bekommst ein besseres Verständnis von Software Design, Abhängigkeiten und Abstraktionen
  • Du verstehst die Probleme von Vererbungshierarchien
  • Du lernst den Wert von Value Semantics kennen
  • Du wendest die moderne Implementierung einiger klassischer Design Patterns an
  • Du lernst einige moderne Design Patterns kennen

INHALT

“Inheritance is the Base Class of Evil” (Sean Parent). Vererbung hat in den letzten Jahren erheblich an Popularität verloren, und das nicht nur in C++. Doch modernes C++ baut primär auf einen anderen, vielleicht überlegenen Ansatz: “Value Semantics”. Dieser Videokurs beschäftigt sich mit der Frage, warum vererbungsbasiertes Software Design heute eher problematisch gesehen wird und warum modernes C++ auf Value Semantics ausgerichtet ist. Der Kurs demonstriert verschiedene Beispiele aus der Standardbibliothek und Beispiele in der Form von klassischen und modernen Design Patterns. Zudem geht er auf die Frage ein, wie man gute Vererbungshierarchien implementiert und wie man die bekannten Probleme und den Missbrauch von Vererbung vermeidet.

ALLE LEKTIONEN IM ÜBERBLICK

Type Erasure: Ersatz für Vererbungshierarchien?
  • Intro
  • Type Erasure: Beispiele aus der Standardbibliothek
  • Die Implementierung von std::function: Das public Interface
  • Die Implementierung von std::function: Der Kern von Type Erasure
  • Die Implementierung von std::function: Die Special Member Functions
  • Umsetzung von Type Erasure für eigene Typen
  • Performance Optimierung mittels "Small Buffer Optimization"
  • Performance Optimierung mittels "Manual Dispatch"
  • Die Performance von Type Erasure
  • Type Erasure und Referenzen
  • Quiz: Type Erasure: Ersatz für Vererbungshierarchien?
Das Decorator Design Pattern
  • Intro
  • Das GoF Decorator Design Pattern
  • Die klassische Implementierung mit Vererbungshierarchie
  • Die moderne Implementierung mit Type Erasure
  • "Policy-Based Design"
  • Moderne Implementierung mit Type Erasure und Policy-Based Design
  • Quiz: Das Decorator Design Pattern
Das Factory Method Design Pattern
  • Intro
  • Das GoF Factory Method Design Pattern
  • Die klassische Implementierung mit Vererbungshierarchien
  • Die moderne Implementierung mit Type Erasure
  • Die moderne Implementierung mit std::variant
  • Quiz: Das Factory Method Design Pattern
Vererbung ja, aber richtig!
  • Intro
  • Erfüllen des Liskov Substitution Prinzips (LSP)
  • Maximale Tiefe von Vererbungshierarchien
  • Abhängigkeiten innerhalb einer Vererbungshierarchie
  • Vererbung von Non-Base-Klassen
  • Das "Non-Virtual Interface" Idiom (NVI)
  • Das "Curiously Recurring Template Pattern" (CRTP)
  • Limitierungen des CRTP
  • Quiz: Vererbung ja, aber richtig
Das Strategy Design Pattern
  • Intro
  • Das GoF Strategy Design Pattern
  • Die klassische Implementierung mit Vererbungshierarchie
  • Die moderne Implementierung mit std::function
  • Vergleich zwischen klassischer und moderner Implementierung
  • Performance-Vergleich zwischen klassischer und moderner Implementierung
  • Quiz: Das Strategy Design Pattern
Überraschungen in Vererbungshierarchien
  • Intro
  • "Name Lookup" in Vererbungshierarchien
  • Virtuelle Funktionen und Default Parameter
  • Virtuelle Functionsaufrufe in Constructors and Destructors
  • Arrays von abgeleiteten Typen
  • Siamese Twins
  • Quiz: Überraschungen in Vererbungshierarchien
Appendix: Die SOLID Prinzipien
  • Intro
  • Das Ziel der SOLID Prinzipien
  • Das Single Responsibility Prinzip (SRP)
  • Das Open-Closed Prinzip (OCP)
  • Das Liskov-Substitution Prinzip (LSP)
  • Das Interface Segregation Prinzip (ISP)
  • Das Dependency Inversion Prinzip (DIP)
  • Quiz: Appendix – Die SOLID Prinzipien
  • Fazit und Abschluss
Einführung in den Kurs
  • Herzlich willkommen zu diesem Kurs
Vererbungshierarchien: Die guten Seiten
  • Intro
  • Das Problem: Zeichnen von Formen
  • Kommentar zu Code-Beispielen
  • Prozedurales Programmieren: Dynamischer Polymorphismus à la C
  • Prozedurales Programmieren: Erweitern mit neuen Typen
  • Objektorientiertes Programmieren: Dynamischer Polymorphishmus à la C++
  • Vergleich der beiden Lösungsansätze
  • Quiz: Vererbungshierarchien: Die guten Seiten
Vererbungshierarchien: Die dunklen Seiten
  • Intro
  • Vererbung in der C++ Community
  • Performance-Probleme/Overhead
  • Erweiterbarkeit von Typen und Operationen
  • Missbrauch von Vererbung
  • Die Geschichte von C++
  • Quiz: Vererbungshierarchien: Die dunklen Seiten
Die Philosophie des modernen C++
  • Intro
  • Was ist Value Semantics?
  • Beispiele aus der Standardbibliothek: Die STL
  • Beispiele aus der Standardbibliothek: std::optional
  • Beispiele aus der Standardbibliothek: sd::function
  • Beispiele aus der Standardbibliothek: sd::variant
  • Der Gegenspieler: "Reference Semantics"
  • Beispiele aus der Standardbibliothek: std::string_view
  • Beispiele aus der Standardbibliothek: std::span
  • Design mit "Value Semantics"
  • Quiz: Die Philosophie des modernen C++: Value Semantics
Das Visitor Design Pattern
  • Intro
  • Das GoF Visitor Design Pattern
  • Die klassische Implementierung mit Vererbungshierarchien
  • Die moderne Implementierung mit std::variant
  • Vergleich zwischen klassischer und moderner Implementierung
  • Performance-Vergleich zwischen klassischer und moderner Implementierung
  • Quiz: Das Visitor Design Pattern

SO LERNST DU MIT DIESEM KURS

In den Videokursen der heise academy lernst du IT-Themen anschaulich und verständlich. Du siehst den Experten bei der praktischen Arbeit zu und lässt dir dabei alles genau erklären. Das Wissen ist in kompakte Lerneinheiten unterteilt, sodass du den Kurs Schritt für Schritt durcharbeiten oder gezielt zu Lektionen springen kannst, die dich interessieren. Die persönliche Lernumgebung der heise academy hält viele Funktionen für dich bereit, die dich beim Lernen unterstützen:

  • Flexibler Videoplayer mit vielen Steuerungsmöglichkeiten
  • Wissensquiz zur Lernkontrolle
  • Lernhistorie und Lernfortschritt
  • Lesezeichen und Notizen
  • Volltextsuche in den Videos
  • Übungsmaterial zum Mitmachen
  • Responsive Web-App und Videostreaming für alle Endgeräte

TECHNISCHE VORAUSSETZUNGEN

Für diesen Videokurs wird lediglich ein aktueller Browser (mit eingeschalteter JavaScript-Funktionalität) und eine Internetverbindung benötigt.

DEIN EXPERTE

Klaus Iglberger
C++-Trainer und Consultant | Selbstständig

Mit viel internationaler Erfahrung widmet sich Klaus Iglberger seiner Tätigkeit als freiberuflicher Trainer und Berater für C++. Nach dem Abschluss seiner Doktorarbeit in der Informatik im Jahr 2010 spezialisierte er sich auf C++-Software-Design für große Systeme. Klaus Iglberger ist der Initiator und Hauptentwickler der Blaze C++ Mathebibliothek und einer der Organisatoren der Münchner C++ User Group. Sein Fachwissen teilt er in Kursen in Deutschland, der EU und den USA.

Foto von Klaus Iglberger

Software-Design und Design Patterns mit modernem C++

Veröffentlicht am 13.12.2025
ab 49,00 €
im
ESSENTIAL PASS
oder 245,00 € im Einzelkauf
inkl. MwSt. | 205,88 € netto
Preise und Pakete vergleichen

Du hast Fragen zu unseren academy Videokursen? Wir helfen dir gerne weiter.

Fülle ganz einfach und bequem das Kontaktformular aus und wir werden deine Fragen schnellstmöglich beantworten.

Kontaktformular