Object-Oriented Programming
Object-Oriented Programming
Solving a problem by creating objects is one of the most popular
approaches in programming. This is called object-oriented programming.
This concept focuses on using reusable code. (Implements DRY
principle)
Class
A class is a blueprint for creating objects.
The syntax of a class looks like this:
Class Employee: [classname is written in PascalCase]
#methods & variables
Copy
Object
An object is an instantiation of a class. When class is defined, a
template(info) is defined. Memory is allocated only after object instantiation.
Objects of a given class can invoke the methods available to it
without revealing the implementation details to the
user. #Abstraction & Encapsulation!
Modelling a problem in OOPs
We identify the following in our problem
Noun -> Class -> Employee
Adjective -> Attributes -> name,age,salary
Verbs -> Methods -> getSalary(), increment()
Class Attributes
An attribute that belongs to the class rather than a particular
object.
Example:
Class Employee:
company
= “Google” #Specific to each class
alok =
Employee() #Object instantiation
alok.company
Employee.company =
“YouTube” #changing class attribute
Copy
Instance Attributes
An attribute that belongs to the Instance (object)
Assuming the class from the previous example:
alok.name = “alok”
alok.salary = “30K” #Adding instance
attributes
Copy
Note: Instance attributes take preference over class attributes
during assignment and retrieval.
alok.attribute1 :
1.
Is attribute1 present in the object?
2.
Is attribute1 present in class?
‘self’ parameter
self refers to the instance of the class.
It is automatically passed with a function call from an object.
alok.getSalary()
Copy
here, self is alok, and the above line of code is equivalent to
Employee.getSalary(alok)
This function getsalary is defined as:
class Employee:
company
= “Google”
def getSalary(self):
print(“Salary is not there”)
Copy
Static method
Sometimes we need a function that doesn’t use the self-parameter.
We can define a static method like this:
@staticmethod #decorator to mark greet
as a static method
def greet():
print(“Hello user”)
Copy
__init__() constructor
__init__() is a special method which runs as soon as the object is
created.
__init__() method is also known as constructor.
It takes self-argument and can also take further arguments.
For Example:
class Employee:
def __init__(self,name):
self.name
= name
def getSalary(self):
#Some code…
alok = Employee(“Alok”) #Object can be
instantiated using constructor like this!
Copy
Chapter 10 – Practice Set
1.
Create a class programmer for storing information of a few
programmers working at Microsoft.
2.
Write a class calculator capable of finding square, cube, and the
square root of a number.
3.
Create a class with a class attribute a; create an object from it
and set a directly using object.a=0 Does this change the class attribute?
4.
Add a static method in problem 2 to greet the user with hello.
5.
Write a class Train which has methods to book a ticket, get
status(no of seats), and get fare information of trains running under Indian
Railways.
6.
Can you change the self parameter inside a class to something else
(say ‘alok’)? Try changing self to ‘slf’ or ‘alok’ and see the effects.