20.1 A Brief History and Definition of OOP
Object-Oriented Programming traces back to the 1960s with Simula and advanced in the 1970s with Smalltalk. By framing programs in terms of objects—conceptual entities holding both data and methods—OOP aimed to:
- Reduce Complexity: Split large software projects into smaller, comprehensible modules that mirror real-world concepts.
- Provide Intuitive Models: Let developers center their thinking on objects (and their interactions) rather than purely on functions or data alone.
- Enable Code Reuse: Promote the extension of existing functionality through inheritance, reducing repetitive code.
OOP typically highlights these pillars:
- Encapsulation: Conceal an object's data behind a well-defined interface of methods.
- Inheritance: Create "is-a" relationships by deriving new objects from existing ones.
- Polymorphism: Interact with objects of different types through a unified interface.