COMPARTE ESTE ARTÍCULO

La herencia y el polimorfismo son conceptos fundamentales en la programación orientada a objetos (POO) y son muy utilizados en Java. Estos conceptos permiten crear jerarquías de clases y trabajar con colecciones de objetos de manera flexible. A continuación, se presentan una serie de ejercicios que te ayudarán a mejorar tus habilidades en el uso de herencia, polimorfismo y la clase ArrayList en Java.

Ejercicio 1: Herencia Básica

Crea una clase Animal con un método hacerSonido(). Luego, crea dos clases que hereden de Animal: Perro y Gato, y sobrescribe el método hacerSonido() en cada una de ellas para imprimir sonidos específicos de cada animal.

import java.util.ArrayList;

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

class Perro extends Animal {
    @Override
    public void hacerSonido() {
        System.out.println("El perro ladra: ¡Guau guau!");
    }
}

class Gato extends Animal {
    @Override
    public void hacerSonido() {
        System.out.println("El gato maúlla: ¡Miau miau!");
    }
}

public class TestAnimales {
    public static void main(String[] args) {
        ArrayList<Animal> animales = new ArrayList<>();
        animales.add(new Perro());
        animales.add(new Gato());

        for (Animal animal : animales) {
            animal.hacerSonido();
        }
    }
}

Ejercicio 2: Herencia y Polimorfismo con ArrayList

Crea una clase Empleado con atributos nombre y salario, y un método calcularSalario(). Luego, crea dos clases que hereden de Empleado: EmpleadoFijo y EmpleadoPorHoras. EmpleadoFijo tendrá un salario fijo, y EmpleadoPorHoras tendrá un salario basado en las horas trabajadas y la tarifa por hora. Usa un ArrayList para almacenar varios empleados y calcula el salario total de todos los empleados.

import java.util.ArrayList;

abstract class Empleado {
    protected String nombre;
    protected double salario;

    public Empleado(String nombre) {
        this.nombre = nombre;
    }

    public abstract double calcularSalario();
}

class EmpleadoFijo extends Empleado {
    private double salarioMensual;

    public EmpleadoFijo(String nombre, double salarioMensual) {
        super(nombre);
        this.salarioMensual = salarioMensual;
    }

    @Override
    public double calcularSalario() {
        return salarioMensual;
    }
}

class EmpleadoPorHoras extends Empleado {
    private int horasTrabajadas;
    private double tarifaPorHora;

    public EmpleadoPorHoras(String nombre, int horasTrabajadas, double tarifaPorHora) {
        super(nombre);
        this.horasTrabajadas = horasTrabajadas;
        this.tarifaPorHora = tarifaPorHora;
    }

    @Override
    public double calcularSalario() {
        return horasTrabajadas * tarifaPorHora;
    }
}

public class TestEmpleados {
    public static void main(String[] args) {
        ArrayList<Empleado> empleados = new ArrayList<>();
        empleados.add(new EmpleadoFijo("Carlos", 3000));
        empleados.add(new EmpleadoPorHoras("Laura", 160, 15));

        double salarioTotal = 0;
        for (Empleado empleado : empleados) {
            salarioTotal += empleado.calcularSalario();
        }

        System.out.println("El salario total de todos los empleados es: " + salarioTotal);
    }
}

Ejercicio 3: Herencia con Métodos Adicionales

Crea una clase Vehiculo con atributos marca y modelo, y un método arrancar(). Luego, crea dos clases que hereden de Vehiculo: Coche y Motocicleta. Coche tendrá un método adicional abrirMaletero(), y Motocicleta tendrá un método adicional hacerCaballito(). Usa un ArrayList para almacenar varios vehículos y demuestra el uso de herencia y polimorfismo.

import java.util.ArrayList;

class Vehiculo {
    protected String marca;
    protected String modelo;

    public Vehiculo(String marca, String modelo) {
        this.marca = marca;
        this.modelo = modelo;
    }

    public void arrancar() {
        System.out.println("El vehículo " + marca + " " + modelo + " está arrancando.");
    }
}

class Coche extends Vehiculo {
    public Coche(String marca, String modelo) {
        super(marca, modelo);
    }

    public void abrirMaletero() {
        System.out.println("El coche " + marca + " " + modelo + " está abriendo el maletero.");
    }
}

class Motocicleta extends Vehiculo {
    public Motocicleta(String marca, String modelo) {
        super(marca, modelo);
    }

    public void hacerCaballito() {
        System.out.println("La motocicleta " + marca + " " + modelo + " está haciendo un caballito.");
    }
}

public class TestVehiculos {
    public static void main(String[] args) {
        ArrayList<Vehiculo> vehiculos = new ArrayList<>();
        vehiculos.add(new Coche("Toyota", "Corolla"));
        vehiculos.add(new Motocicleta("Yamaha", "R1"));

        for (Vehiculo vehiculo : vehiculos) {
            vehiculo.arrancar();
            if (vehiculo instanceof Coche) {
                ((Coche) vehiculo).abrirMaletero();
            } else if (vehiculo instanceof Motocicleta) {
                ((Motocicleta) vehiculo).hacerCaballito();
            }
        }
    }
}

Ejercicio 4: Biblioteca con Herencia y Polimorfismo

Crea una clase Publicacion con atributos titulo y autor, y un método mostrarInformacion(). Luego, crea dos clases que hereden de Publicacion: Libro y Revista. Libro tendrá un atributo adicional numeroPaginas, y Revista tendrá un atributo adicional numeroEdicion. Usa un ArrayList para almacenar varias publicaciones y demuestra el uso de herencia y polimorfismo.

import java.util.ArrayList;

class Publicacion {
    protected String titulo;
    protected String autor;

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

    public void mostrarInformacion() {
        System.out.println("Título: " + titulo + ", Autor: " + autor);
    }
}

class Libro extends Publicacion {
    private int numeroPaginas;

    public Libro(String titulo, String autor, int numeroPaginas) {
        super(titulo, autor);
        this.numeroPaginas = numeroPaginas;
    }

    @Override
    public void mostrarInformacion() {
        super.mostrarInformacion();
        System.out.println("Número de páginas: " + numeroPaginas);
    }
}

class Revista extends Publicacion {
    private int numeroEdicion;

    public Revista(String titulo, String autor, int numeroEdicion) {
        super(titulo, autor);
        this.numeroEdicion = numeroEdicion;
    }

    @Override
    public void mostrarInformacion() {
        super.mostrarInformacion();
        System.out.println("Número de edición: " + numeroEdicion);
    }
}

public class TestPublicaciones {
    public static void main(String[] args) {
        ArrayList<Publicacion> publicaciones = new ArrayList<>();
        publicaciones.add(new Libro("El Quijote", "Miguel de Cervantes", 400));
        publicaciones.add(new Revista("National Geographic", "Varios", 2023));

        for (Publicacion publicacion : publicaciones) {
            publicacion.mostrarInformacion();
        }
    }
}

Conclusión

Estos ejercicios te proporcionarán una base sólida para trabajar con herencia y polimorfismo en Java, utilizando la clase ArrayList para manejar colecciones de objetos. Practicar estos conceptos es esencial para desarrollar tus habilidades de programación orientada a objetos y te permitirá abordar problemas más complejos en el futuro. ¡Sigue practicando y explorando más sobre Java para convertirte en un programador más competente!


¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO