Training Categories
Click on a link to see more about each course.
Course Outline
Dates Offered (click on the desired date to register):
This course is currently not scheduled for the near future.
Design Patterns
Course Number: OODP
Course Description: This advanced Object-Oriented course provides software architects and designers with skills to create high quality object-oriented designs exhibiting improved flexibility, reduced maintenance costs, and with increased understanding of the resulting code. Participants learn more than 30 object-oriented patterns, including the 23 micro-architectures in "Design Patterns: Elements of Reusable Object-Oriented Software", by Gamma, Helm, Johnson, and Vlissides (the gang-of-four, or GoF book). Application examples and code snippets are provided to illustrate the patterns and the rationale for using that pattern in a given situation.
Objectives: Upon completion of this course, participants will be able to:
• Improve Software Architecture
• Build Design Pattern Vocabulary
• Apply various design patterns
• Write better object-oriented code
• Improve documenting object-oriented code
• Review relevant UML notation
Benefits:
Target Audience: Software architects and designers requiring advanced design skills.
Prerequisites: Object-Oriented Analysis & Design-UML or equivalent experience. At least 6 months experience programming with an object-oriented programming language.
Course Length: Instructor Led
CourseTopics:
Course Contents
Course Introduction
- Course Objectives
- Course Overview
- Suggested References
Design Pattern Overview
- Objectives in Software Design/Module Design
- Overview of Patterns
- Qualities of a Pattern
- Pattern Systems
- Heuristics vs. Patterns
Principles of Object-Oriented Design
- Overview of Principles
- Single-Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Tell vs. Ask
- Command/Query Separation (CQS)
- Composed Method
- Combined Method
- Liskov Substitution Principle (LSP)
- Dependency Inversion Principle (DIP)
- Interface Segregation Principle (ISP)
- Law of Demeter
Principles of Package Architecture
- Package Cohesion Principles
- Package Coupling Principles
- Martin Package Metrics
Basic Object-Oriented Design Patterns
- Delegation vs. Inheritance
- Interface
- Immutable
- Null Object
- Marker Interface 1
- General Responsibility Assignment Software Patterns
Catalog of GoF Patterns
- Overview of GoF Patterns
- Introduction to Creation Patterns
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
- Introduction to Structural Patterns
- Adapter
- Decorator
- Proxy
- Facade
- Composite
- Flyweight
- Bridge
- Summary of Structural Patterns
- Introduction to Behavioral Patterns
- Chain of Responsibility
- Iterator
- Strategy
- Template Method
- Mediator
- Observer
- Memento
- Command
- State
- Visitor
- Interpreter Other Micro-Architecture and System Patterns
- Object Pool
- Worker Thread
- Dynamic Linkage
- Cache Management
- Type Object
- Extension Object
- Smart Pointer (C++)
- Session
- Transaction
Concurrency Patterns
- Single Threaded Execution
- Guarded Suspension
- Balking
- Scheduler
- Read/Write Lock
- Producer/Consumer
- Two-Phase Termination
- Double-Checked Locking
Patterns-Oriented Software Architecture
- Systems of Patterns
- Architectural Patterns
- Layers Architecture
- Pipes & Filters Architecture
- Blackboard Architecture
- Broker
- Model-View-Controller
- Presentation-Abstraction-Control
- Reflection
- Microkernel
- Catalog of J2EE Patterns
- J2EE Pattern Relationships
Selected Process Patterns (from PLoP)
- The Selfish Class
- Patterns for Evolving Frameworks
- Patterns for Designing in Teams
- Patterns for System Testing
Selected Anti-Patterns
- Stovepipe System
- Stovepipe Enterprise
- Reinvent the Wheel
- Golden Hammer
- Death by Planning
- Death March Projects
- Additional Management Anti-Patterns
Patterns Summary
Appendix A: UML Review
Appendix B: C# Code Examples for GoF
Appendix C: Maze Game Java Code
Appendix D: Possible Solutions for Exercises
Appendix E: Diagram Worksheets