Object Oriented Programming 

  • It treats data as a critical element in program development and does not allow it to flow freely around the system.
  • It ties data more closely to the functions that operate on it and protects it from accidental modification from outside functions.
  • OOP allows decomposition of a problem into a number of entities called objects and then builds data and functions around these objects.
  • 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 another object.


Organization of data and function in OOP


Basics of Java

Characteristics of OOP

  • Emphasis is on data rather than procedure.
  • Programs are divided into objects.
  • Data Structures are designed such that they characterize the objects.
  • Functions that operate on data of an object are tied together in the data structure.
  • Data is hidden and can not be accessed by external functions.
  • Objects may communicate with each other through functions.
  • New data and functions can be added easily whenever necessary.
  • Follows bottom-up approach in program design.

Basic concepts of OOP

1.Classes

  • Classes are user-defined data types
  • A class is a collection of Data member and member functions.
  • Variables declared in a class are called data members and functions declared in class are called member functions or methods.
  • Objects are variables of type class. Once a class has been defined, we can create any number of objects belonging to that class.
  • Each object is associated with the data of type class with which they are created.
  • If Fruit is a class, then apple, orange, banana etc. are the objects of the class Fruit.
  • Class is a logical structure.

2.Object
  • Basic run-time entities in an object-oriented system i.e. fundamental building blocks for designing a software.
  • It is a collection of data members and associated member functions(method).
  • An object represents a particular instance of a class.
  • An object has 3 characteristics:
    1. Name
    2. State
    3. Behavior
  • Objects take up space in the memory and have associated addresses.
  • When a program is executed, objects interact by sending messages to one another.
  • Example : Book, Bank, Customer, Account etc.


3.Data Abstraction
  • Abstraction refers to the act of representing essential features without including the background details or explanation.
  • Data abstraction is an encapsulation of object’s state and behavior.
  • Data abstraction increases the power of programming languages by creating user-defined data types.
  • Classes use the concept of abstraction and are defined as a list of abstract attributes(data members) and functions(methods).
  • Since classes use the concept of data abstraction, they are also used as Abstract Data Type(ADT).

4.Encapsulation
  • Data encapsulation combines data and functions into a single unit
  • called class.
  • When using data encapsulation, data is not accessed directly, it is only accessible through the methods present inside the class.
  • Data encapsulation enables data hiding, which is an important concept of OOP.
  • Example : Capsules are wrapped with different medicines.

5.Inheritance
  • It is the process by which one object can acquire the properties of another.
  • It allows the declaration and implementation of new class/classes from existing classes.
  • The existing class is known as base class/parent class/super class and the new class/classes is/are known as derived class/child class/sub class.
  • It uses the concept of Reusability.


Types of Inheritance :
      1. Single Inheritance
      2. Multiple Inheritance
      3. Multilevel Inheritance
      4. Hierarchical Inheritance
      5. Hybrid Inheritance

6.Polymorphism

  • The ability to take more than one form is known as Polymorphism.
  • An operation may exhibit different behaviors in different instances. The behavior depends upon the types of data used in the operation.
  • + operator can be used to add 2 numbers and the result is the sum of two numbers.
  • Same + operators can be used to add 2 strings and the result is concatenation of 2 strings.
  • This process of making an operator to exhibit different behaviors in different instances is known as operator overloading.

Polymorphism (Function Overloading)

  • A single function name can be used to handle different numbers and different types of arguments.
  • Using a single function name to perform different types of tasks is known as function overloading.

7.Message Passing

  • Any processing is accomplished by sending messages to objects.
  • A message for an object is a request for execution of a procedure/function.
  • It invokes a function on the receiving object that generates the desired result.
  • Message passing involves specifying the name of the object, name of the function(message) and information to be sent.