C++ Software Design
Published by O'Reilly Media, Inc.
Design principles and patterns in modern C++
In this course, you’ll:
- Learn to make strategic design decisions to improve your software design
- Understand how design patterns can help manage dependencies
- Learn how to implement design patterns in C++
Course description
Good software design is essential for the success of a software project, but software design is difficult. It requires a deep understanding of the consequences of design decisions and a good overview of available design alternatives.
Join expert Klaus Iglberger to get a thorough, practical, and one-of-a-kind overview of software design with modern C++. In two days, you’ll discover how to manage dependencies and abstractions, improve the changeability and extensibility of software entities, and apply and implement modern design patterns with today’s possibilities.
NOTE: With today’s registration, you’ll be signed up for both sessions. Although you can attend either of the sessions individually, we recommend participating in both.
Hands-on learning with interactive sandboxes
All exercises and labs will take place within an O'Reilly interactive sandbox—a complete development environment that's preconfigured with everything you need. There's nothing to install or configure; just click a link and get started!
What you’ll learn and how you can apply it
- Understand how design patterns help to manage dependencies
- Explore the most important design patterns
- Make strategic design decisions to improve your software design
- Implement design patterns in modern C++
- Improve the performance of your code
This live event is for you because...
- You’re a C++ developer.
- You’re interested in learning more about software design and design patterns.
- You want to understand the advantages and disadvantages of individual design patterns.
Prerequisites
- 1 to 2 years of C++ experience (including inheritance and template programming)
Recommended preparation:
- Read Design Patterns: Elements of Reusable Object-Oriented Software (book)
- Read C++ Software Design: Design Principles and Patterns for High-Quality Software (book)
- Read Head First Design Patterns, second edition (book)
Recommended follow-up:
- Read C++ Software Design: Design Principles and Patterns for High-Quality Software (book)
- Read Head First Design Patterns, second edition (book)
- Watch Design Patterns in the Real World: An Analysis-Based Approach (video course)
Schedule
The time frames are only estimates and may vary according to how the class is progressing.
Day 1
Getting into software design: An initial example (30 minutes)
- Presentation: Procedural versus object-oriented
- Group discussion: Pros and cons of the designs
Understanding software design and design patterns (35 minutes)
- Presentation: Explaining the terms “software design” and “design patterns”
- Q&A
- Break
The Visitor design pattern—Part I (60 minutes)
- Presentation: Introduction of the classic Visitor pattern; live coding example of std::variant
- Group discussion: Pros and cons of the classic Visitor pattern
- Q&A
- Hands-on exercise: Refactor with std::variant
- Break
The Visitor design pattern—Part II (40 minutes)
- Group discussion: Comparing the classic and modern Visitor
- Presentation: The acyclic Visitor pattern
- Hands-on exercise: Use the acyclic Visitor pattern
The Strategy design pattern—Part I (30 minutes)
- Presentation: Introducing the classic Strategy pattern
- Group discussion: Pros and cons of the classic Strategy pattern
- Break
The Strategy design pattern—Part II (45 minutes)
- Presentation: Live coding example of std::function
- Hand-on exercise: Refactor with std::function
- Group discussion: Comparing the classic and modern Strategy design pattern
Day 2
The Adapter design pattern (35 minutes)
- Presentation: Introducing the Adapter pattern
- Group discussion: Pros and cons of the Adapter pattern
- Q&A
The Prototype design pattern (30 minutes)
- Presentation: Introducing the Prototype pattern
- Group discussion: Pros and cons of the Prototype pattern
- Q&A
- Break
The Bridge design pattern (60 minutes)
- Presentation: Introduction of the Bridge pattern; live coding example
- Group discussion: Pros and cons of the Bridge pattern
- Q&A
- Break
The External Polymorphism design pattern (55 minutes)
- Presentation: Introducing the External Polymorphism pattern; live coding example
- Group discussion: Pros and cons of the External Polymorphism pattern
- Q&A
- Break
The Type Erasure design pattern (60 minutes)
- Presentation: Introducing the Type Erasure pattern
- Group discussion: Pros and cons of the Type Erasure pattern
- Q&A
Your Instructor
Klaus Iglberger
Klaus Iglberger is a freelance C++ trainer and consultant who’s been focused on large-scale C++ software design since earning his PhD in 2010. He shares his experience in popular advanced C++ courses in Germany, across the European Union, and in the United States. He’s the initiator and lead designer of the Blaze C++ math library and one of the organizers of the Munich C++ user group.