- The data of an object can be accessed only by the functions associated with that object.
 - OOP's as an approach that provides a way of modularizing programs by creating partioned memory area for both data and functions.
 
Features of OOP:
- Emphasis is on data rather than procedure.
 - Programs are divided into objects.
 - Data is hidden and cannot be accessed by external functions.
 - New data and functions can be easily added whenever necessary.
 - Follow bottom - up approach in program design.
 
Concepts of OOP:
Basic concept of OOP are as follows:-
- Objects
 - Classes
 - Data abstraction and data encapsulation
 - Inheritance
 - Polymorphism
 - Data binding
 - Message passing
 
Object:
- Object are the basis run time entities in an object oriented system.
 - Programming problem is analyzed in terms of objects and nature of communication between them.
 - When a program is executed, the object interact by sending message to one another.
 - Each object contain data, and code to manipulate the data.
 
![]()  | 
| Fig. Way of represeting an object | 
Classes:
- A class is a collection of objects of similar type. For Example, mango, apple and orange are member of the class fruit. If fruit has been defined as a class, fruit mango; will create an object belonging to the class fruit.
 - The entire set of data and code of an object can be made a user defined data type with the help of a class.
 - Classes are user defined data type and behave like the build in type of a programming language.
 - Once a class has been defined, we create any number if object belonging to that class.
 
Data Abstraction and Encapsulation:
Data Abstraction : Abstraction refers to the act of representing essential features without including the background details or explanation.
- Classes uses the concept of abstraction and are defined as a list of abstract attributes such as size, weight and cost.
 - The functions that operate on these data are called methods.
 - The classes, who use the concept of data abstraction, are know as Abstract Data Types (ADT).
 
Data Encapsulation: The wrapping up of data functions into a single unit (called class) is know as encapsulation.
- The data is not accessible to the outside world, and only those functions which are wrapped in the class can access it.
 - This insulation of the data from direct access by the program is called data hiding or information hiding.
 
Inheritance (Reuseability):
- Inheritance is the process by which object of one class acquire the properties of objects of another class.
 - The concept of Inheritance provides the idea of reuseability.
 - Reuseability we can add additional features to an existing class with modifying it.
 - The real appeal and power of the inheritance mechanism is that it allows the programmer to reuse a class.
 - Each derived-class defines only those features that are unique to it.
 
![]()  | 
Polymorphism:
- Polymorphism means one name, multiple forma. It allows us to have more than one function with a same name in a program.
 - It plays an important role in allowing objects having different internal structure to share, the same external interface.
 - The process of making an operator to exhibit different behavior in different instance is know as operator overloading.
 - It is extensively used in implementing inheritance.
 
![]()  | 
| Fig. Polymorphism | 
Dynamic binding or Late binding:
- Binding refers to the linking of a procedure call to the code to be executed in response to the call.
 - Dynamic Binding means that the code associated with a given procedure call is not know until the time of the call at run time.
 - A function call associated with a polymorphic reference depends on the dynamic type of that reference.
 
Message Passing:
- Message passing involves specifying the name of object, the name of the function (message) and the information to be sent.
 - A message for an object is a request for execution of a procedure, and therefore will invoke a function (procedure) in the receiving objects that generates the desire result.
 - Object have as life cycle. They can be created and destroy.
 - Communication with an object is feasible as long as it is alive.
 




