1 objects and classes classes – act as blueprints objects are instantiated from classes –...

18
1 Objects and classes • Classes Act as blueprints • Objects are instantiated from classes – Encapsulate data: Attributes – Encapsulate function: Methods Ideal for modeling real-world phenomena

Post on 19-Dec-2015

228 views

Category:

Documents


3 download

TRANSCRIPT

1

Objects and classes

• Classes– Act as blueprints

• Objects are instantiated from classes

– Encapsulate data: Attributes– Encapsulate function: Methods– Ideal for modeling real-world phenomena

2

Summary

– Class header• Keyword class begins definition, followed by name of class

and colon (:)

– Body of class• Indented block of code

– Optional documentation string• Describes the class• Appears immediately after class header

– Constructor method __init__• Executes each time an object is created• Initialize attributes of class• Returns None

– Object reference• All methods must at least specify this one parameter (self)• Represents object on which a method is called

17

Rational numbers in Python

• Strange rounding-off errors:

• Create class for representing rational numbers by storing numerator and denominator

>>> 2/3.00.6666666666666663>>> 2/6.00.3333333333333331>>> 5/6.00.8333333333333337

18

Rational numbersra

tiona

l.py

• Use float to make sure result of division will be a float, not

a rounded down integer

• Object reference self first argument in all methods

• self refers to the object on which the method is called

Initialization: Reduced form

19

Creating and using RationalNumber objects

>>> from rational import RationalNumber>>> a = RationalNumber(3, 4)>>> b = RationalNumber(3, 6)>>> a.getValue()0.75>>> b.getValue()0.5>>> b.getNumerator()1>>> b.getDenominator()2

No self argument in method calls!

Python puts object reference in place of self

.getDenominator( )bRationalNumber

20

Creating and using RationalNumber objects

>>> from rational import RationalNumber>>> a = RationalNumber(3, 4)>>> b = RationalNumber(3, 6)>>> a.getValue()0.75>>> b.getValue()0.5>>> b.getNumerator()1>>> b.getDenominator()2

class RationalNumber

a

numerator = 3

denominator = 4

numerator = 1

denominator = 2

b

21

Forgetting the self. prefix when referencing object attributes

Initializes only local variables which go out of scope when constructor terminates!

22

Comparing rationals - binary search tree

a

elements < a

elements >= a

23

Binary search tree

a

elements < b < a

b <= elements < a

b

elements >= a

elements < a

24

Binary search tree of rational numbers

25bina

ry_t

ree.

py

Node class from course

notes

Use this class to represent the search tree nodes:

Each data attribute will be a RationalNumber

26sear

chtr

ee.p

y (p

art 1

)Creating RationalNumber objects, adding them to a tree

27sear

chtr

ee.p

y (p

art 2

)Adding a node to a binary search tree

Recursive function!

node

node

rational

28

Testing

%:~ python –i searchtree.pyNumerator: 2Denominator: 3Numerator: 3Denominator: 4Numerator: 7Denominator: 14Numerator:>>> root.getData().getvalue()0.666666666666663>>> root.getRight().getData().getvalue()0.75>>> root.getLeft().getData().getvalue()0.50

2/3

1/2 3/4

29sear

chtr

ee.p

y (p

art 3

)Searching for a node

Fast searching if tree is balanced

30sear

chtr

eete

st.p

y Searching for a node, demonstration

Search in big tree of random rational numbers

31

Numerator: 2Denominator? 3Closest match: 433/650Numerator: 4Denominator? 5Closest match: 43/54Numerator: 1Denominator? 2Closest match: 370/737Numerator: 4Denominator? 9Closest match: 391/878Numerator: 10Denominator? 1Closest match: 994/103Numerator: 5Denominator? 3Closest match: 521/313

32

.. on to the exercises