Modern C++ Design Patterns is a three-day online training course with programming examples taught by Klaus Iglberger. It is offered online from 09:00 to 15:00 Aurora time (MDT), 11:00 to 17:00 EDT, 17:00 to 23:00 CET, Thursday, October 21st through Saturday, October 23nd, 2021 (before the conference).
Course Description
- How does good C++ design with a minimum of dependencies look like?
- What are the most important rules for robust, maintainable, and sustainable design?
- What are the most common pitfalls in C++ software design?
- Why does classical C++ design based on inheritance hierarchies fail so often?
- How are the classic design patterns realized in modern C++?
- What are alternatives to the classic design patterns?
- … have a detailed understanding of the essential design principles;
- … be able to design with minimum dependencies;
- … have an impression on the modern alternatives of classic design patterns;
- … have gained knowledge about modern design techniques;
- … understand how std::function, std::any, and ranges work;
- … avoid the usual pitfalls in the context of inheritance;
- … know about the importance of value semantics;
- … comprehend the advantages of non-intrusive design.
Prerequisites
- You are not aware of the impact of dependencies on code quality
- You don’t know the SOLID principles or don’t consider them for your work
- You believe object-oriented programming is about inheritance relationships
- You consider moving functionality into classes the preferred design choice
- You don’t comprehend the arcane rules when the compiler is generating the special member functions for you
- You don’t know the details of move semantics
- You want to reevaluate classic design patterns
- You want to get an impression on modern C++ design patterns
- You wonder about type erasure and expression templates or their value
Course Topics
- The Perils of Inheritance
- Value Semantics vs. Reference Semantics
- Good Public Inheritance
- Bad Public Inheritance
- Visitor
- Strategy
- Command
- State
- Observer
- Prototype
- Adapter
- External Polymorphism
- Bridge
- Type Erasure
- Factory Method
- Decorator
- Iterator
- Facade
- Proxy
- Singleton
- Template Method
- Type Erasure
- CRTP
- Expression Templates
- Policy Based Design
Register Here
Course Instructor
Klaus Iglberger is a freelancing C++ trainer and consultant and is currently on the payroll of Siemens in Nuremberg, Germany. He has finished his PhD in computer science in 2010 and since then is focused on large-scale C++ software design. He shares his experience in popular advanced C++ courses around the world (mainly in Germany, but also the EU and US). Additionally, he is the initiator and lead designer of the Blaze C++ math library and the organizer of the Munich C++ user group.