Overview
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.
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 duration
4 Days
Course outline
- 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 Pattern
- Adapter
- Decorator
- Proxy
- Facade
- Composite
- Flyweight
- Bridge
- Introduction to Behavioral Patterns
- Chain of Responsibility
- Strategy
- Iterator
- 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
|