introduction to object oriented design
TRANSCRIPT
Intro to OOD Oleg Yaroshevych, 2012
Why
What
Scope
The Process
Object-Oriented Analysis
Process
Object-Oriented Design
Process
Why OOD
Process
Simplifies System Evolution
Define Likely to Change Aspects
A Common Design Vocabulary
Anti Patterns
OOD Process
Process
Context And Modes
Architecture
Principal Objects
Design Models
Object Interfaces
Design Quality in From The Start
Process: OOD Principles
Clarity and Simplicity
Process: OOD Principles
Separate Mutable and Immutable Aspects
Process: OOD Principles
Single Responsibility
Process: OOD Principles
Data Abstraction
Process: OOD Principles
Loose Coupling
Process: OOD Principles
Dependency Inversion
Process: OOD Principles
Dependency Injection and Inversion of Control
Process: OOD Principles
Interface Segregation
Process: OOD Principles
OOD Examples
Process
OOD Problems
Process
Redundant Models
Premature Optimization
Lack of Abstract Thinking
OOP
Process
Why OOP
Process
Ability to Design Big-Ass Systems
Stability
Reusability
OOP Principles
Process
Objects Are Independent and Encapsulate State
Functionality is Expressed in Terms of Object Services
Objects Communicate by Message Passing
Proc vs OOP
Process
Summary
Process
UML
Why UML
UML
Same Models in All Stages
Abstraction
Model The Concept, Not Implementation
“Big Picture" of The System is Useful
Sequence Diagram
UML
State Diagram
UML
Class Diagram
UML
Problems
UML
No One Knows How to Draw Properly
Stick to Code for Code
It Is a Huge Language
Patterns
Why Patterns
Patterns
Keep It Simple, Do Not Comment
Talk Patterns, Not Objects
Name The Thing
GOF Patterns
Observer
GOF Patterns
Template Method
GOF Patterns
Strategy
GOF Patterns
Proxy
GOF Patterns
Iterator and Visitor
GOF Patterns
Facade
GOF Patterns
Decorator
GOF Patterns
Enterprise Patterns
Domain Logic Patterns
Enterprise Patterns
Transaction Script
Active Record
Domain Model
ID Field
Enterprise Patterns
Identity Map
Enterprise Patterns
Repository
Enterprise Patterns
Embedded Value
Enterprise Patterns
Query Object
Enterprise Patterns
Lazy Loading
Enterprise Patterns
Unit Of Work
Enterprise Patterns
Data Mapper
Enterprise Patterns
Table Inheritance
Enterprise Patterns
Single Table Inheritance
Class Table Inheritance
Concrete Table Inheritance
Null Object (Special Case)
Enterprise Patterns
Separated Interface
Enterprise Patterns
Gateway
Enterprise Patterns
Record Set
Enterprise Patterns
Service Locator
Enterprise Patterns
Immutable (Read-Only Interface)
Enterprise Patterns
Marker Interface
Enterprise Patterns
Object Pool
Enterprise Patterns
Registry
Enterprise Patterns
Layered Architecture
Enterprise Patterns
Layer Supertype
Enterprise Patterns
Dynamic Linkage
Enterprise Patterns
Concurrency
Enterprise Patterns
Producer-Consumer
Enterprise Patterns
MVC
Patterns
MVC in Web Apps
Patterns
Domain-Specific Patterns
Patterns
User Interface
Secure Design
Web Design
Business Model
Problems
Patterns
Keep It Simple
You Ain't Gonna Need It
Some Patterns Are Not Appropriate
Architecture
DDD
Architecture
DDD Principles
Architecture
The Ubiquitous Language
Serialization
Services
Layering
SOA
Architecture
When to use SOA
Architecture
Advanced security, logging, quotas
Services Are Autonomous
Services Share Schema and Contract, Not Class
Onion
Architecture
Why Onion?
Architecture
Onion Diagram
Architecture
Onion Problems
Architecture
It Ain’t Universal Pattern
Requires Knowledge of Complex Concepts
Hard to Define System Core
Summary
Process
Patterns
Architecture
Simple!
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
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/