The course will help participants understand good object-oriented design through the medium of highly useful design patterns and help them to do clean design and code.
Day 01:
Overview on OOP, Introduction to Software Design and Architecture
○ Overview on OOP
○ Class & object
○ How does reference type work
○ Static class & method
○ Association relationship
○ Inheritance relationship
○ Method overriding
○ Abstract class & method
○ Interface: what & why
Day 02:
Code smells & Refactoring
○ Long method, Large class, Primitive obsession, Long parameter list, Data clamps
○ Switch statements
○ Temporary field
○ Refused bequest
○ Alternative classes with different interfaces
○ Divergent change
○ Parallel inheritance hierarchies
○ Shotgun surgery
○ Comments
○ Duplicate code
○ Data class
○ Dead code
○ Lazy class
○ Incomplete library class
○ Middle man
○ Inappropriate intimacy
○ Message chains
Day 03:
Software Design Principles & Patterns
○ Single responsibility principle
○ Open closed principle
○ Liskov substitution principle
○ Interface segregation principle
○ Dependency inversion principle
○ DRY- Do not repeat yourself
○ Tell do not ask
○ The law of Demeter
○ Singleton
○ Prototype
○ Builder
Day 04:
Creational Design Patterns, Structural Design Patterns
○ Abstract factory
○ Factory method
○ Adapter
○ Bridge
○ Composite
○ Decorator
○ Facade
○ Flyweight
○ Proxy
○ Chain of responsibility
○ Command
Day 05:
Creational Design Patterns, Structural Design Patterns (Cont.)
○ Interpreter
○ Iterator
○ Mediator
○ Memento
○ Observer
○ State
○ Strategy
○ Template method
○ Visitor
Certificate giving ceremony & closing program
Prerequisite:
Module | Workshop on Software Design Principles, Patterns and Practices | 35 Hrs |