Object-Oriented Programming OO Design Patterns Object-Oriented Programming
Simple SimUDuck app A duck pond simulation game A large variety of duck species swimming and making quacking sounds Examples of duck species: mallards, red head ducks, mandarin ducks Đại học Công nghệ - ĐHQG HN OO Design Pattern
First Solution Đại học Công nghệ - ĐHQG HN OO Design Pattern
Then… ducks need to fly How to change the design? Đại học Công nghệ - ĐHQG HN OO Design Pattern
What about rubber duckies? Đại học Công nghệ - ĐHQG HN OO Design Pattern
What about decoy ducks? Đại học Công nghệ - ĐHQG HN OO Design Pattern
Disadvantage of using inheritance to provide Duck behavior? A. Code is duplicated across subclasses. B. Runtime behavior changes are difficult C. We can’t make duck dances. D. Hard to gain knowledge of all duck behaviors E. Ducks can’t fly and quack at the same time F. Changes can unintentionally affect other ducks What do you think? Đại học Công nghệ - ĐHQG HN OO Design Pattern
Your solution? Đại học Công nghệ - ĐHQG HN OO Design Pattern
Using interfaces? What do you think about this design? Đại học Công nghệ - ĐHQG HN OO Design Pattern
Separate things that vary from things that stay the same Design Principle #1 Separate things that vary from things that stay the same Đại học Công nghệ - ĐHQG HN OO Design Pattern
Separating what varies from what stays the same Đại học Công nghệ - ĐHQG HN OO Design Pattern
Program to an interface not an implementation Design Principle #2 Program to an interface not an implementation Đại học Công nghệ - ĐHQG HN OO Design Pattern
Đại học Công nghệ - ĐHQG HN OO Design Pattern
Examples Đại học Công nghệ - ĐHQG HN OO Design Pattern
Examples Programming to an implementation Programming to an interface/superclass can assign the concrete implementation at run-time Đại học Công nghệ - ĐHQG HN OO Design Pattern
Behavior interfaces and classes Other types of objects can reuse fly and quack behaviors We can add new behaviors w/o modifying any of the existing behavior classes or touching any of the Duck classes that use flying behavior Đại học Công nghệ - ĐHQG HN OO Design Pattern
Behavior interfaces and classes Other types of objects can reuse fly and quack behaviors We can add new behaviors w/o modifying any of the existing behavior classes or touching any of the Duck classes that use flying behavior Đại học Công nghệ - ĐHQG HN OO Design Pattern
Behavior interfaces and classes Other types of objects can reuse fly and quack behaviors We can add new behaviors w/o modifying any of the existing behavior classes or touching any of the Duck classes that use flying behavior Đại học Công nghệ - ĐHQG HN OO Design Pattern
Superclass Duck Đại học Công nghệ - ĐHQG HN OO Design Pattern
Superclass Duck Đại học Công nghệ - ĐHQG HN OO Design Pattern
Duck’s Subclasses Đại học Công nghệ - ĐHQG HN OO Design Pattern
Setting Behavior dynamically How? Đại học Công nghệ - ĐHQG HN OO Design Pattern
Favor composition over inheritance Design Principle #3 Favor composition over inheritance Đại học Công nghệ - ĐHQG HN OO Design Pattern
The pattern Đại học Công nghệ - ĐHQG HN OO Design Pattern
Homework Đại học Công nghệ - ĐHQG HN OO Design Pattern