introduction to object oriented programming - bguoosd132/wiki.files/lecture2.pdf · 2 roadmap 2 in...

39
Introduction to Object Oriented Programming לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן- גוריון

Upload: phamkhue

Post on 19-Jul-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

Introduction to Object Oriented

Programming

לאוניד ברנבוים

המחלקה למדעי המחשב

גוריון-אוניברסיטת בן

Page 2: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

Roadmap22

In this chapter we begin our exploration of object-oriented programming.

Among the topics we will explore:

�Historical survey of computing and programming

�What is a paradigm ?

�Why is this term used to describe the object-oriented approach to problem solving?

�How does language influence thought ?

�Characteristics of the object-oriented way of thinking

Page 3: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

Brief Historical SurveyBrief Historical SurveyBrief Historical SurveyBrief Historical Survey

� 2400 BC - Abacus (counting frame).

� 300 BC - The algorithm of Euclid for computing GCD(x,y)

� 100 BC - Antikythera mechanism.

� 800 - al-Khwārizmī systematic approach

to solving equations led to algebra.

Page 4: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

Brief Historical Survey (cont.)Brief Historical Survey (cont.)Brief Historical Survey (cont.)Brief Historical Survey (cont.)

� 1842 – Ada Lovelace writes programs

for Babbage’s analytical engine.

� 1946 - The first electronic computer.

� 1960’s – The software crisis

� 1977 - The United States Department of

Defense define Steelman language requirements that

lead to development of Ada programming language.

� 1990’s - Object Oriented Programming becomes dominant

programming methodology.

Page 5: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

Conflicting Objectives55

Along the way, we'll try to convince you the validity

of the following two assertions:

�OOP is a revolutionary idea, totally unlike anything

that has come before in programming languages

�OOP is an evolutionary step, following naturally on

the heels of earlier programming abstractions

Page 6: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

66

Why has OOP remained

popular for so long?

OOP has been the dominant programming paradigm for

more than twenty years. Why is it so popular?

�Proven record of success

�Scales well from small problems to large

�Resonant similarity to techniques for thinking about

problems in other domains

Nevertheless,

programming is still a task that requires skill and learning

Page 7: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

77

A New Paradigm

Object-oriented programming is often described as a new paradigm.

We start by considering the definition of this term:

� Typical example or pattern of something; a model

� There is a new paradigm for public art in this country

� A worldview underlying the theories and methodology of a particular scientific subject

� The discovery of universal gravitation became the paradigm of successful science

� A set of linguistic items that form mutually exclusive choices in particular syntactic roles

� English determiners form a paradigm: we can say “a book” or “his book” but not “a his book.”

� A table of all the inflected forms of a particular verb, noun, or adjective, serving as a model for other words of the same conjugation or declension

What does this have to do with computer programming languages?

Page 8: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

88

"First, the new candidate must seem

to resolve some outstanding and

generally recognized problem that

can be met in no other way.

Second, the new paradigm must

promise to preserve a relatively large

part of the concrete problem solving

activity that has accrued to science

through its predecessors."

Page 9: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

99

Sapir-Whorf Hypothesis

language defines the way a person behaves and thinks:

�Eskimo (or Inuit) languages and snow

�Arabic languages and camel

�George Orwell's book 1984: a language entitled "newspeak" created to change the way people think about the government

What is true of natural languages is even more true of artificial computer languages

Language, Thought, and Reality

Selected Writings of Benjamin Lee Whorf

Page 10: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1010

We dissect nature along lines laid

down by our native language. The

categories and types that we isolate

from the world of phenomena we do

not find there because they stare every

observer in the face; on the contrary,

the world is presented in a

kaleidoscope flux of impressions which

has to be organized by our minds—and

this means largely by the linguistic

systems of our minds. We cut nature

up, organize it into concepts, and

ascribe significances as we do, largely

because we are parties to an

agreement to organize it in this way—

an agreement that holds throughout

our speech community and is codified

in the patterns of our language [...] all

observers are not led by the same

physical evidence to the same picture

of the universe, unless their linguistic

backgrounds are similar, or can in

some way be calibrated

Page 11: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1111 Example from

Computer Languages

A student working in DNA research had the task of finding repeated sequences of M values in a long sequence of values:

ACTCGGATCTTGCATTTCGGCAATTGGACCCTGACTTGGCCA…

Wrote the simplest (and therefore, most efficient?) program:

DO 10 I = 1, N-M

DO 10 J = I+1, N-M

FOUND = .TRUE.

DO 20 K = 1, M

20 IF X[I+K-1] .NE. X[J+K-1] THEN FOUND = .FALSE.

IF FOUND THEN ...

10 CONTINUE

Took a depressingly long time.

Page 12: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1212

A Better Solution

A friend writing in APL found a much better solution by rearranging the data and sorting:

A C T C G G positions 1 to M

C T C G G A positions 2 to M+1

T C G G A T positions 3 to M+2

C G G A T T positions 4 to M+3

G G A T T C positions 5 to M+4

G A T T C T positions 6 to M+5

. . .

T G G A C C

G G A C C C

. . .

Ran surprisingly quickly, thesis saved

Page 13: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1313

What lead to the discovery?

� Why did the APL programmer find the better solution?

� Fortran programmer was blinded by a culture that valued loops, simple programs

� Sorting is a built-in operation in APL, good programmers try to find novel uses for sorting

� The fundamental point is that the language you speak leads you in one direction or another

� But what about the Sapir-Whorf hypothesis, that says there are some thoughts you can express in one language that you cannot express in another?

Page 14: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1414

Church's Conjecture

In computer science we have the following assertion:

Anything can be done in any language, but it may simply be easier or

more efficient to use one language or another

Would you want to write an event-driven GUI interface in Turing

machine?

Bottom line: Languages lead you, but do not prevent you from going

anywhere you want

Church's Conjecture:

Any computation for which there exists an effective procedure can

be realized by a Turing machine

Page 15: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1515

Imperative Programming

� Imperative programming is the “traditional” model of computation:

State / Variables / Assignment / Loops

� A processing unit is separate from memory, and “acts”upon memory:

�The computer is the data manager

�Wandering through memory, pulling values in memory slots

�Transforming them in some manner, and pushing results back in some other slots

� Although this is exactly what happens inside a computer, it is not the way people do for solving problems

Page 16: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1616

i: j:

x:

a[1]: a[2]: a[3]: a[4]:

Visualization of

Imperative Programming

Sometimes called the “pigeon-hole” model of

computation:

Page 17: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1717 Why Not Build a

Program out of Computers?

Alan Kay thought about this conventional

design of the computer, and asked:

� Why we constructed the whole out of pieces

that were useless by themselves

� Why not build a whole out of pieces that were

similar at all levels of detail? (think of fractals)

Idea:

A program can be build out of

little computing agents

Page 18: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1818

Recursive Design

The structure of the part mirrors the structure of the

larger unit:

Page 19: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

1919 Kay's Description of Object-

Oriented Programming

Object-oriented programming is based on the principle of recursive design:

1.Everything is an object

2.Objects perform computation by making requests of each other through the passing of messages

3.Every object has it's own memory, which consists of other objects

4.Every object is an instance of a class. A class groups similar objects

5.The class is the repository for behavior associated with an object

6.Classes are organized into singly-rooted tree structure, called an inheritance hierarchy

We can illustrate these principles by considering how we go about solving a problem in real life

Page 20: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2020 Illustration of OOP Concepts --

Sending Flowers to a Friend

To illustrate the concepts of OOP in an easily understood framework, consider the problem of sending flowers to a friend who lives in a different city:

�Chris is sending flowers to Robin.

�Chris can't deliver them directly. So Chris uses the services of the local Florist.

�Chris tells the Florist (named Fred) the address for Robin, how much to spend, and the type of flowers to send.

�Fred contacts a florist in Robins city, who arranges the flowers, then contacts a driver, who delivers the flowers

If we start to think about it, there may even be other people involved in this transaction: There is the flower grower, perhaps somebody in charge of arrangements, and so on.

Page 21: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2121

Agents and Communities

� Our first observation is that results are achieved through the

interaction of agents, which we will call objects

� Furthermore, any nontrivial activity requires the interaction of an

entire community of objects working together

� Each object has a part to play, a service they provide to the other

members of the community

Robin Delivery Person

Chris Fred

Robbin's Florist

Flower Arranger

Wholesaler

Grower

Gardeners

Page 22: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2222

Elements of OOP - Objects

Kay's first principle:

1) Everything is an object

�Actions in OOP are performed by agents, called instances or objects

�There are many agents working together in our scenario

�We have Chris, Robin, the florist, the florist in Robins city, the driver, the flower arranger, and the grower

�Each agent has a part to play, and the result is produced when all work together in the solution of a problem

Page 23: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2323

Elements of OOP - Messages

And the second principle:

2) Objects perform computation by making requests of each other through the passing of messages

�Actions in OOP are produced in response to requests for actions, called messages

�An instance may accept a message, and in return will perform an action and return a value

�To begin the process of sending the flowers, Chris gives a message to Fred. Fred in turn gives a message to the florist in Robins city, who gives another message to the driver, and so on

Page 24: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2424

Information Hiding

� Notice that the user of a service being provided by an

object, need only know the name of the messages that

the object will accept

� The user need not know how the actions is performed

� Having accepted a message, an object is responsible

for carrying it out

Page 25: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2525

Elements of OOP - Receivers

Messages differ from traditional function calls in two

very important respects:

�In a message there is a designated receiver that

accepts the message

�The interpretation of the message may be different,

depending upon the receiver

Page 26: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2626 Different Receivers, Same

Message, Different Actions

var

Fred : Florist;

Elizabeth : Friend;

Ken : Dentist;

begin

Fred.sendFlowersTo(myFriend); { will work }

Elizabeth.sendFlowersTo(myFriend); { will also work }

Ken.sendFlowersTo(myFriend); { will probably not work }

end;

The same message will result in different actions,

depending upon who it is given to

Page 27: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2727

Behavior and Interpretation

� Although different objects may accept the same

message,

� The actions (behavior) the object will perform will

likely be different

� The determination of what behavior to perform may

be made at run-time, a form of late binding

� The fact that the same name can mean two entirely

different operations is one form of polymorphism

Page 28: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2828 Elements of OOP –

Recursive Design

3) Every object has it's own memory, which consists

of other objects.

Each object is like a miniature computer itself - a

specialized processor performing a specific task

Page 29: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

2929

Non-interference

It is important that objects be allowed to perform their

task however they see fit, without unnecessary

interactions or interference with other objects.

“Instead of a bit-grinding processor ... plundering data

structures, we have a universe of well-behaved object

that courteously ask each other to carry out their

various desires” -- Dan Ingalls

Page 30: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3030

“Ask not what you can do to your data

structures, but ask what your data structures

can do for you” -- Timothy A. Budd

Page 31: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3131

Elements of OOP - Classes

4) Every object is an instance of a class. A class groups similar objects.

5) The class is the repository for behavior associated with an object.

� The behavior I expect from Fred is determined from a general idea I have of the behavior of Florists

� We say Fred is an instance of the class Florist

� Behavior is associated with classes, not with individual instances

� All objects that are instances of a class use the same method in response to similar messages

Page 32: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3232

Hierarchies of Categories

� But there is more that I know about Fred then just that he is a Florist

� I know he is a Shopkeeper, and a Human, and a Mammal, and a

Material Objects, and so on

� At each level of abstraction I have certain information recorded

� That information is applicable to all lower (more specialized) levels

Material Object

Animal

Mammal

Human Shopkeeper Florist

Page 33: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3333

Class HierarchiesClass HierarchiesClass HierarchiesClass Hierarchies

Page 34: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3434

Elements of OOP Elements of OOP Elements of OOP Elements of OOP ---- InheritanceInheritanceInheritanceInheritance

6) Classes are organized into a singly-rooted tree

structure, called an inheritance hierarchy

Information (data and/or behavior) associated with

one level of abstraction in a class hierarchy is

automatically applicable to lower levels of the

hierarchy

Page 35: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3535

Elements of OOP Elements of OOP Elements of OOP Elements of OOP ---- OverridingOverridingOverridingOverriding

Subclasses can alter or override information inherited from parent classes:

�All mammals give birth to live young

�A platypus is an egg-laying mammal

Inheritance combined with overriding are where most of the power of OO originates

Page 36: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3636

Computing as SimulationComputing as SimulationComputing as SimulationComputing as Simulation

� The OOP view of computation is similar to creating a

universe of interacting computing objects

� Similar to the way in which a committee or club

might be organized

� Also very similar to a style of simulation called

discrete event-driven simulation

� Easily under estimated advantage of this view --

power of metaphor

Page 37: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3737

Metaphor and Problem SolvingMetaphor and Problem SolvingMetaphor and Problem SolvingMetaphor and Problem Solving

� Because the OOP view is similar to the way in which people go about solving problems in real life (finding another agent to do the real work!),

� intuition, ideas, and understanding from everyday experience can be brought to bear on computing

� On the other hand, common sense was seldom useful when computers were viewed in the process-state model,

� since few people solve their everyday problems using pigeon-holes

Page 38: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3838

From NewsweekFrom NewsweekFrom NewsweekFrom Newsweek

“Unlike the usual programming method -- writing

software one line at a time-- NeXT's ‘object-oriented’

system offers larger building blocks that developers

can quickly assemble the way a kid builds faces on Mr.

Potato Head.”

Page 39: Introduction to Object Oriented Programming - BGUoosd132/wiki.files/lecture2.pdf · 2 Roadmap 2 In this chapter we begin our exploration of object-oriented programming. Among the

3939

Summary

� Object-oriented programming is not simply features added to a programming language. Rather, it is a new way of thinking

� Object-oriented programming views a program as acommunity of agents, termed objects

� Each object is responsible for a specific task

� An object is an encapsulation of state (data values) and behavior (operations)

� The behavior of objects is dictated by the object’s class

� An object will exhibit its behavior by invoking a method (similar to executing a procedure) in response to a message

� Objects and classes extend the concept of abstract data types by adding the notion of inheritance