20.1 A Brief History and Definition of OOP

Object-Oriented Programming traces back to the 1960s with Simula and continued to evolve in the 1970s with Smalltalk. By structuring programs around objects—conceptual entities that hold both data and methods—OOP aimed to:

  • Reduce Complexity: Decompose large software into smaller modules that reflect real-world concepts.
  • Provide Intuitive Models: Focus development and design around objects and their interactions rather than purely on functions or data.
  • Enable Code Reuse: Promote the extension of existing functionality by deriving new objects from existing ones through inheritance, thereby reducing duplication.

OOP traditionally highlights three pillars:

  • Encapsulation: Concealing an object’s internal data behind a well-defined set of methods.
  • Inheritance: Forming “is-a” relationships by deriving new types from existing ones.
  • Polymorphism: Interacting with diverse types through a unified interface.