Object-Oriented Design Patterns and Best Practices in C++

Live Classroom
Duration: 5 days
Live Virtual Classroom
Duration: 5 days
Pattern figure


This course offers participants, hands-on experience with the most common object-oriented design patterns. During the course, they will learn how to apply these patterns to build superior-quality, reusable software development applications. In addition, participants will also review essential OO programming concepts as part of the program to help them develop a strong fundamental knowledge of object-oriented design patterns. The course framework is designed with sessions which require participants to work in coding labs as well as undertake several ‘mini-projects’ throughout the program to help participants effectively apply and review the design patterns in a practical manner. The course focuses on relatively advanced topics, selected specifically to provide participants with an extensive background on concepts relating to OO, combining the latest and most efficient techniques with the most effective practices.

What You'll Learn

  • Explore core concepts of Object-Oriented analysis and design using UML
  • Effectively assign responsibilities using the patterns and principles of GRASP (General Responsibility Assignment Software Patterns)
  • Use Creational, Structural and Behavior design patterns to effectively build robust, reusable applications
  • Complete all lab coding work in a C++ development environment
  • Explore a wide variety of design patterns, targeting multiple levels of coverage, focusing on the most commonly used patterns, and survey other lesser-used patterns


  • Introduction to OO design domains
    • The Process of OO analysis and design
    • OOAD process
    • Requirements capture
    • Analysis
    • Domain design
    • Detailed design
    • Architectural design
  • Classes and objects
    • Classes
    • Responsibilities and operations
    • Instances
    • Messages and objects
    • Encapsulation
    • Inheritance
    • Method overriding
    • Aggregation
    • Polymorphism
    • Polymorphism diagram
  • Review of UML diagrams
    • What is UML?
    • Introduction
    • Class diagram
    • Interaction diagrams
    • Sequence diagrams
    • Communication diagrams
    • State Machine diagrams
    • Activity diagram
    • Implementation diagrams

  • Analysis through use cases
    • Discovering the use cases
    • The use case view
    • Actors
    • Use case
    • Caveats!
    • Extending use cases
  • Static and dynamic design
    • Static design overview
    • Identifying “Good” classes
    • Specialization is not always appropriate!
    • Organizing classes into packages
    • Packages
    • Using packages
    • Dynamic design overview
  • Domain design
    • Domain design
    • Detailed design
    • Responsibilities
    • Golden rules
    • Low coupling examined

  • History and overview of patterns
  • The problem definition
  • Basics
  • Software community
  • Why choose a design pattern?
  • Definitions
  • Problems & solution
  • Crucial qualities
  • What is not a pattern?
  • Anti-Patterns
  • Patterns: Relating to methodologies
  • Design patterns
  • Potential problems with patterns
  • Classification criteria & description
  • Patterns and principles
  • The Selection process
  • Creational; Structural, behavioral
  • Gang of four patterns
  • Synopsis of GoF patterns

  • Creational patterns
    • Factory method
    • AbstractFactory
    • Singleton
    • Builder
    • Prototype
  • Survey of creational design patterns
    • Comparison of creational patterns
    • Factory, singleton, and builder analysis

  • Structural Patterns
    • Façade
    • Composite
    • Adapter
    • Proxy
    • Bridge
    • Decorator
  • Survey of structural design patterns
    • Common trends among structural patterns
    • Comparison of structural patterns
    • Factory, singleton, composite, & bridge analysis

  • Behavioral Patterns
    • Iterator
    • Observer
    • Command
    • Strategy
    • Façade and Observer Analysis
    • Visitor
    • Interpreter
    • Chain of Responsibility
    • Mediator
    • State
  • Survey of behavioral design patterns
    • Common trend among behavioral patterns
    • Encapsulation
    • Objects as arguments
    • Decoupling senders from receivers

  • Base patterns
  • Base patterns and GoF patterns
  • Gateway
  • Servlet using a gateway
  • Gateway pattern – awkward system
  • Separated interface
  • Registry: Introduction
  • Special case

  • Applying patterns
    • Usefulness of patterns
    • Selecting the right pattern
    • Adapting an existing pattern
    • Creating a new pattern
    • Language considerations
  • Packaging principles
    • Packages
    • Packages – Principles of package cohesion
    • Reuse-release equivalency principle
    • Common closure principle
    • Common reuse principle
    • Packages – principles of package coupling
    • Acyclic dependencies principle
    • Stable dependencies principle
    • Stable abstractions principle
  • Metrics
    • Metrics
    • Instability metric
    • Abstractness metric
    • Main sequence
Ripple wave

Who should attend

Anyone interested in the paradigm shifts necessary to enable organizational agility in today’s innovative business climate will find the Business Agility Foundations course compelling. The course is highly recommended for –

  • Current and aspiring business agility leaders
  • Business change agents
  • Business leaders
  • Business managers
  • Value managers
  • Product owners
  • Product managers
  • Anyone wanting a certification in ICAgile Business Agility Foundation (ICP-BAF)
  • Anyone wanting to be an ICAgile Certified Expert in Business Agility


Participants must have basic programming experience in C++. This course is not recommended for developers new to C++ programming.

Interested in this Course?

    Ready to recode your DNA for GenAI?
    Discover how Cognixia can help.

    Get in Touch
    Pattern figure
    Ripple wave