OOP is the most popular way of analysing, designing, and developing application systems, especially on complex scientific computing software systems. The perspective that views the elements of a given situation by decomposing them into objects and object relationships. This approach used to design modular and reusable software systems.
What is Object-Oriented Design?
The classical view of a computer program is that of a process that has been encoded in a form that can be executed on a computer. This view originated from the fact that the first computers were developed mainly to automate a well-defined process for numerical computation and dates back to the first stored-program computers.
The overall philosophy here is to define a software system as a collection of objects of various types that interact with each other through well-defined interfaces. Unlike a hardware component, a software object can be designed to handle multiple functions and can therefore participate in several processes.
The problems are modelled using objects. Objects have:
- Behaviour: they do things
- State: which changes when they do things
The Notion of a Class
Classes allow a software designer to look at objects as different types of entities. Viewing objects this way allows us to use the mechanisms of classification to categorise these types, define hierarchies and engage with the ideas of specialisation and generalisation of objects.
History of OOPs
Object-oriented programming approach could be traced to the idea of ADTs(Abstract Data types)and the concept of objects in Simula 67 programming language, which was developed in the 1960s for performing simulations. The first true object-oriented programming language that appeared before the larger software development community was Smalltalk in 1980, developed at Xerox PARC. Smalltalk used objects and messages as the basis for computation. Classes could be created and modified dynamically.
At 1970, Bjarne Stroustrup, who was doing doctoral work in England, needed a language for doing a simulation of distributed systems. He developed a language based on the class concept in Simula, but this language was not particularly efficient. However, he pursued his attempt and developed an object-oriented language at Bell Laboratories as a…