Python Programming - VI. Classes and Objects

83
PYTHON PROGRAMMING VI. CLASSES AND OBJECTS Engr. Ranel O. Padon

description

 

Transcript of Python Programming - VI. Classes and Objects

Page 1: Python Programming - VI. Classes and Objects

PYTHON PROGRAMMING

VI. CLASSES AND OBJECTS

Engr. Ranel O. Padon

Page 2: Python Programming - VI. Classes and Objects

PYTHON PROGRAMMING TOPICS

I•Introduction to Python Programming

II•Python Basics

III•Controlling the Program Flow

IV•Program Components: Functions, Classes, Packages, and Modules

V•Sequences (List and Tuples), and Dictionaries

VI•Object-Based Programming: Classes and Objects

VII•Customizing Classes and Operator Overloading

VIII•Object-Oriented Programming: Inheritance and Polymorphism

IX•Randomization Algorithms

X•Exception Handling and Assertions

XI•String Manipulation and Regular Expressions

XII•File Handling and Processing

XIII•GUI Programming Using Tkinter

Page 3: Python Programming - VI. Classes and Objects

PROGRAMMING PARADIGMS

Page 4: Python Programming - VI. Classes and Objects

PROGRAMMING PARADIGMS

• Procedural/Imperative (C, FORTRAN, COBOL)

• Object-Oriented (C++, Java, C#, Objective-C)

Objective-C is used in Apple’s OS X and iOS and for customizing its apps.

• Functional Programming (Lisp)

Lisp is used for customizing AutoCAD

• Logic Programming (Prolog)

• Concurrent (Erlang)

• Multi-Paradigm (Python, Scala, PHP, JavaScript)

• …

Page 5: Python Programming - VI. Classes and Objects

PROGRAMMING PARADIGMS

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 6: Python Programming - VI. Classes and Objects

PROGRAMMING PARADIGMS

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 7: Python Programming - VI. Classes and Objects

PROGRAMMING PARADIGMS

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 8: Python Programming - VI. Classes and Objects

PROCEDURE-ORIENTED PROGRAMMING

Page 9: Python Programming - VI. Classes and Objects

PROCEDURE-ORIENTED PROGRAMMING

Page 10: Python Programming - VI. Classes and Objects

PROCEDURE-ORIENTED PROGRAMMING

1/6) Emphasis is on doing things (algorithms).

2/6) Large programs are divided into smaller programs

known as functions.

3/6) Most of the functions share global data.

Page 11: Python Programming - VI. Classes and Objects

PROCEDURE-ORIENTED PROGRAMMING

4/6) Data are more open around the system from function

to function.

5/6) Functions transform data from one form to another.

6/6) Employs top-down approach in program design.

Page 12: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

Page 13: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

The data of an object can be accessed only by the functions

associated with that object.

Functions of one object can access the functions of other objects.

Page 14: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

1/8) Emphasis is on data rather than procedures or algorithms.

2/8) Programs are divided into what are known as objects.

3/8) Data structures are designed such that they characterize

the objects.

4/8) Functions that operate on the data are tied together in

the data structure.

Page 15: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

5/8) Data is hidden and cannot be accessed by external functions.

6/8) Objects may communicate with each other through functions.

7/8) New data and functions can be easily added whenever necessary.

8/8) Follows bottom-up approach in program design.

Page 16: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

Benefits of OOP:

1/8) Through inheritance, we can eliminate redundant code and extend

the use of existing classes which is not possible in procedure-oriented

approach.

2/8) We can build programs from the standard working modules that

communicate with one another, rather than having to start writing the

code from scratch which happens procedure-oriented approach.

This leads to saving of development time and higher productivity.

Page 17: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

Benefits of OOP:

3/8) The principle of data hiding helps the programmer to build secure

programs that cannot be invaded by code in other parts of the program.

4/8) It is possible to have multiple instances of object to co-exist without

any interference.

Page 18: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

Benefits of OOP:

5/8) It is possible to map objects in the problem domain

to those in the program.

6/8) It is easy to partition the work in a project based on objects .

Page 19: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

Benefits of OOP:

7/8) Object oriented systems can be easily upgraded from small

to large systems.

8/8) Software complexity can be easily managed.

Page 20: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

OOP first appeared in the Simula programming language in the 1960s.

Page 21: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

• Simula was invented by Ole-Johan Dahl and Kristen Nygaard,

which influenced C++, Java, and C#

• professors Dahl and Nygaard received two very prestigious prizes:

1.) von Neumann medal

2.) Turing prize (the Nobel prize of computer science)

Page 22: Python Programming - VI. Classes and Objects

OBJECT-ORIENTED PROGRAMMING

Aspects of OOP

Page 23: Python Programming - VI. Classes and Objects

CLASSES

• A class is just like a blueprint of a house.

• An object is the actual house built from that blueprint.

• You could then create numerous houses/objects from a single blueprint.

Page 24: Python Programming - VI. Classes and Objects

CLASSES

Two main components of an Object/Class

(these terms are synonymous/equivalent):

• Attributes & Behaviors

• Variables & Functions

• Fields & Methods

• Data Members & Member Functions

Page 25: Python Programming - VI. Classes and Objects

CLASSES INSTANTIATION

Page 26: Python Programming - VI. Classes and Objects

CLASSES

Page 27: Python Programming - VI. Classes and Objects

THE TIME CLASS | Time1.py

Page 28: Python Programming - VI. Classes and Objects

THE TIME CLASS | Time1.py

Page 29: Python Programming - VI. Classes and Objects

THE TIME CLASS | Time1.py

Page 30: Python Programming - VI. Classes and Objects

THE TIME CLASS

Page 31: Python Programming - VI. Classes and Objects

THE TIME CLASS

Page 32: Python Programming - VI. Classes and Objects

THE TIME CLASS

Page 33: Python Programming - VI. Classes and Objects

THE TIME CLASS

Page 34: Python Programming - VI. Classes and Objects

THE TIME CLASS

Page 35: Python Programming - VI. Classes and Objects

SPECIAL ATTRIBUTES Classes

Page 36: Python Programming - VI. Classes and Objects

SPECIAL ATTRIBUTES Classes

Page 37: Python Programming - VI. Classes and Objects

SPECIAL ATTRIBUTES Objects

Page 38: Python Programming - VI. Classes and Objects

SPECIAL ATTRIBUTES Objects

Page 39: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 40: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Protected Var

Page 41: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Protected Var

Page 42: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 43: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Chaining

Chaining Comparisons in Other Languages

Concise Equivalent in Python

Page 44: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Chaining

Chaining Comparisons

Page 45: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 46: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 47: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 48: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 49: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 50: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 51: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Raising Exceptions

Page 52: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 53: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 54: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 55: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 56: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Set and Get

Page 57: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Private Var

Page 58: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Private Var

Page 59: Python Programming - VI. Classes and Objects

OBJECT ATTRIBUTES | Private Var

Page 60: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 61: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 62: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 63: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 64: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 65: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 66: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 67: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 68: Python Programming - VI. Classes and Objects

CONSTRUCTORS | Default Args

Page 69: Python Programming - VI. Classes and Objects

DESTRUCTORS

• method called __del__

• executes when the last reference to

an object is deleted or goes out of scope.

• specifies no parameters other than self

• returns None.

Page 70: Python Programming - VI. Classes and Objects

DESTRUCTORS

Page 71: Python Programming - VI. Classes and Objects

CLASS ATTRIBUTES

Class Attributes are used to track the state of all

objects/instances of a given class.

They are also known as Static Variables

There are also Class Behaviors (Static Methods), methods

that involve all objects/instances of a given class). In Java,

Static Methods are used heavily by the Math class so that you

could execute methods without creating an object of the Math

class

Page 72: Python Programming - VI. Classes and Objects

CLASS ATTRIBUTES

Page 73: Python Programming - VI. Classes and Objects

CLASS ATTRIBUTES

Lists are not restricted to homogeneous data types.

Python programmers typically use lists

to store sequences of homogeneous values

(values of the same data type)

Page 74: Python Programming - VI. Classes and Objects

CLASS ATTRIBUTES

Lists are not restricted to homogeneous data types.

Python programmers typically use lists

to store sequences of homogeneous values

(values of the same data type)

Page 75: Python Programming - VI. Classes and Objects

CLASS ATTRIBUTES

Page 76: Python Programming - VI. Classes and Objects

COMPOSITION

• Objects usually have attributes of basic/primitive data types

(string, integers, boolean, etc)

• Composition: when objects whose attributes

are themselves references to objects of other classes

Page 77: Python Programming - VI. Classes and Objects

COMPOSITION

note the gayagaya() method and the tao1.gayagaya(tao2) statement

Page 78: Python Programming - VI. Classes and Objects

COMPOSITION

Page 79: Python Programming - VI. Classes and Objects

COMPOSITION

Page 80: Python Programming - VI. Classes and Objects

COMPOSITION

Page 81: Python Programming - VI. Classes and Objects

COMPOSITION

Page 82: Python Programming - VI. Classes and Objects

COMPOSITION

Page 83: Python Programming - VI. Classes and Objects

Deitel, Deitel, Liperi, and Wiedermann - Python: How to Program (2001).

Disclaimer: Most of the images/information used here have no proper source citation, and I do

not claim ownership of these either. I don’t want to reinvent the wheel, and I just want to reuse

and reintegrate materials that I think are useful or cool, then present them in another light,

form, or perspective. Moreover, the images/information here are mainly used for

illustration/educational purposes only, in the spirit of openness of data, spreading light, and

empowering people with knowledge.

REFERENCES