1. ¿Qué es la Programación Orientada a Objetos (POO)?

La POO es un modelo o paradigma de programación que organiza el diseño de software alrededor de **objetos**, en lugar de "acciones" o "lógica". Un objeto es una entidad que combina datos (atributos) y comportamiento (métodos) en una sola unidad.

El objetivo es modelar problemas del mundo real (un coche, una persona, una factura) de una forma más intuitiva en el código.

Clase (Class): El Molde

Es la plantilla o plano para crear objetos. Define las propiedades y métodos comunes. Ejemplo: La clase Coche define que todos los coches tendrán una `marca` y podrán `arrancar()`.

Objeto (Object): La Instancia

Es el resultado de crear una "copia" de la clase. Es la entidad real con la que trabajamos. Ejemplo: miCocheMustang es un objeto de la clase Coche.

2. Los 4 Pilares de la POO

La POO se sostiene sobre cuatro conceptos fundamentales que permiten crear código robusto, flexible y reutilizable.

1. Encapsulamiento

Es la idea de ocultar el estado interno (los datos) de un objeto y exponer solo las operaciones necesarias (métodos) para interactuar con él. Protege los datos de modificaciones indebidas.

2. Abstracción

Es ocultar la complejidad interna y mostrar solo las características esenciales. Un conductor no necesita saber cómo funciona el motor (abstracción), solo necesita usar el pedal del acelerador.

3. Herencia

Permite que una clase (hija) herede atributos y métodos de otra clase (padre). Esto fomenta la reutilización de código. Ejemplo: Una clase CocheDeportivo hereda de Coche.

4. Polimorfismo

Significa "muchas formas". Permite que objetos de diferentes clases respondan al mismo mensaje (método) de formas diferentes. Ejemplo: Un método hacerSonido() será diferente para un Perro que para un Gato.

3. Ejemplo en Java

Lenguajes como Java, C++, Python y C# implementan estos principios. Java es uno de los ejemplos más claros y populares de POO.

Ejemplo de Clase y Objeto en Java

// 1. Se define la CLASE (el molde)
public class Coche {

    // Atributos (datos encapsulados)
    private String marca;
    private int modelo;

    // Constructor (método para crear el objeto)
    public Coche(String marca, int modelo) {
        this.marca = marca;
        this.modelo = modelo;
    }

    // Método (comportamiento)
    public void arrancar() {
        System.out.println("El " + this.marca + " ha arrancado.");
    }
}

// 2. Se crean OBJETOS (instancias)
Coche miMustang = new Coche("Ford", 1969);
Coche miVocho = new Coche("VW", 1990);

// 3. Se usan los objetos
miMustang.arrancar(); // Salida: El Ford ha arrancado.
miVocho.arrancar();   // Salida: El VW ha arrancado.

4. Recursos Adicionales

La POO es un tema denso. Estos recursos te ayudarán a profundizar y practicar:

Enlaces Recomendados