# Index of object-oriented programming articles

This is a list of terms found in object-oriented programming.

## A

* Abstract class
* Accessibility
* Abstract method
* Abstraction (computer science)
* Access control
* Access modifiers
* Accessor method
* Adapter pattern
* Aspect-oriented

## B

* Bridge pattern
* Builder pattern
* Base class

## C

* Cast
* Chain-of-responsibility pattern
* Class
* Class hierarchy
* Class method
* Class object
* Class variable
* Cohesion
* Collection class
* Composition
* Constructor
* Container
* Contravariance
* Copy constructor
* Coupling
* Covariance

## D

* Data-driven design
* Data hiding
* Default constructor
* Deep copy
* Delegation
* Dependency injection
* Destructor
* Dispatch table
* Dynamic binding
* Dynamic dispatch
* Dynamically typed language

## E

* Early binding
* Eigenclass
* Encapsulation (computer programming)
* European Conference on Object-Oriented Programming
* Exception handling
* Extension

## F

* Facade - pattern
* Factory method pattern
* Factory object
* Factory pattern
* Field
* Finalizer
* First-class function
* Fragile base class
* Function composition

## G

* Generic programming
* God object

## H

* Heap-based memory allocation
* Helper class
* Hybrid language

## I

* Immutable object (also called immutable value)
* Information hiding
* Inheritance
* Initialize
* Inline function
* Inner class
* Instance (computer science)
* Instance method
* Instance variable (also called data member)
* Interaction diagram
* Interface
* Inversion of control (IoC)
* Iterator

## L

* Late binding
* Liskov substitution principle

## M

* Member accessibility
* Members, any contents of a class: Attributes, Methods, and Inner classes
* Message passing
* Metaclass
* Metaprogramming
* Method (computer programming)
* Mixin
* Mock object
* Model–view–controller (MVC)
* Modular programming
* Multiple dispatch
* Multiple inheritance
* Multitier architecture
* Mutable variable
* Mutator method

## N

* Name mangling
* Namespace
* Native method
* Nested class

## O

* Object (computer science)
* Object type
* OOPSLA – annual conference on Object-Oriented Programming, Systems, Languages, and Applications
* Open/closed principle
* Orthogonality
* Overload

## P

* Package
* Parametric overloading
* Parameterized classes
* Parnas's principles
* Partial class
* Patterns
* Policy-based design
* Polymorphic
* Primitive data type
* private, a way of encapsulation in object-oriented programming
* Programming paradigm
* protected, a way of encapsulation in object-oriented programming
* Protocol
* Prototype pattern
* Prototype-based programming
* public, a way of encapsulation in object-oriented programming
* Pure polymorphism
* Pure virtual function (also called pure virtual method)

## R

* Rapid application development (sometimes Rapid prototyping)
* Recursion
* Refinement
* Reflective programming (reflection)
* Responsibility-driven design
* Reverse polymorphism
* Run-time type information

## S

* Scope
* Shallow copy, in contrast to deep copy
* Single responsibility principle
* Singleton pattern
* Singly rooted hierarchy
* Slicing
* Specification class, a class implementing abstract class
* Stack-based memory allocation
* Static method
* Static typing, in contrast to dynamic typing
* Strong and weak typing
* Subclass (also called child class or derived class)
* Subclass coupling
* SOLID
* Substitutability, principle of
* Subtype
* Superclass (also called parent class or base class)

## T

* Tiers
* Template method pattern
* Test-driven development
* Trait
* Type
* Type conversion (also called typecasting)

## V

* Virtual class
* Virtual function (also called virtual method)
* Virtual function pointer (also called virtual method pointer)
* Virtual inheritance (Object Oriented Programming)
* Virtual method table (also called vtable, virtual function table or virtual method table)
* Viscosity (programming)
* Void type

## W

* Weak reference

## Y

* Yo-yo problem