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.