# **🎨 Exhibit: Object-Oriented Programming (OOP)**

Object-Oriented Programming organizes software design around **data**, or **objects**, rather than functions and logic. An object is a self-contained unit that groups together variables (state) and methods (behavior).

## **📐 Architectural Foundations**

OOP was designed to manage code complexity by modeling computer components like physical, modular biological units or hardware chips.

### **1\. Dynamic Dispatch Resolution**

In object systems, method execution is resolved at runtime. Instead of calling a static function address directly, an object receives a message and determines which implementation to run:

![][image1]Where ![][image2] is the requested method selector, ![][image3] is the class of the receiving object, and ![][image4] is its superclass. This lookup process allows for **polymorphism**.

## **🔑 Core Pillars of OOP**

* **Encapsulation:** Hiding internal object details (private state) and exposing only what is necessary through a public interface (methods). This prevents external components from corrupting internal states.  
* **Abstraction:** Using simple class models to represent complex underlying mechanisms.  
* **Inheritance:** Establishing hierarchical relationships where child classes inherit properties and behaviors from parent classes (reusing code).  
* **Polymorphism:** The ability of different objects to respond to the same message in unique, specialized ways (e.g., both a Dog and a Cat class responding to a speak() message).

## **🏛️ Historical Museum Tour**

Explore how OOP developed from a conceptual research experiment into the corporate enterprise standard:

### 1. The Pure Message Pioneer: [Smalltalk (1972)](../eras/The%20Structured%20Foundation%20%281970s%29/Smalltalk%20Booth.md)

Developed at Xerox PARC, Smalltalk made "everything an object." It modeled software as an ecosystem of objects communicating via dynamic message passing. Arithmetic like 3 + 4 is actually sending the message + with the argument 4 to the integer object 3.

### 2. High-Performance Hybrid: [C++ (1983)](../eras/The%20Multi-Paradigm%20Dawn%20%281980s%29/C%2B%2B%20Booth.md)

Bjarne Stroustrup created C++ ("C with Classes") to merge the object abstractions of Simula with the high-speed execution model of C. C++ introduced compile-time class blueprints and multiple inheritance while maintaining manual hardware-level memory speed.

### 3. Dynamic Runtime Bindings: [Objective-C (1984)](../eras/The%20Multi-Paradigm%20Dawn%20%281980s%29/Objective-C%20Booth.md)

Objective-C integrated Smalltalk’s dynamic messaging directly onto the standard C syntax engine. By executing method calls via objc_msgSend(), Objective-C deferred execution binding completely to runtime, making applications highly flexible.

### 4. Enterprise Class Hierarchies: [Java (1995)](../eras/The%20Web%20Boom%20%26%20Dynamic%20Runtimes%20%281990s%29/Java%20Booth.md)

Java popularized enterprise OOP by removing manual pointers and mandating that every single instruction exist within a structured class hierarchy. It utilized single inheritance and interfaces to build incredibly predictable application models for corporations.

## **🎨 Paradigm Showpiece: Polymorphic Dispatch**

Let's look at how polymorphism allows a single execution call to adapt structurally to different target objects.

### **Example in C++ (Polymorphic Class Abstraction)**

\#include \<iostream\>  
\#include \<vector\>

// Abstract Base Class  
class Instrument {  
public:  
    virtual void play() const \= 0; // Pure virtual function  
    virtual \~Instrument() {}       // Safe RAII cleanup  
};

class Violin : public Instrument {  
public:  
    void play() const override {  
        std::cout \<\< "\[Violin\] Playing expressive, bowed strings..." \<\< std::endl;  
    }  
};

class Synthesizer : public Instrument {  
public:  
    void play() const override {  
        std::cout \<\< "\[Synth\] Playing electronic wave oscillators..." \<\< std::endl;  
    }  
};

int main() {  
    // Collect polymorphic pointers to the base class interface  
    std::vector\<Instrument\*\> orchestra;  
    orchestra.push\_back(new Violin());  
    orchestra.push\_back(new Synthesizer());

    // Execute same method selector, triggering different behaviors at runtime  
    for (const auto\* instrument : orchestra) {  
        instrument-\>play();  
    }

    // Dynamic cleanup  
    for (auto\* instrument : orchestra) {  
        delete instrument;  
    }  
    return 0;  
}

Turn back to the [Functional Paradigm Guide](Functional%20Paradigm%20Guide.md) or continue with the [Low-Level Paradigm Guide](Low-Level%20Paradigm%20Guide.md).

[image1]: <data:image/png;base64,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>

[image2]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAaCAYAAAC6nQw6AAAB2ElEQVR4Xo1TPUsDQRBNsLARi2ia3N3uHUlAsbEQwU5EyA+wCDZWdrY2llb+AAsRwcYyBCuxEFsFCyFgYaWNnUHsxELi24+5zO1uPh4Mt/Pem9nZvbtSyaLMnhQmN6s81yJllitUTAPP6xGTwAv47PTIdTqAC6eoAK8mZGIIuMvmohjjgA3og9Wa04RMGkbgsmctEJ5qIIRYgWb2sZ44TircLqXMsjRbxXKG0UPAsIN4kVLcNRuN2TRN24gncD3ENSzlLE1b0G+RXyG+EftUT5vNSCF7KDyCOEA8Yn0ex3EFz13FYdozNHnWRZgaXB/xRl10I5i2QV4KKS9gVo26dJNYb9nmfTRdokLkr/D/mcyBLhDigWvgOopPkniNOGy8pzg0Piau0M0e4YT/N/YIn5qwbkzdVd4sy9bzYg67S0utaQd7rA4xeBHzyH8Q7yqParVFay0U/Var1TmdD3cf4C4OrKWEN9c29yhObc1h4WAgNviZGf/h5BniC3GDuEcsc11DTeO+A3yQzTyxWr1eT/BRbkZRtGBop0gjwBEVkBiYyo28OMT7iQOj+Y5JP7p5BKca1XKIcVoQ0xS4AzGEWUWPUFy4NveIrm4Yn+UYr/r6uN1ClAuy/AMAR0/Nek/IrAAAAABJRU5ErkJggg==>

[image3]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAaCAYAAAC+aNwHAAABt0lEQVR4Xo1Su0pEMRDd3MrHNsJeFtfdPK5g6RcIaqW9rSD6A1oJln6AfoCthSDb2AvCaiEIYqPiF9jaWVjomeRmN5mbqAdmk5lzcmaSu62WhQgCv24Z5zFYzYq5TjRLgX8evHG3252tqmpJSrmCtIgMIrOmszBaj5RS3y7kM9Y3GO2DK5RU241uHhDNaa2vECPEam+hN0OawWDQg8kN4gLxlThqRYsgX2pB4eteaLQBpT5pqqDuFhSJfScSnXdzj4bxbxHWICaUpPt+lGXZplzQ6fCedQrNORocR94oTFFnxGlYT0EqtUXvERVhsOkmkOvJucdgnE9hcEQT9Pv9aX58knPGQ9j738NgGJSi1YM0xpjl4L/uIKUagrxzWUhO9rj7PDRPLfu6DLjCDn0BeswEbQH+knS8btEpO216A/wLD32N+RTgz+IaU2ht1iB6hAl9zleMfIL1AXGNzhv+jDsWHGY+AmIy2jNaH8CsimkCPULmngSiBH9lQvpt87BGdfic7xr7sPEfg1o0+dToKVCzYM829Z7Mkn6/TBYTPhOZwbKteW2CdDVCIInUzfo/zAgZmXAMxQ93lUWfw2eRsAAAAABJRU5ErkJggg==>

[image4]: <data:image/png;base64,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>