La Programación Orientada a Objetos (POO) es un paradigma de programación que organiza el código en torno a objetos y clases. Java es un lenguaje diseñado específicamente para implementar este paradigma, proporcionando herramientas robustas para modelar y gestionar problemas del mundo real.


Conceptos Clave de la POO

1. Clases y Objetos

Ejemplo:

// Definición de una clase
public class Persona {
    // Atributos
    String nombre;
    int edad;

    // Métodos
    public void saludar() {
        System.out.println("Hola, mi nombre es " + nombre);
    }
}

// Crear un objeto
public class Main {
    public static void main(String[] args) {
        Persona persona = new Persona(); // Crear una instancia
        persona.nombre = "Juan";
        persona.edad = 25;
        persona.saludar(); // Salida: Hola, mi nombre es Juan
    }
}


2. Encapsulamiento

El encapsulamiento es el principio de restringir el acceso directo a los atributos y métodos de una clase. Esto se logra utilizando modificadores de acceso y proporcionando métodos públicos para acceder a los datos.

Ejemplo:

public class CuentaBancaria {
    private double saldo; // Atributo privado

    // Método para consultar el saldo
    public double getSaldo() {
        return saldo;
    }

    // Método para depositar dinero
    public void depositar(double cantidad) {
        if (cantidad > 0) {
            saldo += cantidad;
        }
    }
}

public class Main {
    public static void main(String[] args) {
        CuentaBancaria cuenta = new CuentaBancaria();
        cuenta.depositar(1000);
        System.out.println("Saldo: " + cuenta.getSaldo()); // Salida: Saldo: 1000.0
    }
}


3. Herencia

La herencia permite a una clase (clase hija) adquirir las propiedades y métodos de otra clase (clase padre). Esto fomenta la reutilización del código y la organización jerárquica.

Ejemplo:

// Clase padre
public class Animal {
    public void comer() {
        System.out.println("Este animal está comiendo");
    }
}

// Clase hija
public class Perro extends Animal {
    public void ladrar() {
        System.out.println("Guau, guau!");
    }
}

public class Main {
    public static void main(String[] args) {
        Perro perro = new Perro();
        perro.comer(); // Heredado de Animal
        perro.ladrar(); // Definido en Perro
    }
}


4. Polimorfismo