introduction to object oriented design

82
Intro to OOD Oleg Yaroshevych, 2012

Upload: oleg-yaroshevych

Post on 05-Jul-2015

374 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introduction to Object Oriented Design

Intro to OOD Oleg Yaroshevych, 2012

Page 2: Introduction to Object Oriented Design

Why

Page 3: Introduction to Object Oriented Design

What

Page 4: Introduction to Object Oriented Design

Scope

Page 5: Introduction to Object Oriented Design

The Process

Page 6: Introduction to Object Oriented Design

Object-Oriented Analysis

Process

Page 7: Introduction to Object Oriented Design

Object-Oriented Design

Process

Page 8: Introduction to Object Oriented Design

Why OOD

Process

Simplifies System Evolution

Define Likely to Change Aspects

A Common Design Vocabulary

Anti Patterns

Page 9: Introduction to Object Oriented Design

OOD Process

Process

Context And Modes

Architecture

Principal Objects

Design Models

Object Interfaces

Page 10: Introduction to Object Oriented Design

Design Quality in From The Start

Process: OOD Principles

Page 11: Introduction to Object Oriented Design

Clarity and Simplicity

Process: OOD Principles

Page 12: Introduction to Object Oriented Design

Separate Mutable and Immutable Aspects

Process: OOD Principles

Page 13: Introduction to Object Oriented Design

Single Responsibility

Process: OOD Principles

Page 14: Introduction to Object Oriented Design

Data Abstraction

Process: OOD Principles

Page 15: Introduction to Object Oriented Design

Loose Coupling

Process: OOD Principles

Page 16: Introduction to Object Oriented Design

Dependency Inversion

Process: OOD Principles

Page 17: Introduction to Object Oriented Design

Dependency Injection and Inversion of Control

Process: OOD Principles

Page 18: Introduction to Object Oriented Design

Interface Segregation

Process: OOD Principles

Page 19: Introduction to Object Oriented Design

OOD Examples

Process

Page 20: Introduction to Object Oriented Design

OOD Problems

Process

Redundant Models

Premature Optimization

Lack of Abstract Thinking

Page 21: Introduction to Object Oriented Design

OOP

Process

Page 22: Introduction to Object Oriented Design

Why OOP

Process

Ability to Design Big-Ass Systems

Stability

Reusability

Page 23: Introduction to Object Oriented Design

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

Proc vs OOP

Process

Page 25: Introduction to Object Oriented Design

Summary

Process

Page 26: Introduction to Object Oriented Design

UML

Page 27: Introduction to Object Oriented Design

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

Sequence Diagram

UML

Page 29: Introduction to Object Oriented Design

State Diagram

UML

Page 30: Introduction to Object Oriented Design

Class Diagram

UML

Page 31: Introduction to Object Oriented Design

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

Patterns

Page 33: Introduction to Object Oriented Design

Why Patterns

Patterns

Keep It Simple, Do Not Comment

Talk Patterns, Not Objects

Name The Thing

Page 34: Introduction to Object Oriented Design

GOF Patterns

Page 35: Introduction to Object Oriented Design

Observer

GOF Patterns

Page 36: Introduction to Object Oriented Design

Template Method

GOF Patterns

Page 37: Introduction to Object Oriented Design

Strategy

GOF Patterns

Page 38: Introduction to Object Oriented Design

Proxy

GOF Patterns

Page 39: Introduction to Object Oriented Design

Iterator and Visitor

GOF Patterns

Page 40: Introduction to Object Oriented Design

Facade

GOF Patterns

Page 41: Introduction to Object Oriented Design

Decorator

GOF Patterns

Page 42: Introduction to Object Oriented Design

Enterprise Patterns

Page 43: Introduction to Object Oriented Design

Domain Logic Patterns

Enterprise Patterns

Transaction Script

Active Record

Domain Model

Page 44: Introduction to Object Oriented Design

ID Field

Enterprise Patterns

Page 45: Introduction to Object Oriented Design

Identity Map

Enterprise Patterns

Page 46: Introduction to Object Oriented Design

Repository

Enterprise Patterns

Page 47: Introduction to Object Oriented Design

Embedded Value

Enterprise Patterns

Page 48: Introduction to Object Oriented Design

Query Object

Enterprise Patterns

Page 49: Introduction to Object Oriented Design

Lazy Loading

Enterprise Patterns

Page 50: Introduction to Object Oriented Design

Unit Of Work

Enterprise Patterns

Page 51: Introduction to Object Oriented Design

Data Mapper

Enterprise Patterns

Page 52: Introduction to Object Oriented Design

Table Inheritance

Enterprise Patterns

Single Table Inheritance

Class Table Inheritance

Concrete Table Inheritance

Page 53: Introduction to Object Oriented Design

Null Object (Special Case)

Enterprise Patterns

Page 54: Introduction to Object Oriented Design

Separated Interface

Enterprise Patterns

Page 55: Introduction to Object Oriented Design

Gateway

Enterprise Patterns

Page 56: Introduction to Object Oriented Design

Record Set

Enterprise Patterns

Page 57: Introduction to Object Oriented Design

Service Locator

Enterprise Patterns

Page 58: Introduction to Object Oriented Design

Immutable (Read-Only Interface)

Enterprise Patterns

Page 59: Introduction to Object Oriented Design

Marker Interface

Enterprise Patterns

Page 60: Introduction to Object Oriented Design

Object Pool

Enterprise Patterns

Page 61: Introduction to Object Oriented Design

Registry

Enterprise Patterns

Page 62: Introduction to Object Oriented Design

Layered Architecture

Enterprise Patterns

Page 63: Introduction to Object Oriented Design

Layer Supertype

Enterprise Patterns

Page 64: Introduction to Object Oriented Design

Dynamic Linkage

Enterprise Patterns

Page 65: Introduction to Object Oriented Design

Concurrency

Enterprise Patterns

Page 66: Introduction to Object Oriented Design

Producer-Consumer

Enterprise Patterns

Page 67: Introduction to Object Oriented Design

MVC

Patterns

Page 68: Introduction to Object Oriented Design

MVC in Web Apps

Patterns

Page 69: Introduction to Object Oriented Design

Domain-Specific Patterns

Patterns

User Interface

Secure Design

Web Design

Business Model

Page 70: Introduction to Object Oriented Design

Problems

Patterns

Keep It Simple

You Ain't Gonna Need It

Some Patterns Are Not Appropriate

Page 71: Introduction to Object Oriented Design

Architecture

Page 72: Introduction to Object Oriented Design

DDD

Architecture

Page 73: Introduction to Object Oriented Design

DDD Principles

Architecture

The Ubiquitous Language

Serialization

Services

Layering

Page 74: Introduction to Object Oriented Design

SOA

Architecture

Page 75: Introduction to Object Oriented Design

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

Onion

Architecture

Page 77: Introduction to Object Oriented Design

Why Onion?

Architecture

Page 78: Introduction to Object Oriented Design

Onion Diagram

Architecture

Page 79: Introduction to Object Oriented Design

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

Summary

Process

Patterns

Architecture

Simple!

Page 81: Introduction to Object Oriented Design

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

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/