Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Programming

Similar presentations

Presentation on theme: "Object-Oriented Programming"— Presentation transcript:

1 Object-Oriented Programming

2 OO Paradigm - Review Three Characteristics of OO Languages Inheritance
It isn’t necessary to build every class from scratch – attributes can be derived from other classes Polymorphism/virtual functions Objects that belong to subclasses of the same superclass can be treated as if they are all objects of the superclass. Encapsulation Object behavior and object data are combined in a single entity. Object interface defines interaction with the object; no need to know/understand the implementation (and in general no way to access the implementation.)

3 Polymorphism Polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. 3/29/2010

4 Object Orientation in Python
In Python, everything is an object – integers, strings, dictionaries, … Class objects are instantiated from user- defined classes, other objects are from language defined types.

5 Python Classes Can be defined anywhere in the program
All methods and instance variables are public, by default The language provides “limited support” for private identifiers (see section 9.6 in the documentation).

6 Example class MyClass: def set(self, value): self.value = value def display(self): print(self.value) MyClass has two methods: set and display; and one attribute: value. The class definition is terminated by a blank line.

7 Example The first parameter in each method refers to the object itself. Self is the traditional name of the parameter, but it can be anything. def set(self, value): self.value = value When the method is called, the self parameter is omitted

8 Python Class Objects y = MyClass()
There is no new operator; to instantiate an object for a class, use function call notation: x = MyClass() y = MyClass() Each time a class is called, a new instance object is created. If the class has a constructor, you can use it here.

9 Example Declare and assign value to a class variable:
>>> y = MyClass()#”declare” a MyClass object >>> y.set(4) # no param corresponding to >>> y.display() # “self” in either call 4 >>> y.value

10 Constructor - Example Constructors are defined with the __init__ method. Instead of def set(self, value): use def __init__(self, value):

11 Constructors def __init__(self): self.value = 0 # default or def __init__(self, thing): self.value = thing # parameterized Usage: x = MyClass( ) sets x.value to 0 y = MyClass(5) sets y.value to 5 (default constructor and parameterized constructor)

12 Class with Constructor
>>> class Complex: def __init__(self, realp, imagp): self.r = realp self.i = imagp >>> x = Complex(3.0, -4.5) >>> x.r, x.i (3.0, -4.5)

13 Attributes (Data Members)
Attributes are defined by an assignment statement, just as variables are defined (as opposed to being declared). def set(self, value): self.value = value Can be defined in classes or instances of classes. Attributes attached to classes belong to all subclasses and instance objects, but attributes attached to instances only belong to that instance.

14 Python Class Data Members
Variables in Python are created when they are assigned to. New data members (attributes) can be created the same way; e.g., x.counter = 1 creates a new data attribute for the object x – but not for y.

15 Example (from online documentation)
Variables in Python are created when they are assigned to New data attributes can be created the same way: . . . x.counter = 1 while x.counter < 10: x.counter = x.counter * 2 print(x.counter) del x.counter x.counter = 1 creates a new data attribute for the object x – but not for y.

16 Information Hiding There is no foolproof way to enforce information hiding in Python, so there is no way to define a true abstract data type Everything is public by default; it is possible to partially circumvent the methods for defining private attributes.

17 Inheritance class DerivedClassName(BaseClassName): <statement-1> <statement-N> If a requested attribute is not found in the derived class, it is searched for in the base class. This rule is applied recursively if the base class itself is derived from some other class.

18 Multiple Inheritance Python supports multiple inheritance: class DerivedClassName(B1, B2, B3): <statement-1> <statement-N>

19 Multiple Inheritance Resolving conflicts: (Given the expression object.attribute, find definition of attribute) Depth-first, left-to-right search of the base classes. “Depth-first”: start at a leaf node in the inheritance hierarchy (the object); search the object first, its class next, superclasses in L-R order as listed in the definition.

20 Illustration of Single & Multiple Inheritance
B1 .a .b B2 .x B3 .y .b SUPERCLASSES B4 .x .q DERIVED CLASS I0 .x I1 I2 INSTANCES I0.a and I0.b are defined in B1; I0.x is defined in I0 I1.a, I1.b and I2.a, I2.b are defined in B1; I1.x & I2.x (and q) are defined in B4 I1.y and I2.y are defined in B3, and so forth.

21 Python and OO Programming
See Section 9 in the Python tutorial for more information and examples. Chapter 13, section 5 has several examples of Python classes.

Download ppt "Object-Oriented Programming"

Similar presentations

Ads by Google