Brief Introduction to OOP
Object Oriented Programming or OOP is the technique to create programs based on
the real world. Unlike procedural programming, here in the OOP programming
model programs are organized around objects and data rather than actions and
logic. Objects represent some concepts or things and like any other objects in
the real Objects in programming language have certain behavior, properties,
type, and identity. In OOP based language the principal aim is to find out the
objects to manipulate and their relation between each other. OOP offers greater
flexibility and compatibility and is popular in developing larger application.
Another important work in OOP is to classify objects into different types
according to their properties and behavior. So OOP based software application
development includes the analysis of the problem, preparing a solution, coding
and finally its maintenance.
Java is a object oriented
programming and to understand the functionality of OOP in Java, we first
need to understand several fundamentals related to objects. These include
class, method, inheritance, encapsulation, abstraction, polymorphism etc.
Class - It is the central point of OOP and that contains data and
codes with behavior. In Java everything happens within class and it describes a
set of objects with common behavior. The class definition describes all the
properties, behavior, and identity of objects present within that class. As far
as types of classes are concerned, there are predefined classes in languages
like C++ and Pascal. But in Java one can define his/her own types with data and
code.
Object - Objects are the basic unit of object orientation with
behavior, identity. As we mentioned above, these are part of a class but are
not the same. An object is expressed by the variable and methods within the
objects. Again these variables and methods are distinguished from each other as
instant variables, instant methods and class variable and class methods.
Methods - We know that a class can define both attributes and
behaviors. Again attributes are defined by variables and behaviors are
represented by methods. In other words, methods define the abilities of an
object.
Inheritance - This is the mechanism of organizing and structuring
software program. Though objects are distinguished from each other by some
additional features but there are objects that share certain things common. In
object oriented programming classes can inherit some common behavior and state
from others. Inheritance in OOP allows to define a general class and later to
organize some other classes simply adding some details with the old class
definition. This saves work as the special class inherits all the properties of
the old general class and as a programmer you only require the new features.
This helps in a better data analysis, accurate coding and reduces development
time.
Abstraction - The process of abstraction in Java is used to hide
certain details and only show the essential features of the object. In other
words, it deals with the outside view of an object (interface).
Encapsulation - This is an important programming concept that assists in
separating an object's state from its behavior. This helps in hiding an
object's data describing its state from any further modification by external
component. In Java there are four different terms used for hiding data
constructs and these are public, private, protected and package. As we know an
object can associated with data with predefined classes and in any application
an object can know about the data it needs to know about. So any unnecessary
data are not required by an object can be hidden by this process. It can also
be termed as information hiding that prohibits outsiders in seeing the inside
of an object in which abstraction is implemented.
Polymorphism - It describes the ability of the object in belonging to
different types with specific behavior of each type. So by using this, one
object can be treated like another and in this way it can create and define
multiple level of interface. Here the programmers need not have to know the
exact type of object in advance and this is being implemented at runtime.