SlideShare a Scribd company logo
Copyright © 2015 Pearson Education, Inc.
C H A P T E R 10
Classes and
Object-
Oriented
Programming
Copyright © 2015 Pearson Education, Inc.
Procedural Programming
• Procedures: synonym for functions and
sub-routines
• Procedural programming: writing
programs made of functions that
perform specific tasks
• Functions typically operate on data items that
are separate from the functions
• Data items commonly passed from one
function to another
• Focus: On the algorithm and steps. Create
functions that operate on the program’s data
Copyright © 2015 Pearson Education, Inc.
Object-Oriented Programming
• Object-oriented programming: focused on
creating classes and objects
• Model the problem on the data involved first,
not the big steps.
• Class: A programmer defined data type
• Object: entity that contains data and
functions
• Data is known as data attributes and functions are
known as methods
• Methods perform operations on the data attributes
• Encapsulation: combining data and code into
a single object
Copyright © 2015 Pearson Education, Inc.
Object Oriented Programming
• Recall a CPU only knows how to
perform on the order of 100 operations
• High level languages such as Python
allow us to create new operations by
defining new functions
• Object oriented languages allow
programmers to create new data types
in addition to the ones built into the
language
• int, float, string, list, tuple, file, dictionary, set
Copyright © 2015 Pearson Education, Inc.
5
Object Oriented Design
Example - Monopoly
If we had to start
from scratch what
new data types would
we need to create?
Data Types Needed:
Copyright © 2015 Pearson Education, Inc.
Object Orientation
•The basic idea of object oriented programming (OOP) is
to view your problem as a collection of objects, each of
which has certain state and can perform certain actions.
•Each object has:
• some data that it maintains characterizing its
current state;
• a set of actions (methods) that it can perform.
•A programmer interacts with an object by calling its
methods; this is called method invocation. That should be
the only way that another programmer interacts with an
object.
•Significant object-oriented languages include Python,
Java, C++, C#, Perl, JavaScript, Objective C, and others.
Copyright © 2015 Pearson Education, Inc.
Object-Oriented Programming
(cont’d.)
Copyright © 2015 Pearson Education, Inc.
Object-Oriented Programming
(cont’d.)
• Data hiding: object’s data attributes are
hidden from code outside the object
• Access restricted to the object’s methods
• Protects from accidental corruption
• Outside code does not need to know internal
structure of the object
• Object reusability: the same object can
be used in different programs
• Example: 3D image object can be used for
architecture and game programming
Copyright © 2015 Pearson Education, Inc.
Object-Oriented Programming
(cont’d.)
Copyright © 2015 Pearson Education, Inc.
An Everyday Example of an
Object
• Data attributes: define the state of an
object
• Example: clock object would have second,
minute, and hour data attributes
• Public methods: allow external code to
manipulate the object
• Example: set_time, set_alarm_time
• Private methods: used for object’s
inner workings
Copyright © 2015 Pearson Education, Inc.
Classes
• Class: code that specifies the data
attributes and methods of a particular
type of object
• Similar to a blueprint of a house or a cookie
cutter
• Instance: an object created from a
class
• Similar to a specific house built according to
the blueprint or a specific cookie
• There can be many instances of one class
Copyright © 2015 Pearson Education, Inc.
Classes
Copyright © 2015 Pearson Education, Inc.
Classes
Copyright © 2015 Pearson Education, Inc.
Classes
Class Definition for Playing cards
Playing cards have:
A Rank
A Suit
Define a
PlayingCard
class and then
create objects of
type PlayingCard
to form a deck
or a hand
of cards.
Copyright © 2015 Pearson Education, Inc.
Another Concrete Example
•Imagine that you’re trying to do some
simple arithmetic. You need a Calculator
application, programmed in an OO manner.
It will have:
•Some data: the current value of its
• accumulator (the value stored
and displayed on the screen).
• History of ops?
• Memory?
•Some methods: things that you can
ask of the calculator to do:
• add a number to the accumulator,
subtract a number, multiply by a
number, divide by a number, zero
out the accumulator value, etc.
Copyright © 2015 Pearson Education, Inc.
Calculator Specification
•In Python, you implement a particular type of object (soda
machine, calculator, etc.) with a class.
•Let’s define a class for our simple interactive calculator.
•Data: the current value of the accumulator.
Maybe a history of operations? Memory spots?
• Methods: any of the following.
• clear: zero the accumulator
• print: display the accumulator value
• add k: add k to the accumulator
• sub k: subtract k from the accumulator
• mult k: multiply accumulator by k
• div k: divide accumulator by k
Copyright © 2015 Pearson Education, Inc.
A More Concrete Example
•Example: A soda machine has:
• Data: products inside,
change available, amount
previously deposited, etc.
• Methods: accept a coin,
select a product, dispense a
soda, provide change after
purchase, return money
deposited, etc.
• Assignment 13
Copyright © 2015 Pearson Education, Inc.
Class Definitions
• Class definition: set of statements that
define a class’s methods and data attributes
• Format: begin with class ClassName:
• Class names typically start with uppercase letter and inter
nal words are capitalized, aka CamelCase
• Method definition like other Python
function definitions
• self parameter: required in every method in the class –
references the specific object that the method is working
on - The object the method is working on. The object
that called the method
name = 'Olivia'
name.upper() # name is the argument to self
Copyright © 2015 Pearson Education, Inc.
Class Definitions (cont’d.)
• Initializer method: automatically executed
when an instance of the class is created
• Initializes object’s data attributes and assigns
self parameter to the object that was just
created.
• Format: def __init__ (self):
• That's two underscores before and after init.
• Typically the first method in a class definition.
Copyright © 2015 Pearson Education, Inc.
Class Definitions (cont’d.)
Copyright © 2015 Pearson Education, Inc.
Class Definitions (cont’d.)
• To create a new instance of a class call
the initializer method
• Format: my_instance = ClassName()
• To call any of the class methods using
the created instance, use dot notation
• Format: my_instance.method()
• Because the self parameter references the
specific instance of the object, the method will
affect this instance
• Reference to self is passed automatically
Copyright © 2015 Pearson Education, Inc.
Hiding Attributes and Storing
Classes in Modules
• An object’s data attributes (aka the internal
variables) should be difficult to access
• To make sure of this, place two underscores (__) in
front of attribute name
• Example: __current_minute
• Classes can be stored in modules
• Filename for module must end in .py
• Module can be imported to programs that use the
class
Copyright © 2015 Pearson Education, Inc.
The Circle Class - in Circle.py
Copyright © 2015 Pearson Education, Inc.
The Circle Class - in Circle.py
Copyright © 2015 Pearson Education, Inc.
Client Code of Circle Class
• Recall, variables prefixed with the
double underscore (_ _) are hidden
from clients.
• Careful, easy to create logic errors
Copyright © 2015 Pearson Education, Inc.
Logic Error in Client Code
• Clients can add attributes (internal
data, internal variables) to objects
• Flexible? Yes. Dangerous? You bet!
Copyright © 2015 Pearson Education, Inc.
The BankAccount Class –
More About Classes
• Class methods can have multiple
parameters in addition to self
• For __init__, parameters needed to create
an instance of the class
• Example: a BankAccount object is created with a
balance
• When called, the initializer method receives a value to be
assigned to a __balance attribute
• For other methods, parameters may be
needed to perform required task
• Example: deposit method amount to be deposited
Copyright © 2015 Pearson Education, Inc.
The __str__ method
• Object’s state: the values of the object’s
attribute at a given moment
• __str__ method: return a string version
of the object, typically the state of its
internal data
• Automatically called when the object is
passed as an argument to the
print function
• Automatically called when the object is
passed as an argument to the str function
Copyright © 2015 Pearson Education, Inc.
Working With Instances
• Instance attribute: belongs to a specific
instance of a class
• Created when a method uses the self
parameter to create an attribute
• Can be local to a method, but continues to
exist after that method completes
• If many instances of a class are
created, each would has its own set of
attributes
Copyright © 2015 Pearson Education, Inc.
Copyright © 2015 Pearson Education, Inc.
Accessor and Mutator Methods
• Typically, all of a class’s data attributes
are private and provide methods to
access and change them
• Accessor methods: return a value from
a class’s attribute without changing it
• Safe way for code outside the class to retrieve
the value of attributes
• Mutator methods: store or change the
value of a data attribute
• You DO NOT have to have mutator methods
for all (or any) internal attributes
Copyright © 2015 Pearson Education, Inc.
Passing Objects as
Arguments
• Methods and functions often need to
accept objects as arguments
• When you pass an object as an
argument, you are actually passing a
reference to the object
• The receiving method or function has access
to the actual object
• Methods of the object can be called within the
receiving function or method, and data attributes
may be changed using mutator methods
Copyright © 2015 Pearson Education, Inc.
Other methods
• generally methods with the _ _name_ _
format are not meant to be called directly
• Instead we define them and then the are
called with other operators
_ _init_ _ ClassName()
_ _len_ _ len()
_ _str_ _ str
_ _add_ _ + _ _eq_ _ ==
_ _lt_ _ < _ _le_ _ <=
_ _gt_ _ > _ _ge_ _ >=
Copyright © 2015 Pearson Education, Inc.
Displaying New Classes in
Data Structures
Output of
print. Great!
Output of
print of list. Yuck!
Copyright © 2015 Pearson Education, Inc.
_ _str_ _ and _ _ repr_ _
• print calls the _ _str_ _ method on
objects sent to it
• a data structure calls the _ _repr_ _
method on the objects inside it to
• repr for representation
• Like _ _str_ _ but should display the
object in a way that we could use to
rebuild the object
Copyright © 2015 Pearson Education, Inc.
_ _repr_ _ method for Circle
Copyright © 2015 Pearson Education, Inc.
Techniques for Designing
Classes
• UML diagram: standard diagrams for
graphically depicting object-oriented
systems
• Stands for Unified Modeling Language
• General layout: box divided into three
sections:
• Top section: name of the class
• Middle section: list of data attributes
• Bottom section: list of class methods
Copyright © 2015 Pearson Education, Inc.
Copyright © 2015 Pearson Education, Inc.
Finding the Classes in a
Problem
• When developing object oriented
program, first goal is to identify classes
• Typically involves identifying the real-world
objects that are in the problem
• Technique for identifying classes:
1. Get written description of the problem domain
2. Identify all nouns in the description, each of
which is a potential class
3. Refine the list to include only classes that are
relevant to the problem
Copyright © 2015 Pearson Education, Inc.
Finding the Classes in a
Problem (cont’d.)
1. Get written description of the problem
domain
• May be written by you or by an expert
• Should include any or all of the following:
• Physical objects simulated by the program
• The role played by a person
• The result of a business event
• Recordkeeping items
Copyright © 2015 Pearson Education, Inc.
Finding the Classes in a
Problem (cont’d.)
2. Identify all nouns in the description,
each of which is a potential class
• Should include noun phrases and pronouns
• Some nouns may appear twice
Copyright © 2015 Pearson Education, Inc.
Finding the Classes in a
Problem (cont’d.)
3. Refine the list to include only classes
that are relevant to the problem
• Remove nouns that mean the same thing
• Remove nouns that represent items that the
program does not need to be concerned with
• Remove nouns that represent objects, not
classes
• Remove nouns that represent simple values
that can be assigned to a variable
Copyright © 2015 Pearson Education, Inc.
Identifying a Class’s
Responsibilities
• A classes responsibilities are:
• The things the class is responsible for
knowing
• Identifying these helps identify the class’s data
attributes
• The actions the class is responsible for doing
• Identifying these helps identify the class’s methods
• To find out a class’s responsibilities
look at the problem domain
• Deduce required information and actions
Copyright © 2015 Pearson Education, Inc.
Summary
• This chapter covered:
• Procedural vs. object-oriented programming
• Classes and instances
• Class definitions, including:
• The self parameter
• Data attributes and methods
• __init__ and __str__ functions
• Hiding attributes from code outside a class
• Storing classes in modules
• Designing classes

More Related Content

PPTX
Object Oriented Programming Class and Objects
PPTX
Object Oriented Programming - Copy.pptxb
PPTX
Lesson 1 - Introduction to Object Oriented Concepts.pptx
PPSX
OOPS Concepts in Python and Exception Handling
PPTX
Introduction to Object Oriented Programming in Python.pptx
DOC
C# by Zaheer Abbas Aghani
DOC
C# by Zaheer Abbas Aghani
Object Oriented Programming Class and Objects
Object Oriented Programming - Copy.pptxb
Lesson 1 - Introduction to Object Oriented Concepts.pptx
OOPS Concepts in Python and Exception Handling
Introduction to Object Oriented Programming in Python.pptx
C# by Zaheer Abbas Aghani
C# by Zaheer Abbas Aghani

Similar to slides11-objects_and_classes in python.pptx (20)

PPTX
OOP02-27022023-090456am.pptx
PDF
Introduction to C++ Class & Objects. Book Notes
PPTX
C++ programming Assignment Help
PPT
Java Fundamentalojhgghjjjjhhgghhjjjjhhj.ppt
PDF
Python Programming - VI. Classes and Objects
PPTX
Unit - I Intro. to OOP Concepts and Control Structure -OOP and CG (2024 Patte...
PPTX
1_Object Oriented Programming.pptx
PDF
Bn1038 demo pega
PPT
07slide.ppt
PDF
UNIT1- OBJECT ORIENTED PROGRAMMING IN JAVA- AIML IT-SPPU
PPTX
OOP-1.pptx
PPTX
12_oop templa.pptx
PPTX
[OOP - Lec 01] Introduction to OOP
PPTX
SE-IT JAVA LAB OOP CONCEPT
PPTX
object oriented porgramming using Java programming
PPTX
object oriented porgramming using Java programming
PPTX
Class and Objects in python programming.pptx
PPT
Software Engineering Lec5 oop-uml-i
PPTX
Mini Project.pptx
PPT
Objective-C for iOS Application Development
OOP02-27022023-090456am.pptx
Introduction to C++ Class & Objects. Book Notes
C++ programming Assignment Help
Java Fundamentalojhgghjjjjhhgghhjjjjhhj.ppt
Python Programming - VI. Classes and Objects
Unit - I Intro. to OOP Concepts and Control Structure -OOP and CG (2024 Patte...
1_Object Oriented Programming.pptx
Bn1038 demo pega
07slide.ppt
UNIT1- OBJECT ORIENTED PROGRAMMING IN JAVA- AIML IT-SPPU
OOP-1.pptx
12_oop templa.pptx
[OOP - Lec 01] Introduction to OOP
SE-IT JAVA LAB OOP CONCEPT
object oriented porgramming using Java programming
object oriented porgramming using Java programming
Class and Objects in python programming.pptx
Software Engineering Lec5 oop-uml-i
Mini Project.pptx
Objective-C for iOS Application Development
Ad

More from debasisdas225831 (10)

PPT
javascript arrays in details for udergaduate studenets .ppt
PPT
C++ STL standard template librairy in OOPs.ppt
PPT
No SQL Databases as modern database concepts
PPT
Introduction to HTML for under-graduate studnets
PPT
Exception and Error Handling in C++ - A detailed Presentation
PPT
GraphTerminology in Data Structure using C++
PPTX
Online Food Ordering System Project Presentation
PPT
Supply Chain Management in Business Technology
PPT
How to calculate complexity in Data Structure
PPT
Introduction to Hashing in Data Structure using C++
javascript arrays in details for udergaduate studenets .ppt
C++ STL standard template librairy in OOPs.ppt
No SQL Databases as modern database concepts
Introduction to HTML for under-graduate studnets
Exception and Error Handling in C++ - A detailed Presentation
GraphTerminology in Data Structure using C++
Online Food Ordering System Project Presentation
Supply Chain Management in Business Technology
How to calculate complexity in Data Structure
Introduction to Hashing in Data Structure using C++
Ad

Recently uploaded (20)

PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
VCE English Exam - Section C Student Revision Booklet
PPTX
Institutional Correction lecture only . . .
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PPTX
master seminar digital applications in india
PPTX
PPH.pptx obstetrics and gynecology in nursing
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
O7-L3 Supply Chain Operations - ICLT Program
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
Renaissance Architecture: A Journey from Faith to Humanism
VCE English Exam - Section C Student Revision Booklet
Institutional Correction lecture only . . .
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Abdominal Access Techniques with Prof. Dr. R K Mishra
master seminar digital applications in india
PPH.pptx obstetrics and gynecology in nursing
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Microbial diseases, their pathogenesis and prophylaxis
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Module 4: Burden of Disease Tutorial Slides S2 2025
Week 4 Term 3 Study Techniques revisited.pptx
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
human mycosis Human fungal infections are called human mycosis..pptx
STATICS OF THE RIGID BODIES Hibbelers.pdf

slides11-objects_and_classes in python.pptx

  • 1. Copyright © 2015 Pearson Education, Inc. C H A P T E R 10 Classes and Object- Oriented Programming
  • 2. Copyright © 2015 Pearson Education, Inc. Procedural Programming • Procedures: synonym for functions and sub-routines • Procedural programming: writing programs made of functions that perform specific tasks • Functions typically operate on data items that are separate from the functions • Data items commonly passed from one function to another • Focus: On the algorithm and steps. Create functions that operate on the program’s data
  • 3. Copyright © 2015 Pearson Education, Inc. Object-Oriented Programming • Object-oriented programming: focused on creating classes and objects • Model the problem on the data involved first, not the big steps. • Class: A programmer defined data type • Object: entity that contains data and functions • Data is known as data attributes and functions are known as methods • Methods perform operations on the data attributes • Encapsulation: combining data and code into a single object
  • 4. Copyright © 2015 Pearson Education, Inc. Object Oriented Programming • Recall a CPU only knows how to perform on the order of 100 operations • High level languages such as Python allow us to create new operations by defining new functions • Object oriented languages allow programmers to create new data types in addition to the ones built into the language • int, float, string, list, tuple, file, dictionary, set
  • 5. Copyright © 2015 Pearson Education, Inc. 5 Object Oriented Design Example - Monopoly If we had to start from scratch what new data types would we need to create? Data Types Needed:
  • 6. Copyright © 2015 Pearson Education, Inc. Object Orientation •The basic idea of object oriented programming (OOP) is to view your problem as a collection of objects, each of which has certain state and can perform certain actions. •Each object has: • some data that it maintains characterizing its current state; • a set of actions (methods) that it can perform. •A programmer interacts with an object by calling its methods; this is called method invocation. That should be the only way that another programmer interacts with an object. •Significant object-oriented languages include Python, Java, C++, C#, Perl, JavaScript, Objective C, and others.
  • 7. Copyright © 2015 Pearson Education, Inc. Object-Oriented Programming (cont’d.)
  • 8. Copyright © 2015 Pearson Education, Inc. Object-Oriented Programming (cont’d.) • Data hiding: object’s data attributes are hidden from code outside the object • Access restricted to the object’s methods • Protects from accidental corruption • Outside code does not need to know internal structure of the object • Object reusability: the same object can be used in different programs • Example: 3D image object can be used for architecture and game programming
  • 9. Copyright © 2015 Pearson Education, Inc. Object-Oriented Programming (cont’d.)
  • 10. Copyright © 2015 Pearson Education, Inc. An Everyday Example of an Object • Data attributes: define the state of an object • Example: clock object would have second, minute, and hour data attributes • Public methods: allow external code to manipulate the object • Example: set_time, set_alarm_time • Private methods: used for object’s inner workings
  • 11. Copyright © 2015 Pearson Education, Inc. Classes • Class: code that specifies the data attributes and methods of a particular type of object • Similar to a blueprint of a house or a cookie cutter • Instance: an object created from a class • Similar to a specific house built according to the blueprint or a specific cookie • There can be many instances of one class
  • 12. Copyright © 2015 Pearson Education, Inc. Classes
  • 13. Copyright © 2015 Pearson Education, Inc. Classes
  • 14. Copyright © 2015 Pearson Education, Inc. Classes Class Definition for Playing cards Playing cards have: A Rank A Suit Define a PlayingCard class and then create objects of type PlayingCard to form a deck or a hand of cards.
  • 15. Copyright © 2015 Pearson Education, Inc. Another Concrete Example •Imagine that you’re trying to do some simple arithmetic. You need a Calculator application, programmed in an OO manner. It will have: •Some data: the current value of its • accumulator (the value stored and displayed on the screen). • History of ops? • Memory? •Some methods: things that you can ask of the calculator to do: • add a number to the accumulator, subtract a number, multiply by a number, divide by a number, zero out the accumulator value, etc.
  • 16. Copyright © 2015 Pearson Education, Inc. Calculator Specification •In Python, you implement a particular type of object (soda machine, calculator, etc.) with a class. •Let’s define a class for our simple interactive calculator. •Data: the current value of the accumulator. Maybe a history of operations? Memory spots? • Methods: any of the following. • clear: zero the accumulator • print: display the accumulator value • add k: add k to the accumulator • sub k: subtract k from the accumulator • mult k: multiply accumulator by k • div k: divide accumulator by k
  • 17. Copyright © 2015 Pearson Education, Inc. A More Concrete Example •Example: A soda machine has: • Data: products inside, change available, amount previously deposited, etc. • Methods: accept a coin, select a product, dispense a soda, provide change after purchase, return money deposited, etc. • Assignment 13
  • 18. Copyright © 2015 Pearson Education, Inc. Class Definitions • Class definition: set of statements that define a class’s methods and data attributes • Format: begin with class ClassName: • Class names typically start with uppercase letter and inter nal words are capitalized, aka CamelCase • Method definition like other Python function definitions • self parameter: required in every method in the class – references the specific object that the method is working on - The object the method is working on. The object that called the method name = 'Olivia' name.upper() # name is the argument to self
  • 19. Copyright © 2015 Pearson Education, Inc. Class Definitions (cont’d.) • Initializer method: automatically executed when an instance of the class is created • Initializes object’s data attributes and assigns self parameter to the object that was just created. • Format: def __init__ (self): • That's two underscores before and after init. • Typically the first method in a class definition.
  • 20. Copyright © 2015 Pearson Education, Inc. Class Definitions (cont’d.)
  • 21. Copyright © 2015 Pearson Education, Inc. Class Definitions (cont’d.) • To create a new instance of a class call the initializer method • Format: my_instance = ClassName() • To call any of the class methods using the created instance, use dot notation • Format: my_instance.method() • Because the self parameter references the specific instance of the object, the method will affect this instance • Reference to self is passed automatically
  • 22. Copyright © 2015 Pearson Education, Inc. Hiding Attributes and Storing Classes in Modules • An object’s data attributes (aka the internal variables) should be difficult to access • To make sure of this, place two underscores (__) in front of attribute name • Example: __current_minute • Classes can be stored in modules • Filename for module must end in .py • Module can be imported to programs that use the class
  • 23. Copyright © 2015 Pearson Education, Inc. The Circle Class - in Circle.py
  • 24. Copyright © 2015 Pearson Education, Inc. The Circle Class - in Circle.py
  • 25. Copyright © 2015 Pearson Education, Inc. Client Code of Circle Class • Recall, variables prefixed with the double underscore (_ _) are hidden from clients. • Careful, easy to create logic errors
  • 26. Copyright © 2015 Pearson Education, Inc. Logic Error in Client Code • Clients can add attributes (internal data, internal variables) to objects • Flexible? Yes. Dangerous? You bet!
  • 27. Copyright © 2015 Pearson Education, Inc. The BankAccount Class – More About Classes • Class methods can have multiple parameters in addition to self • For __init__, parameters needed to create an instance of the class • Example: a BankAccount object is created with a balance • When called, the initializer method receives a value to be assigned to a __balance attribute • For other methods, parameters may be needed to perform required task • Example: deposit method amount to be deposited
  • 28. Copyright © 2015 Pearson Education, Inc. The __str__ method • Object’s state: the values of the object’s attribute at a given moment • __str__ method: return a string version of the object, typically the state of its internal data • Automatically called when the object is passed as an argument to the print function • Automatically called when the object is passed as an argument to the str function
  • 29. Copyright © 2015 Pearson Education, Inc. Working With Instances • Instance attribute: belongs to a specific instance of a class • Created when a method uses the self parameter to create an attribute • Can be local to a method, but continues to exist after that method completes • If many instances of a class are created, each would has its own set of attributes
  • 30. Copyright © 2015 Pearson Education, Inc.
  • 31. Copyright © 2015 Pearson Education, Inc. Accessor and Mutator Methods • Typically, all of a class’s data attributes are private and provide methods to access and change them • Accessor methods: return a value from a class’s attribute without changing it • Safe way for code outside the class to retrieve the value of attributes • Mutator methods: store or change the value of a data attribute • You DO NOT have to have mutator methods for all (or any) internal attributes
  • 32. Copyright © 2015 Pearson Education, Inc. Passing Objects as Arguments • Methods and functions often need to accept objects as arguments • When you pass an object as an argument, you are actually passing a reference to the object • The receiving method or function has access to the actual object • Methods of the object can be called within the receiving function or method, and data attributes may be changed using mutator methods
  • 33. Copyright © 2015 Pearson Education, Inc. Other methods • generally methods with the _ _name_ _ format are not meant to be called directly • Instead we define them and then the are called with other operators _ _init_ _ ClassName() _ _len_ _ len() _ _str_ _ str _ _add_ _ + _ _eq_ _ == _ _lt_ _ < _ _le_ _ <= _ _gt_ _ > _ _ge_ _ >=
  • 34. Copyright © 2015 Pearson Education, Inc. Displaying New Classes in Data Structures Output of print. Great! Output of print of list. Yuck!
  • 35. Copyright © 2015 Pearson Education, Inc. _ _str_ _ and _ _ repr_ _ • print calls the _ _str_ _ method on objects sent to it • a data structure calls the _ _repr_ _ method on the objects inside it to • repr for representation • Like _ _str_ _ but should display the object in a way that we could use to rebuild the object
  • 36. Copyright © 2015 Pearson Education, Inc. _ _repr_ _ method for Circle
  • 37. Copyright © 2015 Pearson Education, Inc. Techniques for Designing Classes • UML diagram: standard diagrams for graphically depicting object-oriented systems • Stands for Unified Modeling Language • General layout: box divided into three sections: • Top section: name of the class • Middle section: list of data attributes • Bottom section: list of class methods
  • 38. Copyright © 2015 Pearson Education, Inc.
  • 39. Copyright © 2015 Pearson Education, Inc. Finding the Classes in a Problem • When developing object oriented program, first goal is to identify classes • Typically involves identifying the real-world objects that are in the problem • Technique for identifying classes: 1. Get written description of the problem domain 2. Identify all nouns in the description, each of which is a potential class 3. Refine the list to include only classes that are relevant to the problem
  • 40. Copyright © 2015 Pearson Education, Inc. Finding the Classes in a Problem (cont’d.) 1. Get written description of the problem domain • May be written by you or by an expert • Should include any or all of the following: • Physical objects simulated by the program • The role played by a person • The result of a business event • Recordkeeping items
  • 41. Copyright © 2015 Pearson Education, Inc. Finding the Classes in a Problem (cont’d.) 2. Identify all nouns in the description, each of which is a potential class • Should include noun phrases and pronouns • Some nouns may appear twice
  • 42. Copyright © 2015 Pearson Education, Inc. Finding the Classes in a Problem (cont’d.) 3. Refine the list to include only classes that are relevant to the problem • Remove nouns that mean the same thing • Remove nouns that represent items that the program does not need to be concerned with • Remove nouns that represent objects, not classes • Remove nouns that represent simple values that can be assigned to a variable
  • 43. Copyright © 2015 Pearson Education, Inc. Identifying a Class’s Responsibilities • A classes responsibilities are: • The things the class is responsible for knowing • Identifying these helps identify the class’s data attributes • The actions the class is responsible for doing • Identifying these helps identify the class’s methods • To find out a class’s responsibilities look at the problem domain • Deduce required information and actions
  • 44. Copyright © 2015 Pearson Education, Inc. Summary • This chapter covered: • Procedural vs. object-oriented programming • Classes and instances • Class definitions, including: • The self parameter • Data attributes and methods • __init__ and __str__ functions • Hiding attributes from code outside a class • Storing classes in modules • Designing classes