The concepts of Object-Oriented programming have been there for over three-four decades. Initially developed as a means of developing systems that better reflected real life needs and were more user friendly. OO’s popularity and sophistication has increased in the past several years as businesses are abandoning their mainframe systems and incorporating more client-server models to run their businesses and are integrating web technology as a business tool. One of the primary features of OO programming is its relative flexibility and easily adaptability to changing business needs.
When the hardware and software became increasingly complex, quality was often compromised in different phases. As a result, researchers studied ways to maintain software quality and developed object-oriented programming in part to address common problems reusable units of programming logic. The methodology focuses on data rather than processes, with programs composed of self-sufficient modules (objects) each has a independent existence and data structure. This is in contrast to the existing modular programming which had been dominant for many years that focused on the function of a module, rather than specifically the data.
An object-oriented program may be viewed as a collection objects, as opposed to the conventional model, in which a program is seen as a list of tasks (subroutines) to perform. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects and can be viewed as an independent 'machine' with a distinct role or responsibility.
The Simula programming language was the first to introduce the concepts underlying object-oriented programming (objects, classes, subclasses, virtual methods, coroutines, garbage collection, and discrete event simulation) as a superset of Algol. Simula was used for physical modeling, such as models to study and improve the movement of ships and their content through cargo ports. Smalltalk was the first programming language to be called "object-oriented".
Next : Inheritance in Object Oriented Programming