Skip to content
  • Sign In
  • Try Now
View all events
C++

C++ Software Design

Published by O'Reilly Media, Inc.

Intermediate content levelIntermediate

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:

Recommended follow-up:

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.