C++ – Design Patterns and Idioms (CPP3)
Programming, C, C++
Modern C++ lets you write reusable components and compose them through clear interfaces. It combines classic OOP — inheritance and polymorphism — with extensive compile-time techniques, offering many well-established idioms and proven design patterns.
The course shows how recent standards improve readability and enable compile-time optimization for better performance. It is updated for C++20, C++23 and C++26 while remaining adaptable to older compilers on request.
THIS TRAINING COURSE WILL HELP YOU:
- Review common design patterns and try selected ones in C++
- Explore C++-specific techniques, patterns and idioms
- Learn when each pattern makes sense in real projects
- Recognize and avoid overuse of patterns and overengineering
WHO SHOULD ATTEND?
- Developers actively working on software projects and products
- Programmers working on all types of software, including embedded
- People interested in software design and design patterns
- Developers preparing for software testing
COURSE LOCATION AND AVAILABLE DATES
Need this course in English?
Public courses are usually delivered in Czech, but this course is also available in English. We can arrange private training for your team online, at your premises or in our classrooms, and tailor the content to your needs.
For groups of around 4 or more participants, private training can already be comparable in price to booking individual places on a public course. Send us your requirements and we’ll recommend the best format and provide an exact quote.
Request training in English
Course content:
Hide details
-
Clear, maintainable code written for people
-
Use familiar practices and design patterns
-
Describe software as components and behavior
-
Separate behavior from implementation details
-
Object-oriented software design
-
Program composed of collaborating components
-
Components have assigned responsibilities
-
Reason about individual components and roles
-
Classic object-oriented programming
-
Represent components as class instances
-
Instances define component state and relations
-
Classes define behavior and component interfaces
-
Inheritance and replacing ancestor methods
-
Adjust behavior by overriding methods
-
Template Method design pattern
-
Static implementation in modern C++ (CRTP)
-
Reuse of code written once
-
Share general code via inheritance
-
Compose objects from ready-made building blocks
-
Generic data types and algorithms
-
Separating interface and concrete implementation
-
Abstract classes as interface definitions
-
Swap implementations at runtime (dynamic polymorphism)
-
Strategy design pattern
-
Dependencies between components in C++
-
Ownership (RAII), borrowing and references
-
Pointers, references and polymorphism
-
Object interactions and method calls
-
Tools of generic programming
-
Composition using generic templates
-
Policy-based design pattern
-
Move variability to compile time
-
Principles of good software design
-
Component independence and localized changes (SRP)
-
Depend on interfaces, not implementations (DIP)
-
Closed for modification, open for extension (OCP)
-
Changing component behavior at runtime
-
State machine and State design pattern
-
Modern approach using std::variant
-
Differences from classic state machines
-
Connecting interfaces with connectors
-
Separating different domains (Bridge)
-
Bridging incompatible interfaces (Adapter)
-
Exposing a simpler interface (Facade)
-
Chaining through a single interface
-
Add behavior to an existing system (Decorator)
-
Chain possible handlers (Chain of Responsibility)
-
Protecting and controlling access (Proxy)
-
Linear data structures and sequences
-
Traversing data structures (Iterator)
-
Differences between linked list and chain
-
Ending without null pointers (Null Object)
-
Composing more complex objects and components
-
Branching by concrete type (Visitor)
-
Tree-like object structures (Composite)
-
Solutions using std::variant and std::visit
-
Creating diverse object types
-
Factory for creating many kinds of objects
-
Abstract Factory for families of objects
-
Use lambdas and std::function for registration
-
Single-instance objects
-
Create a single instance in modern C++ (Singleton)
-
Managing global resources
-
Communicating state with the OS
-
Multi-step object construction
-
Builder object as an intermediate step
-
Methods to modify builder and final build
-
Split builder into multiple phases
-
Signaling and event handling
-
Central coordinating component (Mediator)
-
Registering event subscribers (Observer)
-
Signals with templates and lambdas (signals & slots)
-
Generation, streaming and lazy evaluation
-
Process sequences and pipelines (iterators, views)
-
Use message queues for decoupling
-
Generation using std::generator
-
Representing data changes
-
Describe a specific change (transaction, command)
-
Sequence of successive changes (journal)
-
Use mini-languages or bytecode (interpreter)
-
Storing and restoring state
-
Create snapshots of state (snapshot, memento)
-
Manage history of snapshots (history, recovery)
-
Combine snapshots and transactions (incremental backup)
-
Optimizing data handling
-
Data structures with instant snapshots (copy-on-write)
-
Share mostly-immutable parameters (Flyweight)
-
Cloning objects and the "rule of zero" (prototype)
-
Prerequisites:
-
Good knowledge of C++ programming.
-
Recommended previous course:
-
C++ – Metaprogramming and High-Performance Applications (CPP5)
-
Recommended follow-up course:
-
C++ – Threads, Coroutines and Asynchronous I/O (CPP4)
-
Schedule:
-
4 days (9:00-17:00)
Training and learning environment
What does the environment for in-person IT courses look like?We hold training courses in our own classrooms equipped with modern computer equipment for each participant and a large projection screen. Each workstation is fitted with a powerful computer for seamless practical exercises, and the environment supports a calm, friendly atmosphere during training.
Do I need to bring my own laptop to the classroom IT course?Our training rooms are fully equipped, so you do not need to bring your own laptop. A modern computer with all necessary hardware and software is ready for you at your workstation.
Will you receive an official certificate after completing an IT course?Yes, upon successful completion of the training course, you will receive an official ICT Pro certificate confirming your participation and acquired technical skills. You can use it to verify your qualifications or add it to your professional profile.
Where can you find our training center in Brno?The premises of the ICT Pro training center are located on the 1st floor of the COMGUARD building at Sochorova 38 in Brno. Positioned on the border of Žabovřesky and Komín, the location is easily accessible by both car and public transport.
Where can you find our training center in Prague?The premises of the ICT Pro training center are located on the 1st floor of the Opatov Park building at Líbalova 1, Prague 11 – Chodov. The location provides a comfortable environment for your education with convenient access.
What facilities and refreshments are available to you during training breaks?Our training centers feature a fully equipped kitchenette for a comfortable break during your courses. The facilities include a coffee machine, microwave, kettle, and a wide selection of drinks and snacks.
What beverage refreshments are available during your course?A beverage station with a coffee machine, teas, syrups, and water is at your disposal throughout the entire training session. You can enjoy a coffee or another drink of your choice anytime during breaks.
What light refreshments are provided for you during the courses?During course breaks, participants can enjoy light sweet snacks, pastries, and fruit syrups to mix their own drinks. Fresh water dispenser and plates are also available for your convenience.
Should I bring my own snacks to ICT Pro training?There is no need to. A wide selection of savory snacks, sweet biscuits, and snack bars is available for you during breaks. Boost your energy for all-day focus right inside the training center premises.
Can you spend training breaks in the fresh air?Yes, an outdoor terrace is available at our training center. During breaks between learning sessions, you can relax in the fresh air in a pleasant green environment.
Where can you relax during course breaks?Our training center features a spacious outdoor terrace with seating options. During breaks between learning sessions, you can step outside to relax and recharge in the fresh air.