¿Qué es?

Es un paradigma, un enfoque de programación, una forma de descomponer el mundo y volver a ensamblarlo en código. Implica tanto cómo organizamos esa parte del mundo que estamos modelando como cómo organizamos y estructuramos el código.