oop paradigm 1: abstract thinking and programming paradigm

Post on 13-Dec-2014

2.715 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Object Oriented Programming Paradigm

1. Abstraction Thinking and Programming Paradigm

Outline Programming Paradigm Abstraction Thinking Main Programming Paradigms

Programming Languages

Ruby

Python C#Java

JavaScr

ipt

ScalaErl

ang

F#

Fort

ress

NemerleBoo

Groovy

PHP

Perl

Lua

PowerShell

D

C+

+

Go

Clojure

Design Pattern

Design Principle

Programming Paradigm

Paradigm

Programming Paradigms

Concurrent

Imperative

Meta-Programming

Object- Oriented

Aspect-Oriented

Functional

Example: Database Paradigm

ER•Oracle•MySQL

Key-Value

•BerkeleyDB•BigTable

Full-Text

•Lucene

Object

•Db4O

Outline Programming Paradigm Abstraction Thinking Main Programming Paradigms

The most important ability of programmer

Abstract Thinking

Study

Coding

Communication

What’s is Abstract?

Abstract is Glasses

What is he looking for?

Abstraction is the unchanged in change

Abstraction Dimension

UML: a diagram is a dimension

Abstraction Hierarchy

Summary Abstraction Dimension Abstraction Hierarchy

Outline Programming Paradigm Abstraction Thinking Main Programming Paradigms

Programming Paradigms

Hilbert

Turing

von Neumann

Dijkstra

Knuth

Ritchie

Church

McCarthy

Curry

Algorithm

David Hilbert,1862 –1943

Hilbert 10th Problem

Find an algorithm to determine whether a given polynomial Diophantine equation with integer coefficients has an integer solution

Imperative vs Declarative

Hilbert

Turing

von Neumann

Dijkstra

Knuth

Ritchie

Church

McCarthy

Curry

What’s Computable?

Alan Turing, 1912 – 1954

Turing Machine

Socket State Machine

Von Neumann Architecture

Von Neumann, 1903 –1957

Von Neumann Architecture

Stored Program

Imperative Programming

DataInstructio

ns

Input

Output

Program = Data Structure + Algorithm

Assembly Language

Procedural Programming

Procedure Abstraction

Imperative Programming

Procedural Programming

Procedure Abstraction How to do => What to do, e.g. gcd(int a, int b) Procedure Hierarchy Modular

Structured Programming

Edsger Wybe Dijkstra, 1930 - 2002

Dijkstra: Goto is Harmful

Static Program vs Dynamic Process

Structured Program Theorem

Sequence

Selection

Repetition

Structured Programming

Imperative Programming Paradigm

Imparative

Structured

Procedual

Imperative Programming Languages

CBASICPASCAL

FortanAda

Assembly

Imperative vs Declarative

Hilbert

Turing

von Neumann

Dijkstra

Knuth

Ritchie

Church

McCarthy

Curry

What is computable?

Alonzo Church, 1903 - 1995

Church-Turing Thesis

Lambda Calculus = Turing Machine

Functional Programming

lambda(x, y) => x + y

(x, y) x + y

It’s all about functions

Higher Order Function let f = lambda(x, y) => x + y

f(1, 2) = 1 + 2 = 3 f(5, y) = 5 + y f(5, y)(10) = 5 + 10 = 15

let g = lambda(x, y) = x * y f(x, g) = x + g //lambda(x, y, z) => x + y * z

Type let make_pair = lambda(x, y) => (x, y) let left = lambda(x, y) => x let right = lambda(x, y) => y

left(make_pair(x, y)) = x right(make_pair(x, y)) = y

Dataflow Programming

[x1, x2, x3, …] [y1, y2, y3, …]

Dataflow Programming: Stack

[(push 1), (push 2), pop, pop, …] [2, a, …]

Functional Programming Paradigm

Higher-Order Function

Reference TransparentNo Side Effect

Program = Function Evaluation

Lazy EvaluationClosure

Functional Programming Languages

LISPHaskell

C#3.0

Perl

Ruby

ErlangScala

Imperative vs Declarative

Declarative ProblemImperative Machine

Object Oriented Programming Paradigm

Data Abstraction and Encapsulation

Barbara Liskov, 1939 -

Data Abstraction and Encapsulation

OperationData Object

Everything is object

Data Abstraction and Encapsulation

Closure Object

Everything is object

Lambda

Object Hierarchy

Object Relationship and Interaction

Type and Class

Car

Type Hierarchy

OO Programming Paradigm

Encapsulation

InheritancePolymorphism

Program = Collaborating Objects

OO Programming Languages

JavaC++

C#RubyPython

Smalltalk

Javascript

Summary Abstract Thinking

Imperative vs Functional Programming Paradigms

OO Programming Paradigm

top related