Ejercicios Básicos de Programación Orientada a Objetos (POO) en Java

La Programación Orientada a Objetos (POO) es una metodología esencial en el desarrollo de software que organiza el código en clases y objetos. Esta guía proporciona una serie de ejercicios básicos para introducirte en los principios fundamentales de la POO en Java, tales como encapsulamiento, herencia, polimorfismo y abstracción.

Conceptos Básicos de POO

1. Clases y Objetos

Una clase es una plantilla que define las propiedades y comportamientos comunes de los objetos. Un objeto es una instancia de una clase.

2. Encapsulamiento

El encapsulamiento es el principio que restringe el acceso directo a ciertos componentes de un objeto, lo que se logra utilizando modificadores de acceso como private, protected y public.

3. Herencia

La herencia permite que una clase (subclase) herede atributos y métodos de otra clase (superclase), promoviendo la reutilización del código.

4. Polimorfismo

El polimorfismo permite que una interfaz se implemente de múltiples formas, permitiendo que un mismo método se comporte de diferentes maneras según el objeto que lo invoque.

5. Abstracción

La abstracción consiste en ocultar los detalles de implementación y mostrar solo la funcionalidad esencial de los objetos.

Ejercicios Prácticos

Ejercicio 1: Clase Persona

  1. Crea una clase Persona con atributos nombre, edad y direccion.
  2. Agrega métodos para establecer y obtener estos atributos.
  3. Implementa un método para mostrar los detalles de la persona.

Solución:

public class Persona {
    private String nombre;
    private int edad;
    private String direccion;

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public void mostrarDetalles() {
        System.out.println("Nombre: " + nombre);
        System.out.println("Edad: " + edad);
        System.out.println("Dirección: " + direccion);
    }

    public static void main(String[] args) {
        Persona persona = new Persona();
        persona.setNombre("Juan");
        persona.setEdad(25);
        persona.setDireccion("Calle Falsa 123");
        persona.mostrarDetalles();
    }
}

Ejercicio 2: Herencia con la Clase Estudiante

  1. Crea una clase Estudiante que herede de Persona.
  2. Agrega un atributo matricula y métodos para establecer y obtener este atributo.
  3. Sobrescribe el método mostrarDetalles para incluir la matrícula.

Solución:

public class Estudiante extends Persona {
    private String matricula;

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    @Override
    public void mostrarDetalles() {
        super.mostrarDetalles();
        System.out.println("Matrícula: " + matricula);
    }

    public static void main(String[] args) {
        Estudiante estudiante = new Estudiante();
        estudiante.setNombre("Ana");
        estudiante.setEdad(22);
        estudiante.setDireccion("Avenida Siempre Viva 742");
        estudiante.setMatricula("20210001");
        estudiante.mostrarDetalles();
    }
}

Ejercicio 3: Polimorfismo con Animales

  1. Crea una clase base Animal con un método hacerSonido.
  2. Crea las clases Perro y Gato que extiendan de Animal e implementen el método hacerSonido.
  3. Demuestra el uso de polimorfismo en el método principal.

Solución:

class Animal {
    void hacerSonido() {
        System.out.println("El animal hace un sonido");
    }
}

class Perro extends Animal {
    @Override
    void hacerSonido() {
        System.out.println("El perro ladra");
    }
}

class Gato extends Animal {
    @Override
    void hacerSonido() {
        System.out.println("El gato maúlla");
    }
}

public class PolimorfismoEjemplo {
    public static void main(String[] args) {
        Animal miAnimal1 = new Perro();
        Animal miAnimal2 = new Gato();

        miAnimal1.hacerSonido(); // Salida: El perro ladra
        miAnimal2.hacerSonido(); // Salida: El gato maúlla
    }
}

Ejercicio 4: Abstracción con Formas Geométricas

  1. Crea una clase abstracta Forma con un método abstracto calcularArea.
  2. Crea las clases Circulo y Rectangulo que extiendan de Forma e implementen calcularArea.
  3. Implementa una clase principal para demostrar la funcionalidad.

Solución:

abstract class Forma {
    abstract double calcularArea();
}

class Circulo extends Forma {
    private double radio;

    public Circulo(double radio) {
        this.radio = radio;
    }

    @Override
    double calcularArea() {
        return Math.PI * radio * radio;
    }
}

class Rectangulo extends Forma {
    private double largo;
    private double ancho;

    public Rectangulo(double largo, double ancho) {
        this.largo = largo;
        this.ancho = ancho;
    }

    @Override
    double calcularArea() {
        return largo * ancho;
    }
}

public class AbstraccionEjemplo {
    public static void main(String[] args) {
        Forma circulo = new Circulo(5.0);
        Forma rectangulo = new Rectangulo(4.0, 6.0);

        System.out.println("Área del círculo: " + circulo.calcularArea());
        System.out.println("Área del rectángulo: " + rectangulo.calcularArea());
    }
}

Ejercicio 5: Manejo de Colecciones con ArrayList

  1. Crea una clase Libro con atributos titulo, autor y isbn.
  2. Utiliza un ArrayList para gestionar una colección de libros.
  3. Implementa métodos para agregar, eliminar y listar libros.

Solución:

import java.util.ArrayList;

class Libro {
    private String titulo;
    private String autor;
    private String isbn;

    public Libro(String titulo, String autor, String isbn) {
        this.titulo = titulo;
        this.autor = autor;
        this.isbn = isbn;
    }

    public String getTitulo() {
        return titulo;
    }

    public String getAutor() {
        return autor;
    }

    public String getIsbn() {
        return isbn;
    }

    @Override
    public String toString() {
        return "Libro [titulo=" + titulo + ", autor=" + autor + ", isbn=" + isbn + "]";
    }
}

public class GestionLibros {
    private ArrayList<Libro> libros;

    public GestionLibros() {
        libros = new ArrayList<>();
    }

    public void agregarLibro(Libro libro) {
        libros.add(libro);
    }

    public void eliminarLibro(String isbn) {
        libros.removeIf(libro -> libro.getIsbn().equals(isbn));
    }

    public void listarLibros() {
        for (Libro libro : libros) {
            System.out.println(libro);
        }
    }

    public static void main(String[] args) {
        GestionLibros gestion = new GestionLibros();
        Libro libro1 = new Libro("El Quijote", "Miguel de Cervantes", "12345");
        Libro libro2 = new Libro("Cien Años de Soledad", "Gabriel García Márquez", "67890");

        gestion.agregarLibro(libro1);
        gestion.agregarLibro(libro2);

        System.out.println("Lista de libros:");
        gestion.listarLibros();

        gestion.eliminarLibro("12345");
        System.out.println("Lista de libros después de eliminar:");
        gestion.listarLibros();
    }
}

Conclusión

Estos ejercicios básicos de POO en Java te proporcionarán una base sólida para comprender y aplicar los principios fundamentales de la Programación Orientada a Objetos. Practicar estos conceptos te permitirá escribir código más modular, reutilizable y mantenible, mejorando así tus habilidades de programación y preparándote para desafíos más avanzados.

person encoding in laptop
Photo by Lukas on Pexels.com

Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad