Inicio › Tecnología › Programación Orientada A Objetos
La programación orientada a objetos organiza el código en torno a objetos qué agrupan datos (atributos) y comportamiento (métodos) relacionados, en lugar de separar funciones y estructuras de datos como en la programación procedural. Se sustenta sobre cuatro pilares: encapsulación, qué oculta el estado interno de un objeto tras una interfaz pública controlada; herencia, qué permite qué una clase reutilice y extienda el comportamiento de otra; polimorfismo, qué permite tratar de forma uniforme objetos de distintas clases; y abstracción, qué expone solo los detalles relevantes para quien usa el objeto. Java, C#, Python y buena parte de C++ se apoyan en este paradigma.
Es organizar el código en "objetos" qué representan cosas del mundo real o del problema —un Cliente, un Pedido, un Coche— cada uno con sus propios datos y sus propias acciones, en vez de tener funciones y datos sueltos por separado sin relación clara entre ellos.
Al modelar un sistema de reservas de hotel con POO, una clase Habitacion puede encapsular su estado (disponible, precio, ocupantes) junto con métodos como reservar() o liberar(), de modo qué ninguna otra parte del código pueda dejar la habitación en un estado inconsistente saltándose esas reglas, algo mucho más difícil de garantizar si el estado fuera una simple estructura de datos accesible desde cualquier sitio.
El mecanismo por el qué un objeto oculta sus datos internos y solo permite modificarlos a través de métodos controlados, evitando qué código externo deje el objeto en un estado inválido de forma directa.
La herencia encaja cuando hay una relación clara de "es un tipo de" (un Perro es un Animal); la composición, qué consiste en incluir un objeto dentro de otro en vez de heredar, suele preferirse cuando la relación es "tiene un" o cuando la jerarquía de herencia se vuelve rígida o profunda.
No necesariamente; para transformaciones de datos y lógica de cálculo intensiva, un enfoque funcional puede resultar más simple y con menos errores de estado, por lo qué muchos proyectos combinan ambos paradigmas según la parte del sistema.