Object-Oriented Programming¶
A programming paradigm that organizes computation as interactions among identity-bearing objects that combine state with behavior and respond through method or message dispatch.
Core Idea¶
Object-oriented programming organizes a program as a population of objects: computational entities with identity, state, and behavior that collaborate through message sending or method invocation. An object can preserve information across interactions, select behavior according to the message received and its dynamic kind, and hide representation choices behind a behavioral interface. The paradigm is therefore more specific than merely storing records beside procedures.
The stable identity survives differences among languages. Smalltalk emphasizes objects communicating by messages; class-based languages commonly describe method calls and dynamic dispatch; prototype-based languages delegate behavior through objects rather than treating classes as indispensable. Alan Kay's history of Smalltalk makes messaging, state retention, and extreme late binding central to the original lineage.
Scope of Application¶
The paradigm structures graphical interfaces, simulations, business applications, operating-system services, games, distributed systems, and language runtimes. It is especially useful when a domain can be represented as long-lived participants with changing local state and negotiated behavior.
Different lineages emphasize different roles. Simula supplied class, object, inheritance, and virtual-operation machinery for simulation. Smalltalk treated nearly all computation as messaging among objects. C++ combined classes and virtual dispatch with procedural and systems-programming facilities. Prototype languages use delegation rather than class instantiation as the main sharing route. These are variants of the paradigm, not evidence that any one language feature is sufficient.
Clarity¶
Consider a request \(m(a_1,\ldots,a_n)\) sent to receiver \(o\). Dispatch can be represented abstractly as
followed by execution with \(o\) bound as the current receiver. The object's state may change from \(\sigma_o\) to \(\sigma'_o\), while clients need only the operation's contract. This receiver-sensitive lookup distinguishes polymorphic dispatch from selecting an ordinary overloaded function solely from static argument types.
Manages Complexity¶
OOP localizes change by assigning responsibilities to objects and exposing limited protocols. A caller that depends on a protocol can ignore whether the receiver stores a table, computes a value lazily, or delegates to another object. Dynamic dispatch replaces some explicit type tests with extensible behavior selection.
Abstract Reasoning¶
An object may be modeled as a labeled transition system
where \(\sigma\) is private state, \(m\) a requested operation, \(\vec a\) arguments, \(r\) a result, and \(e\) externally visible effects. Clients reason from admissible message traces and contracts rather than the full representation.
Knowledge Transfer¶
The structural roles transfer across class-based, prototype-based, actor-like, component, and distributed-object settings. The concrete meanings of identity, state, and dispatch change: identity may be a memory reference, stable handle, actor address, or persistent key; state may be mutable fields or an encapsulated evolving process; dispatch may be a virtual table, dictionary lookup, multimethod, or delegation chain.
Transfer has limits. Actors enforce stronger isolation and asynchronous messaging than ordinary objects. Abstract data types can hide representation without runtime receiver identity.
Relationships to Other Abstractions¶
Current abstraction Object-Oriented Programming Domain-specific
Parents (1) — more general patterns this builds on
-
Object-Oriented Programming presupposes, typical Abstract Data Type Prime
Abstract Data Type is the proposed minimal parent through a typical composition/presupposition relation.
Hierarchy paths (3) — routes to 2 parentless roots
- Object-Oriented Programming → Abstract Data Type → Information Hiding → Abstraction
- Object-Oriented Programming → Abstract Data Type → Information Hiding → Boundary
- Object-Oriented Programming → Abstract Data Type → Interface → Boundary
Neighborhood in Abstraction Space¶
Object-Oriented Programming sits in a sparse region of the domain-specific corpus (83rd percentile for distinctiveness): few abstractions share its structure, so a faithful description tends to retrieve it precisely.
Family — Unclustered & Miscellaneous (1565 abstractions)
Nearest neighbors
- Live distributed object — 0.83
- Prototype-based programming — 0.83
- Object-Oriented Operating System — 0.82
- Component Object Model — 0.81
- Virtual class — 0.80
Computed from structural-signature embeddings · 2026-09-08