43
Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros [email protected] | @brendoneus http://brendan.enrick.com/

Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros [email protected] | @brendoneus

Embed Size (px)

Citation preview

Page 1: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Object Oriented Programming Principles, Practices, and Patterns

Brendan Enrick

NimblePros

[email protected] | @brendoneus

http://brendan.enrick.com/

Page 2: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Thank You!Organizers

Prize Sponsors

Page 3: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Principles Practices Patterns

Page 4: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Object Oriented Principles

Page 5: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Principles

Abstraction Encapsulation

Inheritance Polymorphism

Composition

Page 6: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Abstraction

“obscure unimportant details”

Data Abstraction & Control Abstraction

Page 7: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Control Abstraction

“defined set of operations”

“grouping steps together”

Page 8: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus
Page 9: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Data Abstraction

“defined set of data”

“grouping data together”

Page 10: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Data Abstraction Example

Car

Engine

Wheels

Windshield

Doors

Page 11: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Abstraction Demo

Page 12: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Encapsulation

“keeping secrets”

“black box”

Page 13: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

What is my balance?

Encapsulation Example

Customer Banker

Where did the money come from? How did he know the balance?Did the transaction get recorded?

I would like to withdraw $25.

Two hundred dollars.

Here. (Gives $25)

Page 14: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Encapsulation Demo

Page 15: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Inheritance

“is a”

Page 16: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Inheritance Example

Vehicle

LandVehicle

Car Bicycle

WaterVehicle

Boat

Page 17: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Inheritance Example

WindowLookThrough()

SlidingWindowLookThrough()

Open()Close()

SkylightLookThrough()

Page 18: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Inheritance Demo

Page 19: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Polymorphism

“works like a”

Page 20: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Composition

“has a”

Page 21: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Composition Example

• Employee has a manager.• Order has a customer.

Page 22: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Polymorphism

AB

C

Page 23: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Polymorphism Example – Play Catch

CatcherThrower

Baseball

Football

Bowlingball

Page 24: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Polymorphism Demo

Page 25: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Object Oriented Practices

Page 26: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

SOLID

• Steve Smith will be discussing these later.

Page 27: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Favor Composition Over Inheritance

• Encourages less coupling.

Page 28: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

No circular dependencies

• Dependency structures must always be a DAG.

Page 29: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Stable Dependencies Principle

• Depend only on that which is more stable than yourself.

• Stability == Less changing

Page 30: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Abstract Classes are Stable

• A package consisting of only abstract classes is very stable.

• Implementation details change far more than interfaces.

Page 31: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Use Patterns

• Use proven patterns to solve design problems.

• Most problems are solved using variations of different problems.

Page 32: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Paradigm Segregation

• When connecting two different programming paradigms, use an interface layer to segregate them.

Page 33: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Object Oriented Patterns

Page 34: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Encapsulating Algorithms

Strategy Pattern

• Encapsulates algorithms and makes them interchangeable.

• Flexible• Composition-based

Template Method Pattern

• Outlines an algorithm and allows subclasses to define specifics.

• Great code reuse.• Inheritance-based

Page 35: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Strategy Pattern

• Through the use of encapsulation, abstraction, polymorphism, and composition, defines a set of interchangeable algorithms.

Page 36: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Strategy Pattern

• Use polymorphism to define each algorithm and use them interchangeably.

Page 37: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Strategy Pattern Example

Basketball Player Selection

Height Speed Shooting

Page 38: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Strategy Pattern Demo

Page 39: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Template Method Pattern

• Through encapsulation, abstraction, polymorphism, and inheritance, allows a subclass to redefine certain steps of an algorithm without changing the structure of the algorithm.

Page 40: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Template Method Pattern

Pizza Making

• Knead Dough• Add Toppings• Bake• Cut Slices

Pie Making

• Form Crust• Add Filling• Bake• Cut Slices

Page 41: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Template Method Pattern

Crusted Baking

• Prepare Crust• Add Ingredients• Bake• Cut Slices

Page 42: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus

Template Method Pattern Demo

Page 43: Object Oriented Programming Principles, Practices, and Patterns Brendan Enrick NimblePros benrick@nimblepros.com | @brendoneus