{
  "schema_version": "1.0",
  "codex": "thecodex.expert/coding",
  "type": "paradigm",
  "slug": "paradigms/object-oriented",
  "name": "Object-Oriented Programming",
  "section": "Paradigms",
  "canonical_definition": "Object-oriented programming (OOP) is a programming paradigm that organises software around objects \u2014 entities that bundle related data (attributes) and behaviour (methods) \u2014 and models programs as networks of interacting objects, structured using the four principles of encapsulation, abstraction, inheritance, and polymorphism.",
  "confidence": "high",
  "last_verified": "2026-06-01",
  "source_count": 5,
  "url": "https://thecodex.expert/coding/paradigms/object-oriented/",
  "paradigm_type": "imperative",
  "unit_of_composition": "object/class",
  "four_principles": [
    "encapsulation",
    "abstraction",
    "inheritance",
    "polymorphism"
  ],
  "primary_languages": [
    "Java",
    "C++",
    "Python",
    "Ruby",
    "Kotlin",
    "Swift"
  ],
  "concept_relationship": {
    "requires_first": [
      "paradigms/procedural",
      "concepts/functions",
      "concepts/variables"
    ],
    "enables": [
      "concepts/classes",
      "concepts/inheritance",
      "concepts/encapsulation",
      "concepts/polymorphism",
      "software-engineering/design-patterns"
    ],
    "commonly_confused_with": [
      "classes (classes are a mechanism; OOP is defined by four principles)"
    ]
  },
  "sources": [
    {
      "num": 1,
      "citation": "Kay, A. C. (1993). The Early History of Smalltalk. ACM SIGPLAN Notices 28(3), 69-95.",
      "tier": 1
    },
    {
      "num": 2,
      "citation": "Liskov, B. & Wing, J. (1994). A behavioral notion of subtyping. ACM TOPLAS 16(6).",
      "tier": 1
    },
    {
      "num": 3,
      "citation": "Gamma, E. et al. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.",
      "tier": 1
    },
    {
      "num": 4,
      "citation": "Dahl, O.-J. & Nygaard, K. (1966). SIMULA: An ALGOL-based simulation language. CACM 9(9), 671-678.",
      "tier": 1
    },
    {
      "num": 5,
      "citation": "Stroustrup, B. (1994). The Design and Evolution of C++. Addison-Wesley.",
      "tier": 1
    }
  ]
}