La Programación Orientada a Objetos (OOP por sus siglas en Ingles) es un paradigma de programación, es decir, una forma de diseñar código, en el que se agrupa funcionalidad con propiedades específicas dentro de un "objeto", cada objeto es responsable de modificar sus propiedades sin tener que interferir con otros objetos, un objeto puede representar o no objetos de la vida real; por ejemplo podemos definir propiedades sobre una pelota, como la elasticidad y su peso, y a estos datos acoplar funcionalidad para que rebote con más o menos fuerza según la altura o que nos permita saber a la velocidad que esta yendo, esto permite crear código más compacto y, en algunos casos, más modular.
Algunas de las características más importantes de este paradigma de programación son el encapsulamiento, el polimorfismo y la herencia. Gracias al encapsulamiento las propiedades de un objeto son solo usadas y modificadas por ese objeto, haciendo el código más seguro; gracias al polimorfismo objetos con tipos diferentes pueden interactuar con los datos de cada uno sin crear efectos secundarios en el estado del programa; gracias a la herencia objetos distintos pueden compartir propiedades y funcionalidad mientras implementan funcionalidad especifica de cada uno, aumentando la modularidad.