C++ Design and Best Practices - virtual



Kursarrangør: Glasspaper AS
Sted: Nettkurs / Nettstudie
Hele landet
Type:Nettkurs og nettstudie
Studie / yrkesutdanning
Undervisningstid: kl 09:00 - 16:00
Varighet: 3 days
Pris: 22.900

We provide virtual course about C++ Design and Best Practices. C++ is an exquisitely rich language, packed with fascinating language features and extensive library capabilities. Learning the syntax and STL nuances is a task in itself.

Course description:
This course goes beyond the syntax and library to focus on C++ design principles and best practices. The course describes how to design C++ systems so that they are modular, maintainable, extensible, and pluggable. We take a detailed look at the SOLID principles and see how to apply them using modern C++ techniques. We also lift the lid on many design patterns, implementation patterns and C++ idioms and see how they remain relevant in C++ today.

What you will learn:
• Understanding the SOLID principles and how to apply them
• How to design for modularity, maintainability, extensibility, and pluggability
• How to design object relationships and class relationships effectively
• How to make use of static typing via templates and concepts
• How to apply design patterns using modern C++ techniques
• C++ coding best practices

Course outline:
Module 1 - Getting Started:
• The Importance of Software Design; The Art of Software Design; OO Modelling

Module 2 - Designing for Change:
• The Single Responsibility Principle (SRP); SRP Example; The DRY Principle

Module 3 - Segregating Interfaces:
• Interfaces in C++; The Interface Segregation Principle (ISP); Applying the ISP to Template Types

Module 4 - Designing for Extensibility:
• The Open-Closed Principle (OCP); The OCP and Inheritance; The OCP and Template Specialization

Module 5 - Designing Object Relationships:
• Setting the Scene; Association; Composition; Using Smart Pointers Appropriately

Module 6 - Managing Resources with RAII:
• Overview of RAII; Real-World RAII Examples; Managing Dynamic Objects with RAII

Module 7 - Designing for Consistency [The Principle of Least Surprise]:
• The Liskov Substitution Principle (LSP); The LSP and Expectation Management; Covariance and Contravariance; The LSP and Static Typing.

Module 8 - Designing for Pluggability:
• Defining a Pluggable Hierarchy; Managing Dependencies; Organizing Projects and Libraries

Module 9 - Introduction to Design Patterns:
• Essential Concepts; Design Pattern Classification; Anti-Patterns; Design Heuristics

Module 10 - Creational Design Patterns:
• Factory Method Pattern; Abstract Factory Pattern; Prototype Pattern; Builder Pattern

Module 11 - Structural Design Patterns:
• Composite Pattern; Decorator Pattern; Static Polymorphism via Templates; Object Adapter / Class Adapter Patterns; Bridge Pattern.

Module 12 - Behavioural Design Patterns:
• State Pattern; Command Pattern; Strategy Pattern; Visitor Pattern; Implementing the Visitor Pattern via std:variant

Instructor: Andy Olsen

Andy is a freelance consultant and instructor based in the UK, working mostly in the City of London and Oxford. Andy has been working with .NET since the Beta 1 days and has extensive experience in many facets of .NET development including WCF, WPF, WF, ASP.NET MVC Web development, and mobile applications. Andy has designed and written many Microsoft Official Curriculum courses in the last decade, and has been engaged as author and technical reviewer with Apress on some of their biggest selling books.

Target audience:
Anyone who wants course about C++ Design and Best Practices

Prerequisites:
• Solid programming experience in C++

Language:
• The course is given in english