introduction to object oriented design
TRANSCRIPT
![Page 1: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/1.jpg)
Intro to OOD Oleg Yaroshevych, 2012
![Page 2: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/2.jpg)
Why
![Page 3: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/3.jpg)
What
![Page 4: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/4.jpg)
Scope
![Page 5: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/5.jpg)
The Process
![Page 6: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/6.jpg)
Object-Oriented Analysis
Process
![Page 7: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/7.jpg)
Object-Oriented Design
Process
![Page 8: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/8.jpg)
Why OOD
Process
Simplifies System Evolution
Define Likely to Change Aspects
A Common Design Vocabulary
Anti Patterns
![Page 9: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/9.jpg)
OOD Process
Process
Context And Modes
Architecture
Principal Objects
Design Models
Object Interfaces
![Page 10: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/10.jpg)
Design Quality in From The Start
Process: OOD Principles
![Page 11: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/11.jpg)
Clarity and Simplicity
Process: OOD Principles
![Page 12: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/12.jpg)
Separate Mutable and Immutable Aspects
Process: OOD Principles
![Page 13: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/13.jpg)
Single Responsibility
Process: OOD Principles
![Page 14: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/14.jpg)
Data Abstraction
Process: OOD Principles
![Page 15: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/15.jpg)
Loose Coupling
Process: OOD Principles
![Page 16: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/16.jpg)
Dependency Inversion
Process: OOD Principles
![Page 17: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/17.jpg)
Dependency Injection and Inversion of Control
Process: OOD Principles
![Page 18: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/18.jpg)
Interface Segregation
Process: OOD Principles
![Page 19: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/19.jpg)
OOD Examples
Process
![Page 20: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/20.jpg)
OOD Problems
Process
Redundant Models
Premature Optimization
Lack of Abstract Thinking
![Page 21: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/21.jpg)
OOP
Process
![Page 22: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/22.jpg)
Why OOP
Process
Ability to Design Big-Ass Systems
Stability
Reusability
![Page 23: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/23.jpg)
OOP Principles
Process
Objects Are Independent and Encapsulate State
Functionality is Expressed in Terms of Object Services
Objects Communicate by Message Passing
![Page 24: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/24.jpg)
Proc vs OOP
Process
![Page 25: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/25.jpg)
Summary
Process
![Page 26: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/26.jpg)
UML
![Page 27: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/27.jpg)
Why UML
UML
Same Models in All Stages
Abstraction
Model The Concept, Not Implementation
“Big Picture" of The System is Useful
![Page 28: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/28.jpg)
Sequence Diagram
UML
![Page 29: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/29.jpg)
State Diagram
UML
![Page 30: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/30.jpg)
Class Diagram
UML
![Page 31: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/31.jpg)
Problems
UML
No One Knows How to Draw Properly
Stick to Code for Code
It Is a Huge Language
![Page 32: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/32.jpg)
Patterns
![Page 33: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/33.jpg)
Why Patterns
Patterns
Keep It Simple, Do Not Comment
Talk Patterns, Not Objects
Name The Thing
![Page 34: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/34.jpg)
GOF Patterns
![Page 35: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/35.jpg)
Observer
GOF Patterns
![Page 36: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/36.jpg)
Template Method
GOF Patterns
![Page 37: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/37.jpg)
Strategy
GOF Patterns
![Page 38: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/38.jpg)
Proxy
GOF Patterns
![Page 39: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/39.jpg)
Iterator and Visitor
GOF Patterns
![Page 40: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/40.jpg)
Facade
GOF Patterns
![Page 41: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/41.jpg)
Decorator
GOF Patterns
![Page 42: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/42.jpg)
Enterprise Patterns
![Page 43: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/43.jpg)
Domain Logic Patterns
Enterprise Patterns
Transaction Script
Active Record
Domain Model
![Page 44: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/44.jpg)
ID Field
Enterprise Patterns
![Page 45: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/45.jpg)
Identity Map
Enterprise Patterns
![Page 46: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/46.jpg)
Repository
Enterprise Patterns
![Page 47: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/47.jpg)
Embedded Value
Enterprise Patterns
![Page 48: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/48.jpg)
Query Object
Enterprise Patterns
![Page 49: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/49.jpg)
Lazy Loading
Enterprise Patterns
![Page 50: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/50.jpg)
Unit Of Work
Enterprise Patterns
![Page 51: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/51.jpg)
Data Mapper
Enterprise Patterns
![Page 52: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/52.jpg)
Table Inheritance
Enterprise Patterns
Single Table Inheritance
Class Table Inheritance
Concrete Table Inheritance
![Page 53: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/53.jpg)
Null Object (Special Case)
Enterprise Patterns
![Page 54: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/54.jpg)
Separated Interface
Enterprise Patterns
![Page 55: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/55.jpg)
Gateway
Enterprise Patterns
![Page 56: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/56.jpg)
Record Set
Enterprise Patterns
![Page 57: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/57.jpg)
Service Locator
Enterprise Patterns
![Page 58: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/58.jpg)
Immutable (Read-Only Interface)
Enterprise Patterns
![Page 59: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/59.jpg)
Marker Interface
Enterprise Patterns
![Page 60: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/60.jpg)
Object Pool
Enterprise Patterns
![Page 61: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/61.jpg)
Registry
Enterprise Patterns
![Page 62: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/62.jpg)
Layered Architecture
Enterprise Patterns
![Page 63: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/63.jpg)
Layer Supertype
Enterprise Patterns
![Page 64: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/64.jpg)
Dynamic Linkage
Enterprise Patterns
![Page 65: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/65.jpg)
Concurrency
Enterprise Patterns
![Page 66: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/66.jpg)
Producer-Consumer
Enterprise Patterns
![Page 67: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/67.jpg)
MVC
Patterns
![Page 68: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/68.jpg)
MVC in Web Apps
Patterns
![Page 69: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/69.jpg)
Domain-Specific Patterns
Patterns
User Interface
Secure Design
Web Design
Business Model
![Page 70: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/70.jpg)
Problems
Patterns
Keep It Simple
You Ain't Gonna Need It
Some Patterns Are Not Appropriate
![Page 71: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/71.jpg)
Architecture
![Page 72: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/72.jpg)
DDD
Architecture
![Page 73: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/73.jpg)
DDD Principles
Architecture
The Ubiquitous Language
Serialization
Services
Layering
![Page 74: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/74.jpg)
SOA
Architecture
![Page 75: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/75.jpg)
When to use SOA
Architecture
Advanced security, logging, quotas
Services Are Autonomous
Services Share Schema and Contract, Not Class
![Page 76: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/76.jpg)
Onion
Architecture
![Page 77: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/77.jpg)
Why Onion?
Architecture
![Page 78: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/78.jpg)
Onion Diagram
Architecture
![Page 79: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/79.jpg)
Onion Problems
Architecture
It Ain’t Universal Pattern
Requires Knowledge of Complex Concepts
Hard to Define System Core
![Page 80: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/80.jpg)
Summary
Process
Patterns
Architecture
Simple!
![Page 81: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/81.jpg)
Reference
Books
Bishop J. - C# 3.0 Design Patterns
Design Patterns Elements of Reusable Object-Oriented Software
Mark Priestley - Practical Object-oriented Design with UML
Object-Oriented Analysis and Design Using UML. Sun microsystems
Object Oriented Design Standards. The Corelinux Consortium
Scott Millett - Professional ASP.NET Design Patterns
Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson - Head First Design Patterns
Presentations
http://www.slideshare.net/spriebsch/advanced-oop-and-design-patterns
http://www.slideshare.net/sudarsun/object-oriented-design
http://www.slideshare.net/elfuchs/o-o-d
![Page 82: Introduction to Object Oriented Design](https://reader034.vdocument.in/reader034/viewer/2022052413/5598c9451a28ab45568b46b1/html5/thumbnails/82.jpg)
Links Demo Code
https://github.com/yaroshevych/OnionReference
My Github and Slideshare profiles
http://yaroshevy.ch/about
Images
David Gallard http://www.flickr.com/photos/mrguep/4203634376/in/photostream/
Joanjo Aguar Matoses http://www.flickr.com/photos/joanjo_aguar_matoses/4624775173/in/photostream/
Adam Wyles http://www.flickr.com/photos/the-travelling-bum/5262087254/in/photostream/
Don Buciak II http://www.flickr.com/photos/donbuciak/5448599489/in/photostream/
David Gallard http://www.flickr.com/photos/mrguep/4202876501/in/photostream/
Francisco Gonzalez http://www.flickr.com/photos/franciscojgonzalez/8087008004/in/photostream/
David Gallard http://www.flickr.com/photos/mrguep/4203635248/in/photostream/
License
CC BY-NC-ND 2.0 http://creativecommons.org/licenses/by-nc-nd/2.0/