Object Oriented Software techniques

Post on 12-Jan-2015

822 views 3 download

Tags:

description

 

Transcript of Object Oriented Software techniques

Software Architecture :

Why Distributed Object Oriented Programming ?

2 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

3 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

4 © Emmanuel FUCHS.

Raise abstraction means:

� Encapsulation

� Layering

� Interface

� Object Programming techniques

5 © Emmanuel FUCHS.

Middleware

Middleware

Network

Hardware

Network

Hardware

Operating System Operating System

Application ApplicationInterface

6 © Emmanuel FUCHS.

Middleware

Middleware

Network

Hardware

Network

Hardware

Operating System Operating System

Application Application

Object API Object API

Framework

7 © Emmanuel FUCHS.

Middleware

� Low level middleware:

� Message Passing : spaghetti plate syndrome

� RPC : no evolution

� Object middleware:

� Transparent integration

� Transparent reuse

8 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

9 © Emmanuel FUCHS.

Object figures

� Encapsulation.

� Interfaces.

� Inheritance.

� Polymorphism. (dynamic binding)

� Exception handling.

10 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

11 © Emmanuel FUCHS.

program in the future tense.

1 Day After

1 Week After

Initial Request

Future tenseprogramming

12 © Emmanuel FUCHS.

program in the future tense.

1 Day After

1 Week After

Few Weeks Later

1 Day After

Initial Request Evolution Request

13 © Emmanuel FUCHS.

Changes Sources During Development

� Requirements :

� Customers Discover What they Really Want During or at the End of Developments

� Technology

� Performances Are Increasing With Time

� Skill

� We Learn and Understand the Problem and We Discover the Right Solution on the Job

� Politic

� No Comments

14 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

15 © Emmanuel FUCHS.

Programming in “present” tense

x

y

16 © Emmanuel FUCHS.

Programming in “present” tense

Point

+print()

# int x# int y

ClientPrint()

x

y

17 © Emmanuel FUCHS.

Future

Point

+print()

# int x# int y

ClientPrint()

x

yz

18 © Emmanuel FUCHS.

Future

Point

+print()

# int x# int y

ClientPrint()

x

yz

19 © Emmanuel FUCHS.

Programming in “Future” tense

Point

+print()

# int x# int y

3DPoint

+ print()

# int z

ClientPrint()

x

yz

20 © Emmanuel FUCHS.

Programming in “Future” tense

Point

+print()

# int x# int y

3DPoint

+ print()

# int z

ClientPrint()

x

y

θθθθ

ρρρρz

21 © Emmanuel FUCHS.

Programming in “Future” tense

<<Interface>>Point

+print()

3DPoint

+ print()

ClientPrint()

x

y

θθθθ

ρρρρz

22 © Emmanuel FUCHS.

Inheritance and polymorphism

Point

+print()

1DPoint

+ print()

ClientPrint()

23 © Emmanuel FUCHS.

Inheritance and polymorphism

Point

+print()

1DPoint

+ print()

ClientPrint()

2DPoint

+ print()

24 © Emmanuel FUCHS.

Inheritance and polymorphism

Point

+print()

1DPoint

+ print()

ClientPrint()

2DPoint

+ print()

3DPoint

+ print()

25 © Emmanuel FUCHS.

Inheritance and polymorphism

Point

+print()

1DPoint

+ print()

ClientPrint()

2DPoint

+ print()

3DPoint

+ print()

NDPoint

+ print()

Teleportation

26 © Emmanuel FUCHS.

Inheritance and polymorphism

<<Interface>>Point

+print()

1DPoint

+ print()

ClientPrint()

2DPoint

+ print()

3DPoint

+ print()

NDPoint

+ print()

Teleportation

27 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

28 © Emmanuel FUCHS.

Objective-C analogy

Class Object

29 © Emmanuel FUCHS.

Implementation Interface

A driver doesn't care of engine's internal working.He only knows the interface

Object Car analogy

30 © Emmanuel FUCHS.

A driver doesn't care of engine's internal working.He only knows the interface

Object analogy

Implementation Interface

31 © Emmanuel FUCHS.

A driver doesn't care of engine's internal working.He only knows the interface

Object analogy

Implementation Interface

32 © Emmanuel FUCHS.

A driver doesn't care of engine's internal working.He only knows the interface

Object analogy

Implementation Interface

33 © Emmanuel FUCHS.

A driver doesn't care of engine's internal working.He only knows the interface

Object analogy

Implementation Interface

34 © Emmanuel FUCHS.

A driver doesn't care of engine's internal working.He only knows the interface

Object analogy

Implementation Interface

35 © Emmanuel FUCHS.

Interfacevehicle {

attributes engine

interface car {

start()accelerate()stop()

}}

car start()

36 © Emmanuel FUCHS.

Inheritance

37 © Emmanuel FUCHS.

Polymorphism

Accelerate

38 © Emmanuel FUCHS.

Interface VS implementation inheritance

Implementation

(body)

Interface

(specification)

39 © Emmanuel FUCHS.

Interface VS implementation inheritance

Accelerate

Accelerate

40 © Emmanuel FUCHS.

Inheritance and polymorphism

Point

+print()

1DPoint

+ print()

ClientPrint()

2DPoint

+ print()

3DPoint

+ print()

NDPoint

+ print()

Teleportation

41 © Emmanuel FUCHS.

Inheritance and polymorphism

<<Interface>>Point

+print()

1DPoint

+ print()

ClientPrint()

2DPoint

+ print()

3DPoint

+ print()

NDPoint

+ print()

Teleportation

42 © Emmanuel FUCHS.© Emmanuel FUCHS. THALES ATM

Distributed Object Programming

� Raising abstraction

� Object Programming

� Programming for changes

� Programming in future tense

� Programming for reuse

� Programming by interface

� Letting old code calling new code

� Polymorphism and dynamic binding

43 © Emmanuel FUCHS.

Change management before OO

Current Code Current Code

44 © Emmanuel FUCHS.

Change management before OO

New Code Old Code

45 © Emmanuel FUCHS.

Change management before OO

New Code Old Code

Old Code New Code

46 © Emmanuel FUCHS.

Change management and code reuse before OO

New Code Old Code

Old Code New Code

Modify Old Code

47 © Emmanuel FUCHS.

Change management with OO reuse

Current Code Current Code

Old Code New Code

Add new Code without Modifying Old Code

48 © Emmanuel FUCHS.

Change management with OO reuse

Current Code Current Code

Old Code New Code

Add new Code without Modifying Old Code

Framework