Object Oriented Programming Paradigm<br />1. Abstraction Thinking  and Programming Paradigm<br />
Outline<br />Programming Paradigm<br />Abstraction Thinking<br />Main Programming Paradigms<br />
Programming Languages<br />Ruby<br />Go<br />Lua<br />C++<br />Fortress<br />Groovy<br />Scala<br />Python<br />Perl<br />...
Design Pattern<br />
Design Principle<br />
Programming Paradigm<br />
Programming Paradigms<br />
Example: Database Paradigm<br />
Outline<br />Programming Paradigm<br />Abstraction Thinking<br />Main Programming Paradigms<br />
The most important ability of programmer<br />
What’s is Abstract?<br />
Abstract is Glasses<br />
What is he looking for?<br />
Abstraction is the unchanged in change<br />
Abstraction Dimension<br />
UML: a diagram is a dimension<br />
Abstraction Hierarchy<br />
Summary<br />Abstraction Dimension<br />Abstraction Hierarchy<br />
Outline<br />Programming Paradigm<br />Abstraction Thinking<br />Main Programming Paradigms<br />
Programming Paradigms<br />
Algorithm<br />David Hilbert,1862 –1943<br />
Hilbert 10th Problem<br />Find an algorithm to determine whether a given polynomial Diophantine equation with integer coef...
Imperative vs Declarative<br />
What’s Computable? <br />Alan Turing, 1912 – 1954<br />
Turing Machine<br />
Socket State Machine<br />
Von Neumann Architecture<br />Von Neumann, 1903 –1957<br />
Von Neumann Architecture<br />Stored Program<br />
Imperative Programming<br />Input<br />Instructions<br />Data<br />Output<br />Program = Data Structure + Algorithm<br />
Assembly Language<br />
Procedural Programming<br />Procedure Abstraction<br />Imperative Programming<br />Procedural Programming<br />
Procedure Abstraction<br />How to do => What to do, e.g. gcd(int a, int b)<br />Procedure Hierarchy<br />Modular<br />
Structured Programming<br />Edsger Wybe Dijkstra, 1930 - 2002<br />
Dijkstra: Goto is Harmful<br />Static Program vs Dynamic Process<br />
Structured Program Theorem<br />Sequence<br />Repetition<br />Selection<br />
Structured Programming<br />
Imperative Programming Paradigm<br />
Imperative Programming Languages<br />Assembly<br />C<br />BASIC<br />Fortan<br />Ada<br />PASCAL<br />
Imperative vs Declarative<br />
What is computable?<br />Alonzo Church, 1903 - 1995<br />
Church-Turing Thesis<br />Lambda Calculus = Turing Machine<br />
Functional Programming<br />x + y<br />lambda(x, y) => x + y<br />(x, y)<br />It’s all about functions<br />
Higher Order Function<br />let f = lambda(x, y) => x + y<br />f(1, 2) = 1 + 2 = 3<br />f(5, y) = 5 + y<br />f(5, y)(10) = ...
Type<br />let make_pair = lambda(x, y) => (x, y) <br />let left = lambda(x, y) => x<br />let right = lambda(x, y) => y<br ...
Dataflow Programming<br />[x1, x2, x3, …]<br />[y1, y2, y3, …]<br />
Dataflow Programming: Stack<br />[(push 1), (push 2), pop, pop, …]<br />[2, a, …]<br />
Functional Programming Paradigm<br />Lazy Evaluation<br />Higher-Order Function<br />Closure<br />No Side Effect<br />Refe...
Functional Programming Languages<br />LISP<br />Haskell<br />Ruby<br />C#3.0<br />Perl<br />Erlang<br />Scala<br />
Imperative vs Declarative<br />
Object Oriented Programming Paradigm<br />
Data Abstraction and Encapsulation<br />Barbara Liskov, 1939 -<br />
Data Abstraction and Encapsulation<br />Object<br />Data<br />Operation<br />Everything is object<br />
Data Abstraction and Encapsulation<br />Object<br />Closure<br />Lambda<br />Everything is object<br />
Object Hierarchy<br />
Object Relationship and Interaction<br />
Type and Class<br />Car<br />
Type Hierarchy<br />
OO Programming Paradigm<br />Encapsulation<br />Polymorphism<br />Inheritance<br />Program = Collaborating Objects<br />
OO Programming Languages<br />Smalltalk<br />Java<br />C++<br />Ruby<br />Python<br />C#<br />Javascript<br />
Summary<br />Abstract Thinking<br />Imperative vs Functional Programming Paradigms<br />OO Programming Paradigm<br />
Upcoming SlideShare
Loading in...5
×

OOP Paradigm 1: Abstract Thinking and Programming Paradigm

3,128
-1

Published on

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,128
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
63
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

OOP Paradigm 1: Abstract Thinking and Programming Paradigm

  1. 1. Object Oriented Programming Paradigm<br />1. Abstraction Thinking and Programming Paradigm<br />
  2. 2. Outline<br />Programming Paradigm<br />Abstraction Thinking<br />Main Programming Paradigms<br />
  3. 3. Programming Languages<br />Ruby<br />Go<br />Lua<br />C++<br />Fortress<br />Groovy<br />Scala<br />Python<br />Perl<br />C#<br />D<br />Java<br />Clojure<br />Boo<br />Nemerle<br />PHP<br />Erlang<br />JavaScript<br />PowerShell<br />F#<br />
  4. 4. Design Pattern<br />
  5. 5. Design Principle<br />
  6. 6. Programming Paradigm<br />
  7. 7. Programming Paradigms<br />
  8. 8. Example: Database Paradigm<br />
  9. 9. Outline<br />Programming Paradigm<br />Abstraction Thinking<br />Main Programming Paradigms<br />
  10. 10. The most important ability of programmer<br />
  11. 11. What’s is Abstract?<br />
  12. 12. Abstract is Glasses<br />
  13. 13. What is he looking for?<br />
  14. 14. Abstraction is the unchanged in change<br />
  15. 15. Abstraction Dimension<br />
  16. 16. UML: a diagram is a dimension<br />
  17. 17. Abstraction Hierarchy<br />
  18. 18. Summary<br />Abstraction Dimension<br />Abstraction Hierarchy<br />
  19. 19. Outline<br />Programming Paradigm<br />Abstraction Thinking<br />Main Programming Paradigms<br />
  20. 20. Programming Paradigms<br />
  21. 21. Algorithm<br />David Hilbert,1862 –1943<br />
  22. 22. Hilbert 10th Problem<br />Find an algorithm to determine whether a given polynomial Diophantine equation with integer coefficients has an integer solution<br />
  23. 23. Imperative vs Declarative<br />
  24. 24. What’s Computable? <br />Alan Turing, 1912 – 1954<br />
  25. 25. Turing Machine<br />
  26. 26. Socket State Machine<br />
  27. 27. Von Neumann Architecture<br />Von Neumann, 1903 –1957<br />
  28. 28. Von Neumann Architecture<br />Stored Program<br />
  29. 29. Imperative Programming<br />Input<br />Instructions<br />Data<br />Output<br />Program = Data Structure + Algorithm<br />
  30. 30. Assembly Language<br />
  31. 31. Procedural Programming<br />Procedure Abstraction<br />Imperative Programming<br />Procedural Programming<br />
  32. 32. Procedure Abstraction<br />How to do => What to do, e.g. gcd(int a, int b)<br />Procedure Hierarchy<br />Modular<br />
  33. 33. Structured Programming<br />Edsger Wybe Dijkstra, 1930 - 2002<br />
  34. 34. Dijkstra: Goto is Harmful<br />Static Program vs Dynamic Process<br />
  35. 35. Structured Program Theorem<br />Sequence<br />Repetition<br />Selection<br />
  36. 36. Structured Programming<br />
  37. 37. Imperative Programming Paradigm<br />
  38. 38. Imperative Programming Languages<br />Assembly<br />C<br />BASIC<br />Fortan<br />Ada<br />PASCAL<br />
  39. 39. Imperative vs Declarative<br />
  40. 40. What is computable?<br />Alonzo Church, 1903 - 1995<br />
  41. 41. Church-Turing Thesis<br />Lambda Calculus = Turing Machine<br />
  42. 42. Functional Programming<br />x + y<br />lambda(x, y) => x + y<br />(x, y)<br />It’s all about functions<br />
  43. 43. Higher Order Function<br />let f = lambda(x, y) => x + y<br />f(1, 2) = 1 + 2 = 3<br />f(5, y) = 5 + y<br />f(5, y)(10) = 5 + 10 = 15<br />let g = lambda(x, y) = x * y<br />f(x, g) = x + g //lambda(x, y, z) => x + y * z<br />
  44. 44. Type<br />let make_pair = lambda(x, y) => (x, y) <br />let left = lambda(x, y) => x<br />let right = lambda(x, y) => y<br />left(make_pair(x, y)) = x<br />right(make_pair(x, y)) = y<br />
  45. 45. Dataflow Programming<br />[x1, x2, x3, …]<br />[y1, y2, y3, …]<br />
  46. 46. Dataflow Programming: Stack<br />[(push 1), (push 2), pop, pop, …]<br />[2, a, …]<br />
  47. 47. Functional Programming Paradigm<br />Lazy Evaluation<br />Higher-Order Function<br />Closure<br />No Side Effect<br />Reference Transparent<br />Program = Function Evaluation<br />
  48. 48. Functional Programming Languages<br />LISP<br />Haskell<br />Ruby<br />C#3.0<br />Perl<br />Erlang<br />Scala<br />
  49. 49. Imperative vs Declarative<br />
  50. 50. Object Oriented Programming Paradigm<br />
  51. 51. Data Abstraction and Encapsulation<br />Barbara Liskov, 1939 -<br />
  52. 52. Data Abstraction and Encapsulation<br />Object<br />Data<br />Operation<br />Everything is object<br />
  53. 53. Data Abstraction and Encapsulation<br />Object<br />Closure<br />Lambda<br />Everything is object<br />
  54. 54. Object Hierarchy<br />
  55. 55. Object Relationship and Interaction<br />
  56. 56. Type and Class<br />Car<br />
  57. 57. Type Hierarchy<br />
  58. 58. OO Programming Paradigm<br />Encapsulation<br />Polymorphism<br />Inheritance<br />Program = Collaborating Objects<br />
  59. 59. OO Programming Languages<br />Smalltalk<br />Java<br />C++<br />Ruby<br />Python<br />C#<br />Javascript<br />
  60. 60. Summary<br />Abstract Thinking<br />Imperative vs Functional Programming Paradigms<br />OO Programming Paradigm<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×