Object Oriented Design Patterns and Best Practices in C++ (TT1250-C)
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.
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++.