Object Oriented Design Patterns and Best Practices in C++ (TT1250-C) Course Details:

Geared for experienced developers, Object-Oriented Design Patterns and Best Practices in C++ is lab-intensive hands-on design patterns training course that explores the most common object-oriented design patterns (Gang of Four) and how to use these patterns to develop solid, robust and reusable software development applications. Students will also review essential OO programming concepts. 

Working in a hands-on environment, developers will explore key Creational, Structural and Behavior Design patterns and how they used most effectively in building robust, reusable applications. This course combines the use of hands-on coding labs with several “mini-projects” to be completed throughout the training to get the students using and reviewing the Patterns in a practical manner.  All lab coding work and examples can be performed working in a C++ development environment.  The course also contains several “thinking and drawing” lab exercises as a component of the object-oriented overview portion of the training course.

If your team requires different topics or tools, additional skills or custom approach, this course may be easily adjusted to accommodate.  We offer additional application development, design and security courses which may be blended with this course for a track that best suits your development objectives. Our team will collaborate with you to understand your needs and will target the course to focus on your specific learning objectives and goals.

    No classes are currenty scheduled for this course.

    Call (919) 283-1674 to get a class scheduled online or in your area!

Session: Introduction to OO Analysis & Design

Lesson: Introduction to OO Design Domains

  • The Process of OO Analysis and Design
  • OOAD Process
  • Requirements Capture
  • Analysis
  • Domain Design
  • Detailed Design
  • Architectural Design

Lesson: Classes and Objects

  • Classes
  • Responsibilities and Operations
  • Instances
  • Messages and Objects
  • Encapsulation
  • Inheritance
  • Method Overriding
  • Aggregation
  • Polymorphism
  • Polymorphism Diagram


Lesson: Review of UML Diagrams

  • What is UML?
  • Introduction
  • Class Diagram
  • Interaction Diagrams
  • Sequence Diagrams
  • Communication Diagrams
  • State Machine Diagrams
  • Activity Diagram
  • Implementation Diagrams

Session: Object-Oriented Analysis and Design

Lesson: Analysis Through Use Cases

  • Discovering the Use Cases
  • The Use Case View
  • Actors
  • Use Case
  • Caveats!
  • Extending Use Cases

Lesson: 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

Lesson: Domain Design

  • Domain Design
  • Detailed Design
  • Responsibilities
  • Golden Rules
  • Low Coupling Examined

Session: Introduction to Design Patterns

Lesson: Introduction to Design Patterns

  • 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

Session: Exploring Creational Design Patterns

Each Pattern below will include:

  • Context; Problem; Solution
  • Components; Implementation
  • Code Examples; Consequences
  • Review and Summary
  • Supplemental Information

Lesson: Creational Patterns

  • Factory Method
  • AbstractFactory
  • Singleton
  • Builder
  • Prototype

Lesson: Survey of Creational Design Patterns

  • Comparison of Creational Patterns
  • Factory, Singleton, and Builder Analysis

Session: Exploring Structural Design Patterns

Each Pattern below will include:

  • Context; Problem; Solution
  • Components; Implementation
  • Code Examples; Consequences
  • Review and Summary
  • Supplemental Information

Lesson: Structural Patterns

  • Façade
  • Composite
  • Adapter
  • Proxy
  • Bridge
  • Decorator

Lesson: Survey of Structural Design Patterns

  • Common Trends Among Structural Patterns
  • Comparison of Structural Patterns
  • Factory, Singleton, Composite, & Bridge Analysis

Session: Exploring Behavioral Design Patterns

NOTE: Each Pattern below will include:
Context; Problem; Solution
Components; Implementation
Code Examples; Consequences
Review and Summary
Supplemental Information

Lesson: Behavioral Patterns

  • Iterator
  • Observer
  • Command
  • Strategy
  • Façade and Observer Analysis
  • Visitor
  • Interpreter
  • Chain of Responsibility
  • Mediator
  • State

Lesson: Survey of Behavioral Design Patterns

  • Common Trend Among Behavioral Patterns
  • Encapsulation
  • Objects as Arguments
  • Decoupling Senders from Receivers

Session: Base Patterns

NOTE: Each Pattern below will include:
Context; Problem; Solution
Components; Implementation
Code Examples; Consequences
Review and Summary
Supplemental Information

Lesson: Base Patterns

  • Base Patterns
  • Base Patterns and GoF Patterns
  • Gateway
  • Servlet Using a Gateway
  • Gateway Pattern – Awkward System
  • Separated Interface
  • Registry: Introduction
  • Special Case

Session: Working with Patterns

Lesson: Applying Patterns

  • Usefulness of Patterns
  • Selecting the Right Pattern
  • Adapting an Existing Pattern
  • Creating a New Pattern
  • Language Considerations
  • Lesson: 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

Lesson: Metrics

  • Metrics
  • Instability metric
  • Abstractness metric
  • Main Sequence

*Please Note: Course Outline is subject to change without notice. Exact course outline will be provided at time of registration.

This course begins with a review of core concepts of Object Oriented analysis & design using UML (approximately one day). Students will learn how to effectively assign responsibilities using the patterns and principles of GRASP (General Responsibility Assignment Software Patterns). Throughout the remainder of the course we will explore a wide variety of design patterns, targeting levels of coverage to focus on the most commonly used Patterns, and to simply survey others. Students will compare and contrast patterns and will explore the advantages and disadvantages of using certain patterns for explicit development functions in the C++ environment. 

This course consists of approximately 50% hands-on lab work (Patterns) and group dynamics exercises (for OOAD).  Throughout the course students will be led through a series of progressively advanced topics, where each topic consists of lecture and group discussion.  This class is “technology-centric”, designed to train attendees in essential OO background coupling the most current, effective techniques with the most effective practices.

Attendees should be familiar with UML and have basic programming experience in C++.  This course is not recommended for developers new to C++ programming.

Attending students should have recently attended the following course(s) or have practical experience in this area:

  • Basic C++ Programming for Non-Programmers (TTC2000-C)
  • Introduction to C++ Programming | Intensive C++ (TTC2100-C)

This an introductory-level programming course, designed for experienced C++ developers who need to identify, design, and lead the implementation of OO projects. We will explore and apply the terminology, the specification, the processes and technologies specific to OO. Examples are written in C++.

Ready to Jumpstart Your IT Career?

CONTACT US NOW!