Object Oriented Software techniques
-
Upload
emmanuel-fuchs -
Category
Technology
-
view
822 -
download
3
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