Object-oriented programming is littered with long terms that refer to very simple ideas. A lot of the time when you try to find out what they mean, you have to read through multiple pages of wordy explanation that either assumes objects are a foreign concept to you, or just talks so much about theory and ideas behind it that it won’t get on with what the words mean.

So before the irony becomes too excessive, here are some simple definitions of various terms I’ve come across.

abstraction
Providing methods that don’t require knowledge of the object’s internal details
accessor method
A method that returns the value of a property
aggregation
An object containing other objects
cohesion
How related something’s different functionalities are
coupling
How much detail two things know about each other in order to interact
dynamic binding
Determining which version of a method to run at runtime
encapsulation
Protecting data from external influences (basically using private properties)
interface
How an object is accessed externally
mutator method
A method that changes the value of a property
overloading
Having multiple definitions of a function/method with different ways of calling each; not limited to OOP
polymorphism
a.x() doing something different to b.x(). Alternatively, an object x having methods of classes a, b and c
singleton
A class that is designed to only ever have one instance
static binding
Determining which version of a method to run at compile time