La programación orientada a objetos (POO) se caracteriza por la abstracción, encapsulación y herencia. La abstracción captura las características esenciales de un objeto, la encapsulación mantiene ocultos los procesos internos y solo da acceso a lo necesario, y la herencia permite que una clase herede propiedades y métodos de otra clase. La POO tiene ventajas como permitir la reutilización y flexibilidad del software, facilitar el mantenimiento y trabajo en equipo, y crear sistemas más completos.