La programación orientada a objetos surgió como una forma nueva de pensar para dominar la complejidad del software. Representa problemas como escenarios compuestos por objetos con atributos y métodos, en lugar de descomponerlos en acciones. Esto permite modelar problemas basados en entidades del mundo real y cómo interactúan mediante el intercambio de mensajes.