Introduction
OOP is Nothing but Object Oriented Programming.According to Wikipedia,
Object-oriented programming (OOP) is a programming paradigm that uses
"objects" and their interactions to design applications and computer
programs.
OOPs have following features
1.
Object - Instance of class
2.
Class - Blue print of Object
3.
encapsulation - Protecting our data
4.
polymorphism - Different behaviors at diff. instances
5.
abstraction - Hidding our irrelavance data
6.
inheritence - one property of object is aquring to another property of object
1. Object
Basically an object is anything that is identifiable as an single
material item. You can see around and find many objects like Camera,
Monitor, Laptop etc. In OOP perspective, an object is nothing but an
instance of a class that contains real values instead of variables
2. Class
A class is a template definition of the methods and variables for a
particular kind of object. In other words, class is the blue print from
which an individual objects are created.
every human has eye ,so eyecolor can be considered as the property of
human being which can be encapsulted as a data in our class Human
class Human
{
private:
EyeColor IColor;
NAME personname;
};
Consider object of class of
Human myhuman;
we want set myhuman's name as "linto" and IColor as "black", For that we want methods to do that task.
So need methods for class to do a particular task on the data
class Human
{
private:
EyeColor IColor;
NAME personname;
public:
void SetName(NAME anyName);
void SetIColor(EyeColor eyecolor);
};
3. Abstraction
Abstraction is a process of identifying the relevant qualities and
behvaiors an object should possess. Lets take an example to understand
abstraction. A Laptop consists of many things such as processor,
motherboard, RAM, keyboard, LCD screen, wireless antena, web camera, usb
ports, battery, speakers etc. To use it, you don't need to know how
internally LCD screens, keyboard, web camera, battery, wireless antena,
speakers works. You just need to know how to operate the laptop by
switching it on. The intrinsic details are invisitble. Think about if
you would have to call to the engineer who knows all internal details
of the laptop before operating it. This would have highly expensive as
well as not easy to use everywhere by everyone. So here the Laptop is an
object that is designed to hide its complexity.
Think If you need to write a piece of software to track the students
details of a school, you may probably need to create Students objects.
People comes in all different backgrounds, educational qualifications,
locations, hobbies, ages and have multiple religion, language but in
terms of application, an student is just a name, age, class and roll
number, while the other qualities are not relevant to the application.
Determining what other qualities (background, qualifications, location,
hobbiels etc) are in terms of this application is abstraction.
In object-oriented software, complexity is managed by using abstraction.
Abstraction is a process that involves identifying the critical
behavior of an object and eliminating irrelevant and complex detilals. A
well thought-out abstraction is usually simple, and easy to use in the
perspective of the user, the person who is using your object.
4. Encapsulation
Encapsulation is a method for protecting data from unwanted access or
alteration by packaging it in an object where it is only accessible
through the object's interface. Encapsulation are often referred to as
information hiding. But both are different. Infact information hiding is
actually the result of Encapsulation. Encapsulation makes it possible
to separate an object's implementation from its orgiinal behavior - to
restrict access of its internal data. This restriction facilitate
certains detiails of an object;s behavior to be hidden. This allows to
protect an object's interal state from corruption by its user.
It is the mechanism by which Abstraction is implemented. In other words
you can say that it is the result of the Encapsulation. For example,
the Laptop is an object that encapsulates many technologies/hardwares
that might not be understood clearly by most people who use it.
Inheritance
5. Inheritance
Inheritance is the ability to define a new class or object that inherits
the behaviour and its functionality of an existing class. The new class
or object is called a child or subclass or derived class while the
original class is called parent or base class. For example, in a
software company Software Engineers, Sr. Software Engineers, Module
Lead, Technical Lead, Project Lead, Project Manager, Program Manager,
Directors all are the employees of the company but their work, perks,
roles, responsibilities differs. So in OOP, the Employee base class
would provide the common behaviours of all types/level of employee and
also some behaviours properties that all employee must have for that
company. The particular sub class or child class of the employee would
implement behaviours specific to that level of the employee. So by above
example you can notice that the main concept behind inheritance are
extensibility and code reuse (in this case you are extending the
Employee class and using its code into sub class or derived class).
6. Polymorphism
As name suggests, Polymorphism means an ability to assume different
forms at different places. In OOP, it is a language's ability to handle
objects differently based on their runtime type and use. Polymorphism is
briefly described as "one interface, many
implementations".Ppolymorphism is a characteristic of being able to
assign a different meaning or usage to something in different contexts -
specifically, to allow an entity such as a variable, a function, or an
object to have more than one form.
There are two types of polymorphism.
- Compile time polymorphism - It is achieved by overloading functions and operators
- Run time polymorphism - It is achieved by overriding virtual functions
Lets say you have a class that have many Load methods having different
parameters, this is called Compile time polymorphism. Lets take another
example where you have a virtual method in the base class called Load
with one parameter and you have redefined its functioanlity in your sub
class by overriding base class Load method, this is called Run time
polymorphism.