COMPARTE ESTE ARTÍCULO

Ejercicio de Nivel Medio

Introducción

En este examen final, se evaluarán tus conocimientos sobre clases y subclases, polimorfismo, arrays de objetos, ArrayList, pilas y colas. A continuación, se presentan las instrucciones y el ejercicio a realizar.

Instrucciones

  1. El examen consta de un solo ejercicio práctico.
  2. Deberás implementar varias clases siguiendo los principios de la programación orientada a objetos.
  3. Asegúrate de usar correctamente los conceptos de herencia y polimorfismo.
  4. Implementa y utiliza estructuras de datos como arrays de objetos, ArrayList, pilas y colas.
  5. El código debe ser claro, comentado y bien estructurado.

Ejercicio

Contexto

Vamos a simular una pequeña aplicación para la gestión de un zoológico. El zoológico tiene diferentes tipos de animales y cada animal tiene características específicas. Además, se deben gestionar las visitas de los clientes, usando estructuras de datos para almacenar las colas de espera y las listas de animales en exhibición.

Requisitos

  1. Clases y Subclases:
    • Crea una clase base llamada Animal con los siguientes atributos:
      • nombre (String)
      • edad (int)
    • Incluye un método llamado hacerSonido que devuelva un String con el sonido que hace el animal.
    • Crea al menos dos subclases de Animal: Leon y Elefante, cada una con su implementación del método hacerSonido.
  2. Polimorfismo:
    • Implementa una clase Zoologico que tenga un método agregarAnimal para añadir diferentes tipos de animales a una lista.
    • Crea un método mostrarSonidos que recorra la lista de animales y llame al método hacerSonido de cada uno, demostrando polimorfismo.
  3. Arrays de Objetos:
    • En la clase Zoologico, crea un array de objetos Animal que contenga una cantidad fija de animales (por ejemplo, 5).
  4. ArrayList:
    • Usa un ArrayList en la clase Zoologico para gestionar los animales que están en exhibición.
  5. Pilas y Colas:
    • Implementa una clase Visita con los atributos nombreCliente (String) y horaLlegada (String).
    • Usa una pila (Stack) para almacenar el historial de visitas.
    • Usa una cola (Queue) para gestionar la lista de espera de los visitantes.

Ejemplo de Código

import java.util.*;

class Animal {
    protected String nombre;
    protected int edad;

    public Animal(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public String hacerSonido() {
        return "Sonido genérico";
    }
}

class Leon extends Animal {
    public Leon(String nombre, int edad) {
        super(nombre, edad);
    }

    @Override
    public String hacerSonido() {
        return "Rugido";
    }
}

class Elefante extends Animal {
    public Elefante(String nombre, int edad) {
        super(nombre, edad);
    }

    @Override
    public String hacerSonido() {
        return "Barrito";
    }
}

class Zoologico {
    private Animal[] animales;
    private ArrayList<Animal> exhibicion;
    private Stack<Visita> historialVisitas;
    private Queue<Visita> listaEspera;

    public Zoologico() {
        animales = new Animal[5];
        exhibicion = new ArrayList<>();
        historialVisitas = new Stack<>();
        listaEspera = new LinkedList<>();
    }

    public void agregarAnimal(Animal animal) {
        for (int i = 0; i < animales.length; i++) {
            if (animales[i] == null) {
                animales[i] = animal;
                return;
            }
        }
        exhibicion.add(animal);
    }

    public void mostrarSonidos() {
        for (Animal animal : animales) {
            if (animal != null) {
                System.out.println(animal.hacerSonido());
            }
        }
        for (Animal animal : exhibicion) {
            System.out.println(animal.hacerSonido());
        }
    }

    public void agregarVisita(Visita visita) {
        listaEspera.add(visita);
    }

    public void registrarVisita() {
        if (!listaEspera.isEmpty()) {
            Visita visita = listaEspera.poll();
            historialVisitas.push(visita);
        }
    }
}

class Visita {
    private String nombreCliente;
    private String horaLlegada;

    public Visita(String nombreCliente, String horaLlegada) {
        this.nombreCliente = nombreCliente;
        this.horaLlegada = horaLlegada;
    }

    @Override
    public String toString() {
        return nombreCliente + " llegó a las " + horaLlegada;
    }
}

public class Main {
    public static void main(String[] args) {
        Zoologico zoo = new Zoologico();

        Animal leon = new Leon("Simba", 5);
        Animal elefante = new Elefante("Dumbo", 10);

        zoo.agregarAnimal(leon);
        zoo.agregarAnimal(elefante);

        zoo.mostrarSonidos();

        Visita visita1 = new Visita("Juan Pérez", "10:00 AM");
        Visita visita2 = new Visita("María López", "10:15 AM");

        zoo.agregarVisita(visita1);
        zoo.agregarVisita(visita2);

        zoo.registrarVisita();
        zoo.registrarVisita();
    }
}

Conclusión

Este ejercicio integra varios conceptos clave de la programación orientada a objetos y estructuras de datos. Al completarlo, habrás demostrado tu capacidad para aplicar estos conceptos en una situación práctica. ¡Buena suerte!


¿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.


¿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

Tags:

Comments are closed

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