Lesson 25
The object-oriented thought process
Python Mini-Course
University of Oklahoma
Department of Psychology
1 Python Mini-Course: Lesson 25 6/16/09
Lesson objectives
1.
2.
3.
Define the key terms used in objectoriented programming (OOP)
Understand the difference between an object and a class
Describe the types of relationships that are possible between objects
2 Python Mini-Course: Lesson 25 6/16/09
Procedural vs. OOP
Review from Lesson 6
Procedural programming separates the program operations and the data
Object-oriented programming packages the program operations and the data together in object
3 Python Mini-Course: Lesson 25 6/16/09
What is an object?
The building blocks of an O-O program
A program that uses O-O is basically a collection of objects
Objects interact much like things in the real world do
4 Python Mini-Course: Lesson 25 6/16/09
What is an object?
Objects have two components:
Data (i.e., attributes)
Behaviors (i.e., methods)
5 Python Mini-Course: Lesson 25 6/16/09
Object attributes
Store the data for that object
Example (taxi):
Driver
OnDuty
NumPassengers
Location
6 Python Mini-Course: Lesson 25 6/16/09
Object methods
Define the behaviors for the object
Example (taxi):
PickUp
DropOff
GoOnDuty
GoOffDuty
• GetDriver
• SetDriver
• GetNumPassengers
7 Python Mini-Course: Lesson 25 6/16/09
Object interface
To use a method, the user
(programmer) must know:
Name of the method
Parameters to pass to the method
What (if anything) the method returns
8 Python Mini-Course: Lesson 25 6/16/09
Object implementation
The user does NOT need to know how the method works internally
9 Python Mini-Course: Lesson 25 6/16/09
What is a Class?
A blueprint for an object
Classes can be thought of as templates or cookie cutters
Given a class description, we can
instantiate objects of that class
Classes are high-level data types
10 Python Mini-Course: Lesson 25 6/16/09
OOP concepts
Encapsulation
Data and behaviors are packaged together, but the object only reveals the interfaces needed to interact with it
Internal data and behaviors can remain hidden
11 Python Mini-Course: Lesson 25 6/16/09
OOP concepts
Interfaces
Fundamental means of communication between objects
Should completely describe to user
(programmer) how to interact with the object
Should control access to attributes
12 Python Mini-Course: Lesson 25 6/16/09
Inheritance
You can create new classes by abstracting out common attributes and behaviors from a parent (or base) class
13 Python Mini-Course: Lesson 25 6/16/09
14 Python Mini-Course: Lesson 25 6/16/09
Is-a relationship
Because sub-classes inherit from their base class, they have an isa relationship:
Lion is a cat
Cat is a mammal
15 Python Mini-Course: Lesson 25 6/16/09
Polymorphism
Allows similar objects to to respond to the same message
(method call) in different manners
Sub-classes can override base class methods
16 Python Mini-Course: Lesson 25 6/16/09
OOP example: animals.py
class Animal: def __init__(self, name): # Constructor of the class self.name = name class Cat(Animal): def talk(self): return 'Meow!' class Dog(Animal): def talk(self): return 'Woof! Woof!'
17 Python Mini-Course: Lesson 25 6/16/09
Composition
Objects can contain other objects
This is called a has-a relationship
Example:
Taxi has-a driver
18 Python Mini-Course: Lesson 25 6/16/09